Witam, mam do napisania program który policzy pole i obwód trójkąta. Problem w tym że za raz na początku mam wybrać co chce policzyć. A więc czy pole czy trójkąt. W zadaniu jest uwaga by nie korzystać z polecenia case które de facto ułatwiło by mi sytuacje a tak to teraz nie wiem jak to zrobić. Dziś miałam pierwsze zajęcia z Pascala i takie zadanko dostałam To co udało mi się napisać zamieszczam poniżej:
var
a,b,c,h,pole,obwod:real;
begin
writeln('Podaj dlugosc podstawy trojkata: '); read(a);
writeln('Podaj wysokosc trojkata: '); read(h);
pole:=(a*h)/2;
writeln('Pole wynosi: ',pole:1:0);
writeln;
writeln('Podaj kolejno wymiary bokow trojkata aby policzyc obwod'); read(a,b,c);
obwod:=a+b+c;
write('Obwod trojkata wynosi: ');
write(obwod:1:0);
readln;
end.
Jak to teraz przerobić by mieć wybór czy policzyć pole czy obwód?
var
a,b,c,h,pole,obwod:real;
procedure pole_trojkata;
begin
writeln('Podaj dlugosc podstawy trojkata: '); read(a);
writeln('Podaj wysokosc trojkata: '); read(h);
pole:=(a*h)/2;
writeln('Pole wynosi: ',pole:1:0);
writeln;
end;
procedure obwod_trojkata;
begin
writeln('Podaj kolejno wymiary bokow trojkata aby policzyc obwod');
read(a,b,c);
obwod:=a+b+c;
write('Obwod trojkata wynosi: ');
write(obwod:1:0);
readln;
end;
procedure wybierz;
var
rownanie:integer;
begin
writeln('Wpisz co chcesz obliczyc pole (1) czy odwod (2) ?');
readln(rownanie);
if rownanie=1 then
begin
pole_trojkata;
end;
if rownanie=2 then
begin
obwod_trojkata;
end;
end;
begin
wybierz;
readln;
end.
var
a,b,c,h:real;
rownanie:integer;
procedure pole_trojkata;
begin
writeln('Podaj dlugosc podstawy trojkata: '); read(a);
writeln('Podaj wysokosc trojkata: '); read(h);
writeln('Pole wynosi: ',(a*h)/2:1:0);
writeln;
readln;
end;
procedure obwod_trojkata;
begin
writeln('Podaj kolejno wymiary bokow trojkata aby policzyc obwod');
read(a,b,c);
write('Obwod trojkata wynosi: ',a+b+c:1:0);
readln;
end;
begin
writeln('Wpisz co chcesz obliczyc pole (1) czy obwod (2) ?');
readln(rownanie);
if rownanie=1 then
begin
pole_trojkata;
end;
if rownanie=2 then
begin
obwod_trojkata;
end;
readln;
end.
To niech powie nauczycielowi niech pomyśli lepiej czego od uczy. Podstawową zasadą tworzenia algorytmu jest uzyskanie jak największej czytelności i zrealizowania w jak najmniejszej liczbie kroków zadania. Nauczyciel swoim zastrzeżeniem mija się z celem.
Jeżeli kolega nie radzi sobie z Pascalem to polecam zakup książki z helionu, mają dość tanie i dobre booki. Jeżeli nie wiesz jak rozwiązać problem to rozpisz sobie algorytm schematem blokowym, listą kroków lub choćby pseudokodem. Początkujący mają często problemy z rozwiązaniem problemu od razu w języku programowania.
A co do case to przepraszam, po prostu od razu przeczytałem Twój post z gotowym kodem i dlatego miałem zastrzeżenia. Przepraszam.