Помощь - Поиск - Пользователи - Календарь
Полная версия: Подпрограммы и функции
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Flare
Заданы стороны двух сторон треугольников ABC и PMH, сравнить площади этих треугольников, используя формулу Герона. Что-то не получается.. помогите, пожалуйста..
uses crt;
var
a,b,c,p,m,h,s1,s2:real;
function square(x,y,z:real):real;
begin
p:=(x+y+z)/2;
square:=sqrt(p*(p-x)*(p-y)*(p-z));
end;
begin
clrscr;
write('vvedite a,b,c,p,m,h:');
readln(a,b,c,p,m,h);
s1:=square(a,b,c);
s2:=square(p,m,h);
if s1>s2 then writeln('s1>s2') else writeln('s2>s1');
readln;
end.
volvo
function square(x,y,z:real):real;
var p: real; { <--- Добавь вот это !!! }
begin
p:=(x+y+z)/2;
square:=sqrt(p*(p-x)*(p-y)*(p-z));
end;

Иначе ты просто затираешь введенное значение P (длину стороны) вычисленным полупериметром...

[offtop]
Кстати, klem4, помнишь наш разговор об использовании глобальных переменных? Вот не было бы все описано глобально, ошибку нашел бы компилятор, а так - у программиста голова должна болеть blum.gif
[/offtop]
klem4
А что не получается? Похоже на правду, единственное, переменную p сделай локальной (в функции)

Volvo, опередил smile.gif
Flare
СПАСИБО!!!
Flare
Все равно выдает ошибку 207
Invalid floating point operation
видимо, подкоренное выражение должно быть больше нулю, но вот как это сделать?
volvo
square:=sqrt(abs(p*(p-x)*(p-y)*(p-z)));
GoodWind
а при каких входных данных подкоренное выражение может быть меньше нуля blink.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.