Pascal-Błąd i pętla REPEAT

Cześć mam problem czy ktoś mógłby mi poprawić program który napisałem bo coś zrobiłem źle ale nie wiem co i proszę aby dodać pętle repeat aby po wykonanej procedurze wracało się do menu oto kod:

Program kalkulator; 

Uses crt,dos,graph;

Var 

a,b,c,wybor,decyzja:real; 

var h, m, s, ss : Word;

temp, s : string;

dzial:char; 

tab : ARRAY [1..10, 1..10] OF real;

  i, j : byte;

blad:boolean; 

procedure kalkulatorOS;

Begin 

Write(' Wybierz dzialanie (+,-,*,/) '); 

Readln(dzial);

Blad:=false; 

Write('podaj pierwszą liczbę '); 

Readln(a); 

Write('podaj druga liczbe '); 

Readln(b); 

Case dzial of 

'+': c:=a+b; 

'-': c:=a-b; 

'*':c:=a*b; 

'/':if b<>0 then 

c:=a/b 

else blad:=true; 

else blad:=true; 

end; 

if not blad then 

writeln('wynik dzialania: ',c) 

else 

writeln('blad dzialania lub dzielenia przez zero'); 

readKey; 

End;

procedure Bok_Prostokatu;

begin

	Writeln('Witaj w kalkulatorze aby kontyulowac wcisnij ENTER');

  Write('Podaj pierwszy bok ');

  Readln(a);

  Write('Podaj drugi bok ');

  Readln(b);

  Writeln('Pole prostokata wynosi ', a*b);

  Readln;

end;


procedure Tabliczka_Mnozenia;


BEGIN

 FOR i:=1 TO 10 DO

  Begin

   FOR j:=1 TO 10 DO

    Begin

     tab[i,j]:=i*j;

     Write (i,'*',j,'=',tab[i,j]:2:0,' ');

    End;

    WriteLn;

  End;

 ReadLn

END;


procedure data;

begin

 GetDate(y, m, d, dw);

 Str(y, temp);

 s := 'Dzisiaj jest: ' + temp;

 Str(m, temp);

 s := s + '-' + temp;

 Str(d, temp);

 s := s + '-' + temp;


 WriteLn(s);

end;


procedure HELP;

window;

clrscr;

writeln('Witaj w Pomocy');

writeln('Program zostal napisany w 2010 roku w szostej klasie.');

writeln('program ma licencje platna wiec nie mozna go sprzedawac ani kopiowac bez pozwolenia AUTORA.);

writeln('Program nie obsługuje polskich znakow bo nie pozwalal na to program.');

writeln('Wszelka pomoc mozna uzyskac pod adresem e-mail milosz.ziem@gmail.com.');

writeln('Bardzo dziekujemy za uzywanie programu');

writeln('Proszę wcisnac ENTER aby powrocic do MENU.');

readln;

repeat

begin

clrscr

GetTime(h,m,s,ss);

Until(end.);



begin

	clrscr;

 GetTime(h, m, s, ss);

 WriteLn('Jest godzina: ', h, ':', m);

writeln('Co chcesz zrobić?');

writeln('1-Kalkulator');

writeln('2-Obliczanie boku prostokata');

writeln('3-Tabliczka Mnozenia');

writeln('4-Data i Czas');

writeln('5-HELp');

writeln('Numer zadania i ENTER');

readln(decyzja);

if decyzja=1 then kalkulatorOS;

if decyzja=2 then bok_prostokatu;

if decyzja=3 then Tabliczka_Mnozenia;

if decyzja=4 then data;

if decyzja=5 then HELP;

end.

Gdyby cokolwiek rozumiał z tego co niby napisałeś to nie byłoby problemu poprawić to samodzielnie.

Przecież kompilator wskazuje gdzie jest błąd i na czym ten błąd polega.

Ja zawsze programy w pascalu pisałem tak:

funkcja pobierająca od użytkownika liczbę do obsługi menu, bardzo fajna sprawa. Potem połowa programu opiera się na: getnumber(Twój wybór, najniższa wartość, najwyższa wartość)

function getnumber(name:string;l,h:integer):integer;

 begin

  repeat

   readln(result);

   if (resulth) then

    writeln(name,' must be within ',l,' and ',h,'.');

  until (result>=l) and (result<=h);

 end;

Drukowanie menu… ale to chyba widać ;p

procedure menu;

 begin

  writeln('Select action.');

  writeln('1:New matrix.');

  writeln('2:Print matrix.');

  writeln('3:Add/subtract.');

  writeln('4:Multiply.');

  writeln('5:Save/load.');

  writeln('0:Quit.');

 end;

I teraz pętla menu. Zmienna coll służyła mi do przechowywania macierzy. A do wyjścia zawsze używałem 0, jest najwygodniej przy późniejszym rozbudowywaniu menu.

begin

 repeat

  menu;

  c:=getnumber('Choice',0,5);

  case c of

   1:o1_newmat(coll,x);

   2:o2_printmat(coll,x);

   3:o3_addsub(coll,x);

   4:o4_mulmat(coll,x);

   5:o5_saveload(coll,x);

  end;

 until c=0;

“Wszelka pomoc mozna uzyskac pod adresem e-mail milosz.ziem@gmail.com.” raczej na forum.dp.pl xD

Ja popieram Grzecha1990 i raczej nic nie mam do dodania.

Twój program zawiera wiele błędów nie tyle w kodzie co w napisach przy nich raczej wątpię żebyś wiedział co kopiujesz. Formatowanie kodu też słabe widać że skopiowałeś jakieś tam części po samym formatowaniu xD