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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2011, 14:00   #1
svoi92
Пользователь
 
Регистрация: 14.01.2011
Сообщений: 10
По умолчанию не удается вычислить длины его высот и напечатайте их в порядке убывания.

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

uses crt;
var a,b,c:integer;
h1,h2,h3,s:real;
begin
clrscr;
write ('vvedite storony a: ');
readln (a);
write ('vvedite storony b: ');
readln (b);
write ('vvedite storony c: ');
readln (c);
if (a=b) and (b=c) and (c=a) then
begin
writeln ('ravnostoronnii');
h1:=(a*sqrt(3))/2;
writeln ('h1=',h1);

end
else
if (a=b) or (b=c) or (c=a) then
begin
writeln ('ravnobedrennii');
h1:=1/2*sqrt(4*sqr(a)*sqr(c));
h2:=
end
else
begin
writeln ('raznostoronii');
end;
h3:=(2*s)/a;
if (h1>h2) and (h1>h3) then
if h2>h3 then writeln (h3:10:2,h2:10:2,h1:10:2)
else if h2<h3 then writeln (h2:10:2,h3:10:2,h1:10:2);
if (h2>h1) and (h2>h3) then
if h1>h3 then writeln (h3:10:2,h1:10:2,h2:10:2)
else if h1<h3 then writeln (h1:10:2,h3:10:2,h2:10:2);
if (h3>h1) and (h3>h2) then
if h1>h2 then writeln (h2:10:2,h1:10:2,h3:10:2)
else if h1<h2 then writeln (h1:10:2,h2:10:2,h3:10:2);
readln;
end.
svoi92 вне форума Ответить с цитированием
Старый 19.02.2011, 23:36   #2
Наки
Пользователь
 
Аватар для Наки
 
Регистрация: 03.11.2010
Сообщений: 24
По умолчанию

Попробуй такой код.
Высоты вычисляются с использованием теоремы косинусов.

И при сортировке вместо < или > лучше ставить <= или >=, потому что высоты могут быть одинаковые.

uses crt;
var a,b,c:integer;
h1,h2,h3,s:real;
begin
clrscr;
write ('vvedite storony a: ');
readln (a);
write ('vvedite storony b: ');
readln (b);
write ('vvedite storony c: ');
readln (c);

if (a=b) and (b=c) and (c=a) then
writeln ('ravnostoronnii')
else
if (a=b) or (b=c) or (c=a) then
writeln ('ravnobedrennii')
else
writeln ('raznostoronii');

h1:=a*sqrt(1-sqr((a*a+b*b-c*c)/(2*a*b)));
h2:=b*sqrt(1-sqr((b*b+c*c-a*a)/(2*b*c)));
h3:=c*sqrt(1-sqr((a*a+c*c-b*b)/(2*a*c)));

if (h1>=h2) and (h1>=h3) then
if h2>=h3 then writeln (h3:10:2,h2:10:2,h1:10:2)
else if h2<=h3 then writeln (h2:10:2,h3:10:2,h1:10:2);
if (h2>=h1) and (h2>=h3) then
if h1>=h3 then writeln (h3:10:2,h1:10:2,h2:10:2)
else if h1<=h3 then writeln (h1:10:2,h3:10:2,h2:10:2);
if (h3>=h1) and (h3>=h2) then
if h1>=h2 then writeln (h2:10:2,h1:10:2,h3:10:2)
else if h1<=h2 then writeln (h1:10:2,h2:10:2,h3:10:2);
readln;
end.
Я не волшебница, я только учусь
Наки вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить цифры в порядке возрастания/убывания doter Общие вопросы C/C++ 2 05.10.2010 17:57
Числа в порядке убывания skiffter Общие вопросы C/C++ 10 14.09.2010 15:34
вычислите длины высот равнобедренного треугольника Feil Помощь студентам 1 23.12.2009 14:19
составление суммарного запроса в порядке убывания спроса с помощью программы Pascal Margo123321 Помощь студентам 1 14.05.2009 11:45
Расположить элементы массива в порядке убывания частоты встречаемости элементов. QWERT12345 Паскаль, Turbo Pascal, PascalABC.NET 7 14.11.2008 22:30