Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2009, 22:13   #1
Ксенька89
 
Регистрация: 13.05.2009
Сообщений: 5
Печаль Помогите пожалуйста с решением задачи

Задали задачу, не знаю как решить(.

Введите 3 числа. Если они могут быть длинами сторон разностороннего тупоугольного треугольника, выведите их в порядке возрастания и вычислите площадь полученного треугольника.

Помогите пожалуйста, совсем чайник в паскале)
Ксенька89 вне форума Ответить с цитированием
Старый 13.05.2009, 23:54   #2
Gongled
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 78
По умолчанию

Немного кривовато, но работает.
Код:
program pr;
uses CRT;
var
a, b, c : real;

{ Проверяем: тупоугольный или нет }
function check_tr(a, b, c : real) : boolean;
var
key : boolean;
begin
key := false;

     if (a<>b) and (b<>c) and (a<>c) then
     begin
          if (((sqr(a)-sqr(b)-sqr(c)) / (-2*b*c)) < 0) or
          (((sqr(b)-sqr(a)-sqr(c)) / (-2*a*c)) < 0) or
          (((sqr(c)-sqr(a)-sqr(b)) / (-2*a*b)) < 0) then key := true
             else key := false;
     end
     else
     key := false;
     check_tr := key;
end;

{ Формула Герона }
function tr_area(a, b, c : real) : real;
var
p : real;
begin
     p := (a + b + c) / 2;
     tr_area := sqrt(p*(p-a)*(p-b)*(p-c));
end;

{ Вывод значений }
procedure print_result;
begin
     writeln('Площадь: ',tr_area(a,b,c));
     write('Стороны: ');

     if (a > b) then
         if (a > c) then
             if (b > c) then write(c:5,b:5,a:5) else write(b:5,c:5,a:5)
         else
             if (b > c) then write(c:5,a:5,b:5) else write(b:5,a:5,c:5)
     else
         if (b > c) then
             if (a > c) then write(c:5,a:5,b:5) else write(a:5,c:5,b:5)
         else
             if (a > c) then write(a:5,b:5,c:5);
end;

begin
clrscr;

write('Введите через пробел три стороны: ');
read(a,b,c);
if check_tr(a,b,c) then print_result else EXIT;

end.
Пишу глупости.
Gongled вне форума Ответить с цитированием
Старый 14.05.2009, 14:33   #3
Ксенька89
 
Регистрация: 13.05.2009
Сообщений: 5
По умолчанию

Спасибки!!!
Ксенька89 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с решением задачи +Hitman+ Паскаль, Turbo Pascal, PascalABC.NET 9 22.11.2008 15:28
Помогите, пожалуйста, с решением задачи Knight_Maggot Помощь студентам 3 26.10.2007 10:46