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
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.
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 )
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.)
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.