mám problém, keď sa snažím ukončiť nejaký program v pascale napríklad zadaním záporného vstupu. Som začiatočník a neviem prísť na to kde robím chybu. Viem, že ten program ešte nie je "odolný" proti zlým vstupom, ale chcel som najskôr spraviť kostru. Tento program mal vypočítať percentuálne vytaženie autobusov, ale ráta do blba a nechce skončiť ani po zadaní -1. Dal som tu oba spôsoby, ktorými som sa to snažil vyriešiť. Vedeli by ste mi nejak poradiť?
Riešenie 1:
Kód: Vybrať všetko
program cestujuci;
const koniec = -1;
var pocetcest,nastupilo, pocetbus : integer;
begin
writeln ('zadajte pocet cestujucich');
write ('-1 ukonci vstup');
pocetcest := 0;
pocetbus :=0;
readln (nastupilo);
while nastupilo <> koniec do
begin
pocetcest := pocetcest + nastupilo;
pocetbus := pocetbus + 1;
read (nastupilo);
end;
if nastupilo = koniec then
if pocetbus <> 0 then
writeln ('priemerne vytazenie :', pocetcest / pocetbus * 45 * 100, '%');
end.Riešenie 2:
Kód: Vybrať všetko
program cestujuci2;
const maxludi = 45;
koniec = -1;
type kapacita = koniec..maxludi;
var cestujuci : kapacita;
cestcelkom, buscelkom : integer;
begin
write ('vytazenie autobusu');
write ('zadavajte pocty cestujucich, -1 ukonci');
cestcelkom := 0;
buscelkom := 0;
read (cestujuci);
while cestujuci <> koniec do
begin
cestcelkom := cestcelkom + cestujuci;
buscelkom := buscelkom + 1;
read (cestujuci);
end;
if buscelkom > 0 then
write ('priemerne vytazenie',
round (cestcelkom/buscelkom/maxludi*100),'%')
else
write ('nie je co pocitat');
end.