С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 06.11.2008
Сообщений: 33
1

Выяснить, существует ли треугольник с длинами сторон x, y, z

06.11.2008, 18:29. Показов 4480. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток. Вообщем заступорился на месте, когда нужно определить косинус, кто знает, помогите, пожалуйста)

Вот задача:
Выяснить, существует ли треугольник с длинами сторон x, y, z. Если да, то оп-ределить тип треугольника – остроугольный, тупоугольный или прямоугольный.

Вот что написал я:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
program tip;
uses crt;
var x,x1,x2,y,m,c,z: real;
begin
clrscr;
 writeln ('x= ');
 readln (x);
 writeln ('y= ');
 readln (y);
 writeln ('z= ');
 readln (z);
 if (x+y<=z) or (x+z<=y) or (y+z<=x) then
 writeln ('treugolnik ne sushestvuet')
 else
 begin
  if (x>z) and (x>y) then
  begin
  x:=m;
  y:=x1;
  z:=x2;
  end
  else
  if (y>x) and (y>z) then
   begin
   y:=m;
   x:=x1;
   z:=x2;
   end
   else
    if (z>x) and (z>y) then
    begin
    z:=m;
    x:=x1;
    y:=x2;
    end;
     begin
      c:=(x1*x1+x2*x2-m*m)/(2*x1*x2);
      writeln('c',c)
    end;
    end;
 readln;
 end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2008, 18:29
Ответы с готовыми решениями:

Выяснить, существует ли треугольник с длинами сторон
Пожалуйста помогите решить задачи по программированию. 1.Даны положительные числа x, y, z....

Определить, существует ли треугольник с заданными длинами сторон x, y, z
Даны три вещественных числа x,y,z. Определить, существует ли треугольник с длинами сторон x,y,z....

Треугольник задан длинами сторон
Треугольник задан длинами сторон,я сам их задам.Найти сороны бессектрис.Что писать после Read,после...

Треугольник задан длинами сторон.Найти:....
Помогите пожалуйста решить задачки на Паскале. 1)Треугольник задан длинами сторон.Найти: ...

15
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
06.11.2008, 20:23 2
Неужели в школе не проходили, что косинус угла 90 градусов=0, а если косинус меньше 0, то угол тупой и если больше 0, то острый. Еще упростил поиск сторон по длине.
Код
program tip;
uses crt;
var x,y,z,x1,x2,mx,mn,sr,c: real;
begin
clrscr;
write ('x= ');readln (x);
write ('y= ');readln (y);
write ('z= ');readln (z);
if (x+y<=z) or (x+z<=y) or (y+z<=x) then
   begin
    writeln ('treugolnik ne sushestvuet');
    readln;
    halt;
   end
else
  begin
    mx:=x;  {находим наибольшую сторону}
    if y>mx then mx:=y;
    if z>mx then mx:=z;
    mn:=x;   {находим наименьшую сторону}
    if y<mn then mn:=y;
    if z<mn then mn:=z;
    sr:=x+y+z-mx-mn; {находим оставшуюся сторону}
    c:=(mn*mn+sr*sr-mx*mx)/(2*mn*sr);{косинус наибольшего угла}
    if c>0 then writeln('treugolnik ostrougolnyj') {если кос>0, то угол меньше 90 градусов}
    else if c<0 then writeln('treugolnik tupougolnyj'){больше 90 градусов}
    else if c=0 then writeln('treugolnik pryamougolnyj'); {равен 90 градусов}
  end;
readln
end.
0
2836 / 1645 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
06.11.2008, 20:31 3
Код
x= 0.3
y= 0.4
z= 0.5
treugolnik ostrougolnyj
Вот так!
Не всё представляется в виде конечной двоичной дроби, не у всех прямоугольных косинус будет равен точно нулю, поэтому надо бы
Код
if abs(c)<1e-10 then writeln('treugolnik pryamougolnyj')
else if c>0 then writeln('treugolnik ostrougolnyj') {если кос>0, то угол меньше 90 градусов}
else if c<0 then writeln('treugolnik tupougolnyj');{больше 90 градусов}
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
06.11.2008, 21:07 4
Очень верное замечание, но когда начинаешь это объяснять клиенту, обычно говорят, нет, нам с погрешностями не надо, мы это не проходили. Привык уже эту ерунду писать.
0
0 / 0 / 0
Регистрация: 06.11.2008
Сообщений: 33
07.11.2008, 05:45  [ТС] 5
А что такое halt???
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
07.11.2008, 07:23 6
А что такое halt???
Нажимаем меню Help, процедуры и функции, ищем Halt и читаем
0
0 / 0 / 0
Регистрация: 06.11.2008
Сообщений: 33
09.11.2008, 15:23  [ТС] 7
Прочитал. А зачем он там нужен)?
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
09.11.2008, 16:40 8
Если читал, то что за вопрос? Чтобы закончить пронрамму, раз треугольник не существует, зачем мучать компьютер и считать несуществующие вещи.
0
2836 / 1645 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
09.11.2008, 23:22 9
В этой проге просто всё после halt находится в else, поэтому здесь особого смысла нет. Хотя, наверное, лучше сказать, что здесь есть halt, поэтому нет особого смысла в else.
0
2 / 2 / 2
Регистрация: 04.11.2008
Сообщений: 37
10.11.2008, 11:25 10
а если для начала сделать проверку на прямоугольный треугольник:
Код
if (mx*mx = mn*mn + sr*sr)
    then writeln('treugolnik pryamougolnyj')
else
{остальные условия}
Проверьте, у кого компилятор есть, должно помочь.
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
10.11.2008, 11:33 11
должно помочь.
Помочь от чего? От простуды?
0
(Yellow_Duck)
1261 / 130 / 15
Регистрация: 16.10.2008
Сообщений: 733
10.11.2008, 11:40 12
хахахахаха

+1
0
2 / 2 / 2
Регистрация: 04.11.2008
Сообщений: 37
10.11.2008, 12:14 13
От неисользования корней и округлений
0
2836 / 1645 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
10.11.2008, 22:25 14
Цитата Сообщение от УЫЕУЕ Посмотреть сообщение
а если для начала сделать проверку на прямоугольный треугольник:
Код
if (mx*mx = mn*mn + sr*sr)
    then writeln('treugolnik pryamougolnyj')
else
{остальные условия}
Проверьте, у кого компилятор есть, должно помочь.
Сути это не меняет. Всё те же 0.3 0.4 0.5 не проходят. Не надо вещественные числа сравнивать знаком =, если нет уверенности на 100000000h%, что там не окажется всяких округлений бесконечных двоичных дробей.
0
2 / 2 / 2
Регистрация: 04.11.2008
Сообщений: 37
11.11.2008, 11:00 15
Уже вижу и со всем согласен
0
0 / 0 / 0
Регистрация: 06.11.2008
Сообщений: 33
12.11.2008, 16:37  [ТС] 16
Большое спасибо Puporev, и всем кто помогал, всё же halt я опустил по двум причинам: первая - я ламер и мы ещё не проходили этого, вторая он там необязателен, без него всё работает.
0
12.11.2008, 16:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2008, 16:37
Помогаю со студенческими работами здесь

Определить, сколько существует треугольников с предлагаемыми длинами сторон a, b, c, d, e
Составить программу, которая проверяет, сколько существует треугольников с предлагаемыми длинами...

Определить, можно ли построить треугольник с заданными длинами сторон
1.Даны действительные числа a,b,c. Удвоить эти числа, если a&gt;=b&gt;=c, и заменить их абсолютными...

Определить, можно ли построить треугольник с заданными длинами сторон
1.Даны действительные числа a,b,c. Удвоить эти числа, если a&gt;=b&gt;=c, и заменить их абсолютными...

На плоскости задан треугольник длинами своих сторон, найти наименьший из углов треугольника
Прошу помогите написать программу в паскале, не пойму как ее делать. На плоскости задан...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru