Witam, od niedawna zająłem się programowaniem. Z łatwymi rzeczami idzie mi bez problemu, ale ostatnio naszła mnie ochota na zebranie w jeden, większości programów które do tej pory napisałem. Zależało mi również na tym, żeby program wyświetlał menu i po wciśnięciu np. jedynki (bez późniejszego wciskania Entera) przechodził do danej procedury/funkcji.
Mam problem z procedurą case … of (widziałem w programie podobnym do mojego, że została ona zastosowana) i nie mogę dojść co go powoduje. Z góry dzięki za pomoc
program Zlozony;
uses crt;
var a,b,c,delta,x1,x2,x0,xl:real;
imie,odp:string;
klawisz: char;
{-----------------------------------------------------------}
PROCEDURE wyswietlMenu;
begin;
clrscr;
writeln('==================================================');
writeln('* Wybierz opcje z listy ponizej: *');
writeln('* 1. Rownanie kwadratowe/liniowe *');
writeln('* 2. Kalkulator *');
writeln('* 3. Liczba doskonala *');
writeln('* 4. Choinka *');
writeln('* 5. Gra w "Pomysl liczbe" *');
writeln('* Aby wyjsc z programu - nacisnij klawisz Esc *');
writeln('==================================================');
end;
{-----------------------------------------------------------}
PROCEDURE WczytanieOpcji (var klawisz: char);
begin
writeln('Wybierz opcje z listy powyzej');
klawisz:=ReadKey;
end;
{-----------------------------------------------------------}
function rownanie (var a,b,c,delta,x1,x2,x0:real; n: word):boolean;
begin;
begin
clrscr;
writeln('==========PROGRAM ROWNANIE==========');
writeln;
writeln('Podaj wartosc wspolczynnika "a"');
readln(a);
end;
begin;
if a=0 then
begin
writeln('==========Rownanie liniowe==========');
writeln;
writeln('Podaj wartosc wspolczynika "b"');
readln(b);
writeln;
writeln('Podaj wartosc wspolczynnika "c"');
readln(c);
writeln;
writeln('Rozwiazaniem rownania * jest liczba: x = -',c:2:2,' / ',b:2:2,' = ',-c/b:2:2);
end;
if a<>0 then begin
writeln('Podaj wartosc wspolczynnika "b"');
readln(b);
writeln('Podaj wartosc wspolczynnika "c"');
readln(c);
delta:=sqr(b)-4*a*c;
writeln('Delta wynosi: ',delta:2:2);
end;
if delta>0 then
begin
x1:=(-b-sqrt(delta))/2*a;
x2:=(-b+sqrt(delta))/2*a;
write('Pierwiastki rownania to: ');
write('x1= ');
writeln(x1:2:2);
writeln(' oraz');
write(' x2= ');
writeln(x2:2:2);
end;
if delta=0 then
begin
x0:=(-c)/(b);
writeln('Pierwiastkiem rownania jest x0= ',x0:2:2);
end;
if delta<0 then
begin
writeln('Rownanie nie ma rozwiazania');
end
else
begin
writeln(' ');
end;
END;
{-----------------------------------------------------------------------------------------}
PROCEDURE WyborOpcji (var klawisz:char);
var n:byte;
const Esc = #27;
begin
case klawisz of
'1': rownanie (n); {Tutaj mam problem, bo: 1. Program wywala Error 26: Type mismach, 2. Nie wiem jak wykorzystać tutaj funkcję case...of}
'2': kalkulator (n);
'3': doskonala (n);
'4': choinka (n);
'5': gra (n);
'Esc': klawisz (n);
end;
end;
BEGIN
clrscr;
WyswietlMenu;
READLN;
END.
P.S. Program oczywiście nie jest skończony, ale jak poznam zasadę działania do jednej funkcji, dalej chyba dam radę.
Pomoże ktoś ??