Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 11.12.2011, 18:00   #1 (permalink)
rattywolf
Новичок
 
Регистрация: 11.12.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation Задача на Паскале, какие-то условия не проходят, помогите пожалуйста!

Задача - определить вид треугольника по трем сторонам а, b, c. rectangular - прямоугольный, acute - остроугольный, obtuse - тупоугольный, impossible - треугольник не существует.
Вот мое решение:


program Main;
var
a, b, c, g, k : integer;
begin
readln(a, b);
if a > b then
begin
g:=a;
k:=b;
end;
if a < b then
begin
g:=b;
k:=a;
end;
read(c);
if c > g then
g:=c;
if c < k then
k:=c;
if a+b+c-g > g then
begin
if k*k + (a+b+c-g-k)*(a+b+c-g-k) = g*g then
write('rectangular');
if k*k + (a+b+c-g-k)*(a+b+c-g-k) > g*g then
write('acute');
if k*k + (a+b+c-g-k)*(a+b+c-g-k) < g*g then
write('obtuse');
end;
if a+b+c-g <= g then
write('impossible');
end.
rattywolf вне форума   Ответить с цитированием

Старый 11.12.2011, 18:00
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

На форуме можно найти похожие топики, помогу вам в этом

Помогите, пожалуйста, решить задачи в Паскале
Помогите, очень трудная задача на Паскале
Паскаль. Задача с файлами, помогите пожалуйста
Помогите пожалуйста решить матрицу в паскале
Помогите пожалуйста написать проги в паскале
Помогите, пожалуйста, с программой в Паскале

Старый 11.12.2011, 18:46   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от rattywolf Посмотреть сообщение
Задача - определить вид треугольника по трем сторонам а, b, c. rectangular - прямоугольный, acute - остроугольный, obtuse - тупоугольный, impossible - треугольник не существует. Вот мое решение:
Знаете, откровенно говоря, я даже не понял, каким критерием (методом) Вы пользуетесь. Чего то накручено-наверчено... Не разобрался, извините.
Я бы решал задачку так:
Код:
var
 a, b, c, g  : integer;
 Ca:real;
begin
 Writeln('Enter the sides a b c:');
 readln(a, b, c);
 if a>b then
  begin
   g:=a;
   a:=b;
   b:=g;
  end;
 if b>c then
  begin
   g:=b;
   b:=c;
   c:=g;
  end;
 {now the longest side is c}
 If c>=a+b then
  writeln('impossible')
 else
  begin
   Ca:=(c*c-a*a-b*b)/(-2*a*b);
   if Ca=0 then writeln('rectangular') else
   if Ca>0 then write('acute') else
   writeln('obtuse');
  end;
 readln
END.
Суть метода:
1. Находим самую длинную сторону. Меняем обозначения так, чтобы этой стороной была сторона с.
2. Если c≥a+b, то треугольник невозможен.
3. В противном случае анализируем значение косинуса угла, противолежащего стороне с, найдя оный по теореме косинусов. Если он равен нулю, то треугольник прямоугольный, если положительный - остроугольный, если отрицательный - тупоугольный.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 14:48.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.