[FreePascal] Wzór herona problem


(Przemas Nfsmw2) #1

Siemka wszystkim. Męcze się z tym bardzo długo. Nie wiem gdzie mam wprowadzić p=(a+b+c)*0.5. Czy w const?. Proszę o pomoc. a gdy napisze

Program Pole_Trojkata;

uses crt;

var a,b,c:real;

begin

clrscr;

writeln('Program na obliczebie Pola Tr˘jkĄta poprzez wz˘r Herona');

writeln;

write('Podaj pierwszĄ dugo† ');

textcolor(blue);

readln(a);

textcolor(white);

write('Podaj drugĄ dugo† ');

textcolor(blue);

readln(b);

textcolor(white);

write('Podaj trzeciĄ dugo† ');

textcolor(blue);

readln©;

writeln;

textcolor(green);

writeln('Pole tr˘jkĄta = ',sqrt(((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c))/4):0:3);

writeln;

readkey;

end.

to kompilacja przechodzi prawidłowo lecz wynik = 0. Proszę o odpowiedź ;d


(Simplex111) #2

Program w takiej formie, jaką przedstawiłeś oblicza poprawnie pole trójkąta

Jeżeli chcesz wprowadzić dodatkową zmienną p , oznaczającą połowę obwodu trójkąta, to na pewno nie w const , bo to nie jest stała. Dodajesz nową zmienną p typu Real i po wczytaniu ostatniego boku trójkąta obliczasz p ze wzoru jaki podałeś i na końcu modyfikujesz ostatnią instrukcję Writeln, aby zawierała zmienną p

...

var a,b,c,p: Real;

begin

  ...

  Readln(c);

  p:= (a+b+c)*0.5;

  ...

end.

(Damgora) #3

Do wzoru w tej postaci nie musisz wprowadzać p, ale

sqrt(((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c))/4)

to nie to samo co:

sqrt((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c))/4

(Monczkin) #4

Razor004 , nazwij proszę temat konkretnie, bez zbędnych problemów w tytule. Inaczej wyciągnę konsekwencje. Przeczytaj proszę ten temat. viewtopic.php?f=16&t=394978