Pole stożka i przekątne w Pascalu

Awatar użytkownika
Natasha
Użytkownik
Użytkownik
Posty: 986
Rejestracja: 9 lis 2008, o 15:08
Płeć: Kobieta
Podziękował: 97 razy
Pomógł: 167 razy

Pole stożka i przekątne w Pascalu

Post autor: Natasha »

Proszę o sprawdzenie tych programów, bo w każdym z nich wyskakuje mi 1 błąd:

Kod: Zaznacz cały

program iloscprzekatnychwwielokacie;
var
n,p:integer;
begin
writeln('Podaj liczbe bokow wielokata');
readln(n);
if n>3 then
begin
p:=n*(n-3)/2;
readln(p:0:0);
end
else
writeln('Brak przekatnych');
readln;
end.
6 linijka od końca.

Kod: Zaznacz cały

program poleiobjetoscstozka;
var
r,l,h,P,V:integer;
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.
Tutaj jest coś nie tak z 4 linijką.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Pole stożka i przekątne w Pascalu

Post autor: kadiii »

AD 1. writeln zamiast readln
AD 2. Stała z kropką a nie przecinkiem a potem średnik
Czytaj komunikaty o błędach!
Awatar użytkownika
Natasha
Użytkownik
Użytkownik
Posty: 986
Rejestracja: 9 lis 2008, o 15:08
Płeć: Kobieta
Podziękował: 97 razy
Pomógł: 167 razy

Pole stożka i przekątne w Pascalu

Post autor: Natasha »

No to teraz jeszcze lepiej: a pierwszym 3 błędy, w drugim 5 wiec jak widać nie zawsze warto czytać to, co pisze pod spodem...
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Pole stożka i przekątne w Pascalu

Post autor: kadiii »

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!
ODPOWIEDZ