Mam zrobiony program w Free Pascal który przelicza liczbę lat na liczbe miesięcy. Chodzi w nim o to aby można było wpisywać lata tylko do 150 i miesiące do 12. Zrobiłem to tylko nie moge wprowadzić liczby 0. Co trzeba poprawić?
program zadanie1;
uses crt;
var
l:integer; {lata}
m:integer; {miesiące}
lm:integer; {liczba miesięcy}
napis1:string;
napis2:string;
BEGIN
clrscr;
REPEAT
writeln ('podaj liczbe lat');
readln (napis1);
clrscr;
val (napis1,l);
UNTIL (l<=150) and (l<>0);
m:=l*12;
REPEAT
writeln ('podaj liczbe miesiecy');
readln (napis2);
clrscr;
val (napis2,lm);
UNTIL (lm<>0) and (lm<=12);
m:=m+lm;
writeln ('ilosc miesiecy to ',m);
repeat until keypressed;
END.
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
"UNTIL (l<=150) and (l<>0);".
Błąd jest tutaj.
Nie przepuści cię, dopóki "l" nie będzie różne od zera.
Sugerowałbym:
"Until (L <= 150)".
Oraz nieco logiczniejsze nazywanie zmiennych.
---
Jakbyś użył debuggera to zauważyłbyś od razu...
Błąd jest w 16. linijce kodu. W tym przypadku, muszą być spełnione 2 warunki: zmienna "l" ma być mniejsza lub równa 150, a jednocześnie nie może równać się zero. Z treści polecenia wynika, że 0 jest dopuszczalne, a więc, aby było dopuszczalne, należy usunąć drugi warunek logiczny. Ta linijka powinna wyglądać na przykład następująco:
until(l<=150)
.