Pascal - powrót do begin

Witam!

Zacząłem trochę sie bawić pascalem i napisałem swoje dwa pierwsze programy i mam pytanie, gdyż użyłem na końcu jedynie pętlę repeat until keypressed i po naciśnięciu przycisku mój program (kalkulator) po obliczeniu działania, się wyłącza. Czy jest możliwe, żeby mógł po wykonaniu zadania wrócić spowrotem do pierwszego begin? Zapewne chodzi tu o zastosowanie jakiejś pętli, ale właśnie nie wiem jakiej. Bardzo proszę o odpowiedź.

Podaje kod programu:

program Untitled;

uses crt;


var liczba1:longint;

liczba2:longint;

htr:longint;

operacja:longint;

begin write('Witaj w programie do obliczania pola powierzchni wielu roznych figur geometryczynych. Wybierz figure: 1- kwadrat 2- prostokat 3- trojkat 4- rownoleglobok 5- trapez 6- kolo ');

read(operacja);

if operacja=1 then begin

writeln('Wybrales kwadrat. Podaj dlugosc boku a: ');

read(liczba1);

if liczba1<0 then writeln('Nie ma ujemnych dlugosci boku kwadratu!')

else writeln('Pole tego kwadratu wynosi ',liczba1*liczba1);

end;

if operacja=2 then begin

writeln('Wybrales prostokat. Podaj dlugosc pierwszego boku: ');

read(liczba1);

writeln('Podaj dlugosc drugiego boku: ');

read(liczba2);

if (liczba1<0) OR (liczba2<0) then writeln('Nie ma prostokata o ujemnej dlugosci ktoregos z bokow!')

else writeln('Pole tego prostokata ',liczba1*liczba2);

end;

if operacja=3 then begin

writeln('Wybrales trojkat. Podaj dlugosc podstawy lub pierwszej przyprostokatnej: ');

read(liczba1);

writeln('Podaj wysokosc lub dlugosc drugiej przyprostokatnej: ');

read(liczba2);

if (liczba1<0) OR (liczba2<0) then writeln('Nie ma trojkata o ujemnej dlugosci boku lub wysokosci!')

else writeln('Pole tego trojkata wynosi ',0.5*liczba1*liczba2:4:4);

end;

if operacja=4 then begin

writeln('Wybrales rownoleglobok. Podaj dlugosc podstawy: ');

read(liczba1);

writeln('Podaj wysokosc: ');

read(liczba2);

if (liczba1<0) OR (liczba2<0) then writeln('Nie ma rownolegloboku o ujemnej dlugosci podstawy i/lub wysokosci!')

else writeln('Pole tego rownolegloboku wynosi ',liczba1*liczba2);

end;

if operacja=5 then begin

writeln('Wybrales trapez. Podaj dlugosc pierwszej podstawy: ');

read(liczba1);

writeln('Podaj dlugosc drugiej podstawy: ');

read(liczba2);

writeln('Podaj wysokosc trapezu: ');

read(htr);

if (liczba1<0) OR (liczba2<0) OR (htr<0) then writeln('Nie ma trapezu o ujemnej dlugosci ktorejkolwiek podstawy i/lub wysokosci!')

else writeln('Pole tego trapezu wynosi ',((liczba1+liczba2)*htr)/2:4:4);

end;

if operacja=6 then begin

writeln('Wybrales kolo. Podaj dlugosc promienia: ');

read(liczba1);

if liczba1<0 then writeln('Nie istnieje kolo o ujemnej dlugosci promienia!')

else writeln('Pole tego kola wynosi ',liczba1*3.14:4:4);

end;

repeat until keypressed;

end.

O matko! Używaj [code] a nie [quote]

Poza tym - nie chce mi się czytać całości, ale przenieś repeat na początek i masz mniej więcej to co chciałeś. Zmień z

-- kod

begin

-- kod

repeat until keypressed

end.

na

-- kod

begin

repeat

-- kod

until keypressed

end.

Być może za repeat i przed until będziesz potrzebował odpowiednio begin i end - nie pisałem nic w pascalu od prawie 10 lat i moja pamięć nieco zardzewiała. :roll:

Kompilowane w Dev-Pascal 1.9.2 :spoko:

program Untitled;

uses crt;


var liczba1:longint;

liczba2:longint;

htr:longint;

operacja:longint;

begin


 repeat // zmiany- dodano

 ClrScr; // zmiany- dodano


write('Witaj w programie do obliczania pola powierzchni wielu roznych figur geometryczynych. Wybierz figure: 1- kwadrat 2- prostokat 3- trojkat 4- rownoleglobok 5- trapez 6- kolo ');

read(operacja);

if operacja=1 then begin

writeln('Wybrales kwadrat. Podaj dlugosc boku a: ');

read(liczba1);

if liczba10 then writeln('Nie ma ujemnych dlugosci boku kwadratu!')

else writeln('Pole tego kwadratu wynosi ',liczba1*liczba1);

end;

if operacja=2 then begin

writeln('Wybrales prostokat. Podaj dlugosc pierwszego boku: ');

read(liczba1);

writeln('Podaj dlugosc drugiego boku: ');

read(liczba2);

if (liczba10) OR (liczba20) then writeln('Nie ma prostokata o ujemnej dlugosci ktoregos z bokow!')

else writeln('Pole tego prostokata ',liczba1*liczba2);

end;

if operacja=3 then begin

writeln('Wybrales trojkat. Podaj dlugosc podstawy lub pierwszej przyprostokatnej: ');

read(liczba1);

writeln('Podaj wysokosc lub dlugosc drugiej przyprostokatnej: ');

read(liczba2);

if (liczba10) OR (liczba20) then writeln('Nie ma trojkata o ujemnej dlugosci boku lub wysokosci!')

else writeln('Pole tego trojkata wynosi ',0.5*liczba1*liczba2:4:4);

end;

if operacja=4 then begin

writeln('Wybrales rownoleglobok. Podaj dlugosc podstawy: ');

read(liczba1);

writeln('Podaj wysokosc: ');

read(liczba2);

if (liczba10) OR (liczba20) then writeln('Nie ma rownolegloboku o ujemnej dlugosci podstawy i/lub wysokosci!')

else writeln('Pole tego rownolegloboku wynosi ',liczba1*liczba2);

end;

if operacja=5 then begin

writeln('Wybrales trapez. Podaj dlugosc pierwszej podstawy: ');

read(liczba1);

writeln('Podaj dlugosc drugiej podstawy: ');

read(liczba2);

writeln('Podaj wysokosc trapezu: ');

read(htr);

if (liczba10) OR (liczba20) OR (htr0) then writeln('Nie ma trapezu o ujemnej dlugosci ktorejkolwiek podstawy i/lub wysokosci!')

else writeln('Pole tego trapezu wynosi ',((liczba1+liczba2)*htr)/2:4:4);

end;

if operacja=6 then begin

writeln('Wybrales kolo. Podaj dlugosc promienia: ');

read(liczba1);

if liczba10 then writeln('Nie istnieje kolo o ujemnej dlugosci promienia!')

else writeln('Pole tego kola wynosi ',liczba1*3.14:4:4);

end;


// zmiany - dodano 

Writeln;

Writeln('Dowolny klawisz- Poczatek programu, Esc- Koniec programu');

// repeat until KeyPressed ; // można usunąć - jest zbędne

until Readkey=#27; // kod klawisza Esc


end.

Wielkie dzięki gina o coś takiego mi chodziło :wink: