pascal pomoc poradte niekto pls

Programovacie jazyky, rady, poradňa...
martin_9941
Novice
Novice
Príspevky: 3
Registrovaný: 03 apr 2011, 10:02

pascal pomoc poradte niekto pls

Príspevok od používateľa martin_9941 »

Kód: Vybrať všetko

tuto potrebujem kontrolu vstupu

program PostupnostCisel;
uses crt;
var
  Pole : Array [0..10000] of integer;
  number : integer;
  index : integer;
  max_number : integer;
  min_number : integer;
 
begin
clrscr;
index := 0;

writeln('Urci najmensie, najvacsie cislo zo zadanej postupnosti (0-koniec).');
writeln('------------------------------------------------------------------');

Repeat
  write('Zadaj cislo: ');
  readln(number);
  Pole[index] := number;
  index := index + 1;
Until number = 0;

index := 0;
max_number := Pole[index];

Repeat
  IF Pole[index] > max_number THEN
      begin
        max_number := Pole[index];
      end;
  index := index + 1;
Until Pole[index] = 0;

writeln('Najvacsie cislo je : ',max_number);
index := 0;
min_number := Pole[index];

Repeat
  IF Pole[index] < min_number THEN
      begin
        min_number := Pole[index];
      end;
  index := index + 1;
Until Pole[index] = 0;

writeln('Najmensie cislo je : ',min_number);
readln;
end.

vopred dakujem
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: pascal pomoc poradte niekto pls

Príspevok od používateľa harrison314 »

Cele zle.

To co nieje zdrojak nedavaj do Code.

Neviem co myslis kontrolou vstupu, ale pravdepodobne to aby si nezapisoaval mimo pole.
Ja osobne by som s tade pole vyhodil a maximim a minimum kontroloval pri nacitani.
Podminka ci je vstup 0 musi byt hned hned zatym ako ho nacitas a potom cyklus breaknes.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: pascal pomoc poradte niekto pls

Príspevok od používateľa BX »

Je to síce veľmi čudný kód, ale predpokladám, že ide o pokračovanie programu pri načítaní nečísla (Rozsah pola ho asi veľmi netrápi, keď tam bachol 10000 :D )

To by som v tomto prípade spravil asi takto:
Toto

Kód: Vybrať všetko

Repeat
  write('Zadaj cislo: ');
  readln(number);
  Pole[index] := number;
  index := index + 1;
Until number = 0;
nahradím týmto

Kód: Vybrať všetko

Repeat

 write('Zadaj cislo: ');
 {$I-}readln(number);{$I+}
 if IOResult <> 0 then begin writeln('Chyba'); number := -1; end
 else
  begin
   Pole[index] := number;
   index := index + 1;
  end;

Until number = 0;
(V tak hlúpom kóde to samozrejme vyzerá hlúpo, ale nechcel som meniť celú logiku načítavania.)
Gregi
Light Star
Light Star
Príspevky: 224
Registrovaný: 24 mar 2005, 11:34

Re: pascal pomoc poradte niekto pls

Príspevok od používateľa Gregi »

Kazdy pridame cosi a vznikne cosi takehoto ;-)

Kód: Vybrať všetko

program PostupnostCisel;
uses Crt;
const
  max_pole = 100;
var
  pole: array [0..max_pole] of Integer;
  cislo,index,max,min: Integer;

BEGIN
  ClrScr;
  WriteLn('Urci najmensie, najvacsie cislo zo zadanej postupnosti (0-koniec).');
  WriteLn('------------------------------------------------------------------');
  repeat
    Write('Zadaj cislo: ');
    {$I-}
    ReadLn(cislo);
    {$I+}
    if IOResult <> 0 then begin
      WriteLn('Chyba');
      Break;
    end
    else begin
      pole[index] := cislo;
      inc(index);
    end;
  until ((pole[index-1] = 0) or (index > max_pole));
  index := 0;
  max := pole[index];
  min := pole[index];
  repeat
    if pole[index] > max then
      max := pole[index]
    else
      if pole[index] < min then
        min := pole[index];
    inc(index);
  until pole[index] = 0;
  WriteLn('Najvacsie cislo je : ',max);
  WriteLn('Najmensie cislo je : ',min);
  ReadLn;

END.
Napísať odpoveď