Niech ci będzie, że zmusiłaś mnie do odpalenia kodu i sprawdzeniu "co na to kompilator"
Po poprawieniu rzeczy, o których pisałem w pierwszym poście otrzymamy następujące komunikaty(albo bardzo podobne)
Error: Illegal use of ':'
czyli juz wiemy że zmiennej p nie da sie w taki sposób wyświetlić bo jest typu integer
got "Extended" expected "SmallInt"
czyli widzimy, że dzielenie "/" moze dać wynik niecałkowity, zmieniamy więc dzielenie na div(całkowitoliczbowe)
Kod: Zaznacz cały
program iloscprzekatnychwwielokacie;
var
n,p,x:integer;
begin
writeln('Podaj liczbe bokow wielokata');
readln(n);
if n>3 then
begin
p:=n*(n-3) div 2;
writeln(p:0);
end
else
writeln('Brak przekatnych');
readln;
end.
W drugim programie po skompilowaniu uzyskujemy 4 razy znany nam już błąd
Incompatible types: got "Extended" expected "SmallInt"
oraz równie znany
Error: Illegal use of ':'
Doświadczeni poprzednim przykładem podejmujemy decyzję - albo zmiana dzielenia na div albo zmiana typu zmiennych na real. Po długich rozważaniach podejmujemy decyzję o zmianie typu zmiennej - w końcu warto mieć czasem dokładniejszy wynik.
Kod: Zaznacz cały
program poleiobjetoscstozka;
var
r,l,h,P,V:real;
const pi=3.14;
begin
writeln('Podaj promien r i tworzaca l');
readln(r,l);
P:=pi*r*l+pi*r*r;
writeln(P:0:2);
writeln('Podaj wysokosc');
readln(h);
V:=1/3*pi*r*r*h;
writeln(V:0:2);
readln;
end.
Konkluzja: Czytamy zawsze komunikaty kompilatora - prawie zawsze chce nam pomóc!