Forageriss [ Pretorianin ]
Pascal - zgryz
Mam pytanie, że się tak wyrażę - niecierpiące zwłoki ;p Otóż mam napisać program w pascalu, który będzie rozwiązywał równania kwadratowe - tzn. po wpisaniu wartości a, b, c podstawia do wzoru na deltę i oblicza x1 i x2. Do tej pory sobie poradziłem - cudo działa ;p Jest jednak mały problem. Nie wiem jak zrobić żeby po wpisaniu a=0 wyświetlił komunikat "to nie jest funkcja kwadratowa" i wyłączył się/rozpoczął od nowa. Proszę o podanie mi fragmentu kodu, który powinienem wpisać po readln(a) if a=0 then writeln('To nie jest funkcja kwadratowa'). Nie mogę nic znaleźć w internecie, a na eksperymenty po prostu nie mam czasu.
Narmo [ nikt ]
readln(a) if a=0 then writeln('To nie jest funkcja kwadratowa') else
begin
kod który ma się wykonać jeżeli a nie jest zerem
end,
Forageriss [ Pretorianin ]
nie o to chodzi. Chodzi mi o to żeby jeśli a=0 żeby program się zakończył lub zaczął od nowa (sam nie wiem co lepsze)
Dexter666 [ salem alejkum ]
Chodzi mi o to żeby jeśli a=0 żeby program się zakończył lub zaczął od nowa (sam nie wiem co lepsze)
to jak nawet tego nie potrafisz zrobić to jak Ty chcesz zrobić cały algorytm rozwiązywania równania kwadratowego?
/mały edit na poprawe wyrazu:P
Forageriss [ Pretorianin ]
dexter pozostalosc juz napisalem -.- nie wiem jak to rozwiazac poza tym pozostalosc jest banalnie prosta opiera się na if/else readln writeln i wykonywaniu działań. Natomiast tutaj nie znam funkcji restartującą program, kończącą go. U mnie po wyświetleniu komunikatu program pracuje dalej .
Narmo [ nikt ]
Jeżeli tam gdzie podałem kod który ma się wykonać jeżeli a nie jest zerem wstawisz sprawdzanie innych wartości to w chwili podstawienia zera jako a nie wykona się to i program sie zakończy. Możesz też zamknąć cały program w pętlę repeat ... until
na przykład:
var w:byte;
w:=0;
repeat
program
until w=1;
W tej sposób program będzie się wykonywał od początku do końca dopóki gdzieś tam nie podstawisz pod w jedynki.
var s:byte;
w:=0;
repeat
readln(a) if a=0 then writeln('To nie jest funkcja kwadratowa') else
begin
kod który ma się wykonać jeżeli a nie jest zerem
tutaj sprawdzaj dalej resztę liczb, czy spełniają warunki.
w:=1; //jeżeli wszystkie warunki są spełnione. Ustaw to na samym końcu programu kiedy będziesz znał już wynik.
end,
until w=1;
Dayhemous [ Caesar ]
Ostatni program w Pascalu napisalem z 10 lat temu i wiele juz nie pamietam, wiec nie napisze ci dokladnie, ale to moze cie nakieruje we własciwa strone:
begin
kod poczatkowy, jesli trzeba wpisz wszystkie elementy twojego programu ktore maja sie wykonac PRZED glownym warunkiem
if a>0 or a<0 then warunek glowny
kod dalszy wpisz wszystko co sie ma wykonac jesli warunek jest prawdziwy
else
writeln('To nie jest funkcja kwadratowa, naciśnij dowolny klawisz by zakonczyc program');
readln; nie jestem pewien czy ta linia jest konieczna, jak by co to wywal
repeat untill keypressed; to spowoduje wyświetlanie ostatniego tekstu, i oczekiwanie na nacisniecie czegokolwiek
end.
eLJot [ a.k.a. księgowa ]
Są jeszcze etykiety - coś czego powinieneś unikać podczas programowania, ale w Twoim przykładzie ujdzie :)
Forageriss [ Pretorianin ]
Narmo, Dayhemous dzięki wielkie o to mi chodziło. Sprawdzę obie wersje i wkleję do programu. Jesteście wielcy :D :D