LuZiK 0 Napisano 30 Październik 2009 Witam. Pisze program na zaliczenie mam proglem. Chce zeby w moim programie mozna bylo przejsc z jednego menu do drugiego. Np. wybrac rownanie kwadratowe i pozniej wybrac jeden z punktow np. punkt b (jeszcze nie napisalem tego w programie). Gdy chcialem to napisac pisalem IF wybor='b' THEN BEGIN WRITELN('a-Rownanie kwadratowe z liczba dodatnia'); WRITELN('b-Rownanie kwadratowe z liczb ujemna); dalej pisalem wzor i zakonczylem wszystko END; Na koniec oczywiscie READLN; i END. po kompilacji wystepowal mi blad z enedem na koncu ze jest postawiony zly znak. wedlugo programu powinno byc napisane END; ale to tez nie dziala. prosze o pomoc jak zrobic taka rzecz ktora ja bym chcial umiescic w moim programie . Moj program PROGRAM OBLICZENIA; USES CRT; VAR a,b,c,d,P,Ob,r,h,l:real; x,y,k,wynik,odp:integer; wybor:char; BEGIN WRITELN('Witam w programie OBLICZENIA'); WRITELN('Program pomoze ci w niektorych obliczeniach'); WRITELN('a- GEOMETRIA'); WRITELN('b- ROWNANIA KWADRATOWE'); WRITELN('c- TEST'); READLN(wybor); IF wybor='a' THEN BEGIN WRITELN('1-pole kwadratu'); WRITELN('2-pole prostokata'); WRITELN('3-pole trojkata'); WRITELN('4-pole trapezu'); WRITELN('5-pole kola'); WRITELN('6-pole szescianu'); WRITELN('7-pole prostopadloscianu'); WRITELN('8-pole walca'); WRITELN('9-pole stozka'); READLN(wybor); END; IF wybor='1' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); P:=a*a; WRITELN('Pole kwadratu wynosi ',P:0:2); END; IF wybor='2' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); WRITELN('Wpisz dlugosc krawedzi b'); READLN(; P:=a*b; WRITELN('Pole prostokata wynosi ',P:0:2); END; IF wybor='3' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); WRITELN('Wpisz dlugosc wysokosci h'); READLN(h); P:=0.5*a*h; WRITELN('Pole trojkata wynosi ',P:0:2); END; IF wybor='4' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); WRITELN('Wpisz dlugosc krawedzi b'); READLN(; WRITELN('Wpisz dlugosc wysokosci h'); READLN(h); P:=0.5*a+0.5*b; P:=P*h; WRITELN('Pole trapezu wynosi ',P:0:2); END; IF wybor='5' THEN BEGIN WRITELN('Wpisz dlugosc promienia r'); READLN®; Ob:=2*3.14*r; WRITELN('Obwod kola wynosi ',Ob:0:2); END; IF wybor='6' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); P:=a*a*a*a*a*a; WRITELN('Pole szescianu wynosi ',P:0:2); END; IF wybor='7' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); WRITELN('Wpisz dlugosc krawedzi b'); READLN(; WRITELN('Wpisz dlugosc wysokosci h'); READLN(h); P:=2*a*b+2*a*h+2*a*h; WRITELN('Pole calkowite prostopadloscianu wynosi ',P:0:2); END; IF wybor='8' THEN BEGIN WRITELN('Wpisz dlugosc promienia r'); READLN®; WRITELN('Wpisz dlugosc wysokosci h'); READLN(h); P:=3.14*r*r+3.14*r*r+2*3.14*r*h; WRITELN('Pole calkowite walca wynosi ',P:0:2); END; IF wybor='9' THEN BEGIN WRITELN('Wpisz dlugosc promienia r'); READLN(r); WRITELN('Wpisz dlugosc l'); READLN(l); P:=3.14*r*r+3.14*r*l; WRITELN('Pole calkowite stozka wynosi ',P:0:2); END; READLN; END. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
luk1999 17 Napisano 30 Październik 2009 Hmm, w końcu program się kompiluje i nie działa, czy się nie kompiluje? No i napisz go z wcięciami w znacznikach code (lub załącz jako plik), bo całość jest masakrycznie nieczytelna. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
LuZiK 0 Napisano 30 Październik 2009 Program sie kompiluje do samego konca. Po ostatnim punkcie chce zaczac pisac rozwiniecie do punktu b czyli rownan kwadratowych. Zaczynam program od IF wybor='b' THEN BEGIN tutaj pisze zawartosc END; wystepuje blad z ostatnim ENDem na koncu czyli z END. Tak jakby byl on zle zapisany. Pisze ze ma byc za nim ;. Nie wiem jak zaczac pisac rozwiniecie do tych rownan kwadratowych i do punktu c. PROGRAM OBLICZENIA; USES CRT; VAR a,b,c,d,P,Ob,r,h,l:real; x,y,k,wynik,odp:integer; wybor:char; BEGIN WRITELN('Witam w programie OBLICZENIA'); WRITELN('Program pomoze ci w niektorych obliczeniach'); WRITELN('a- GEOMETRIA'); WRITELN('b- ROWNANIA KWADRATOWE'); WRITELN('c- TEST'); READLN(wybor); IF wybor='a' THEN BEGIN WRITELN('1-pole kwadratu'); WRITELN('2-pole prostokata'); WRITELN('3-pole trojkata'); WRITELN('4-pole trapezu'); WRITELN('5-pole kola'); WRITELN('6-pole szescianu'); WRITELN('7-pole prostopadloscianu'); WRITELN('8-pole walca'); WRITELN('9-pole stozka'); READLN(wybor); END; IF wybor='1' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); P:=a*a; WRITELN('Pole kwadratu wynosi ',P:0:2); END; IF wybor='2' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); WRITELN('Wpisz dlugosc krawedzi b'); READLN(; P:=a*b; WRITELN('Pole prostokata wynosi ',P:0:2); END; IF wybor='3' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); WRITELN('Wpisz dlugosc wysokosci h'); READLN(h); P:=0.5*a*h; WRITELN('Pole trojkata wynosi ',P:0:2); END; IF wybor='4' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); WRITELN('Wpisz dlugosc krawedzi b'); READLN(; WRITELN('Wpisz dlugosc wysokosci h'); READLN(h); P:=0.5*a+0.5*b; P:=P*h; WRITELN('Pole trapezu wynosi ',P:0:2); END; IF wybor='5' THEN BEGIN WRITELN('Wpisz dlugosc promienia r'); READLN(r); Ob:=2*3.14*r; WRITELN('Obwod kola wynosi ',Ob:0:2); END; IF wybor='6' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); P:=a*a*a*a*a*a; WRITELN('Pole szescianu wynosi ',P:0:2); END; IF wybor='7' THEN BEGIN WRITELN('Wpisz dlugosc krawedzi a'); READLN(a); WRITELN('Wpisz dlugosc krawedzi b'); READLN(; WRITELN('Wpisz dlugosc wysokosci h'); READLN(h); P:=2*a*b+2*a*h+2*a*h; WRITELN('Pole calkowite prostopadloscianu wynosi ',P:0:2); END; IF wybor='8' THEN BEGIN WRITELN('Wpisz dlugosc promienia r'); READLN(r); WRITELN('Wpisz dlugosc wysokosci h'); READLN(h); P:=3.14*r*r+3.14*r*r+2*3.14*r*h; WRITELN('Pole calkowite walca wynosi ',P:0:2); END; IF wybor='9' THEN BEGIN WRITELN('Wpisz dlugosc promienia r'); READLN(r); WRITELN('Wpisz dlugosc l'); READLN(l); P:=3.14*r*r+3.14*r*l; WRITELN('Pole calkowite stozka wynosi ',P:0:2); END; READLN; END. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
luk1999 17 Napisano 30 Październik 2009 Po pierwsze: nie pobieraj dwa razy wciskanego klawisza do wybor. Użyj 2 różnych zmiennych. Po drugie, szkielet programu powinien wyglądać mniej-więcej tak: if wybor = 'a' then begin //GEOMETRIA ReadLn(wybor2); if wybor2 = '1' then begin //kod end else if wybor2 = '2' then begin //kod end //resztę uzupelnij sam end else if wybor = 'b' then begin //ROWNANIA KWADRATOWE end else if wybor = 'c' then begin //TEST end; Tak w ogóle to całość powinna być napisana na case ... of, a nie na if ... then. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
LuZiK 0 Napisano 31 Październik 2009 jeszcze nie poznalem petli case....of Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach