Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами. Даны три натуральных числа – стороны треугольника. Необходимо вывести одно из слов: right для прямоугольного треугольника, acute для остроугольного треугольника, obtuse для тупоугольного треугольника или impossible, если входные числа не образуют треугольника. Почему то пишет неполное решение.
a = int(input()) b = int(input()) c = int(input()) if (a + b > c) and (c + b > a) and (a + c > b): if (a*a + b*b == c*c) or (a*a + c*c == b*b) or (c*c + b*b == a*a): print(«right») elif (a*a + b*b > c*c) or (a*a + c*c > b*b) or (c*c + b*b > a*a): print(«acute») elif (a*a + b*b < c*c) or (a*a + c*c < b*b) or (c*c + b*b < a*a): print(«obtuse») else: print(«impossible»)
Отслеживать
задан 31 окт 2019 в 20:08
nikobellic nikobellic
195 6 6 золотых знаков 9 9 серебряных знаков 17 17 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Определяем тип треугольника в Python
Поменяй местами проверки на тупоугольный и остроугольный. В каждом тупоугольном треугольнике есть два острых угла, поэтому до проверки на тупоугольность твой код никогда не доходит — останавливается или на прямоугольном или на остроугольном.
Да и последний elif можно заменить на else.
if (a*a + b*b == c*c) or (a*a + c*c == b*b) or (c*c + b*b == a*a): print(«right») elif (a*a + b*b < c*c) or (a*a + c*c < b*b) or (c*c + b*b < a*a): print(«obtuse») else: print(«acute»)
Отслеживать
ответ дан 31 окт 2019 в 20:23
25.2k 7 7 золотых знаков 30 30 серебряных знаков 46 46 бронзовых знаков
я туплю к ночи, или правда достаточно самую длинную сравнивать с суммой других?
31 окт 2019 в 20:26
Точно, спасибо!
Помогло
31 окт 2019 в 20:27
31 окт 2019 в 20:28
Самая длинная сторона всегда будет короче суммы двух других, это не работает)
31 окт 2019 в 20:30
31 окт 2019 в 20:33
a = int(input()) b = int(input()) c = int(input()) if ((a*a) + (b*b)) == c*c or ((a*a) + (c*c)) == a*a or ((a*a) + (c*c)) == b*b or ((c*c) + (b*b)) == a*a: print(‘rectangular’) if a + b > c or a + c > b or a + c > b or c + b > a: print(‘acute’) if a + b < c or a + c < b or a + c < b or c + b < a: print(‘obtuse’) else: print(‘impossible’)
Отслеживать
ответ дан 9 фев 2022 в 16:29
В текущем виде ваш ответ непонятен.
Пожалуйста, нажмите править под сообщением, чтобы добавить больше подробностей, которые помогут другим понять, как он отвечает на заданный вопрос. Вы можете найти больше информации о том, как писать хорошие ответы в Справке.
9 фев 2022 в 16:44
Предлагаю использовать библиотеку sympy
from sympy.geometry import Triangle, Point t1 = Triangle(Point(0, 0), Point(4, 0), Point(4, 3)) t1.is_right() #True t1.angles # t1.angles[Point(0,0)] #acos(4/5)
Отслеживать
ответ дан 9 фев 2022 в 19:18
1,524 1 1 золотой знак 2 2 серебряных знака 13 13 бронзовых знаков
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
4.3 Вид треугольника. «Поколение Python»: курс для начинающих. Курс Stepik
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник: ru.stackoverflow.com
Определить тип треугольника по введенным сторонам — Pascal
Проверить, может ли введенная с клавиатуры тройка чисел быть сторонами треугольника, и если да, то определить его тип: равносторонний, равнобедренный, разносторонний.
Код к задаче: «Определить тип треугольника по введенным сторонам»
Листинг программы
var a,b,c:integer; begin writeln(‘введите 3 стороны’); readln(a,b,c); if (a=b) and (b=c) and (c>0) then writeln(‘равносторонний треугольник’) else if ((a=b) and (a<>c) and (c>0)) or ((a=c) and (a<>b) and (b>0)) or ((c=b) and (a<>c) and (a>0)) then writeln(‘равнобедренный треугольник’) else if (a<>b) and (b<>c) and (c>0) and (a>0) and (b>0) then writeln(‘Разносторонний треугольник’) else if (a<=0) or (b<=0) or (c<=0) then writeln(‘сторона не может быть <=0’) else end.
Источник: studassistent.ru
Программа которая определяет тип треугольника
Не получается решить задачу:
Даны три стороны треугольника a,b,c. Определите тип треугольника с заданными сторонами. Выведите одно из четырех слов: rectangular для прямоугольного треугольника, acute для остроугольного треугольника, obtuse для тупоугольного треугольника или impossible, если треугольника с такими сторонами не существует.
Решаю с помощью теоремы косинусов:
a = int(input())
b = int(input())
c = int(input())
x = ((a ** 2) — (b ** 2) — (c ** 2))/(- 2 * b * c)
y = ((b ** 2) — (a ** 2) — (c ** 2))/(- 2 * a * c)
z = ((c ** 2) — (a ** 2) — (b ** 2))/(- 2 * b * a)
if x or y or z == 0:
print(«rectangular»)
elif x and y and z > 0:
print(«acute»)
elif x or y or z < 0:
print(«obtuse»)
elif (a + b) print(«impossible»)
elif (a + c) print(«impossible»)
elif (c + b) print(«impossible»)
Последний раз редактировалось andr19792; 10.03.2018 в 21:50 .
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
Алгоритм такой:
1) Ищем максимальную сторону, пусть c.
2) Если c >= a + b, то треугольник невозможен
3) Считаем знак a*a + b*b — c*c
+: остроугольный
0: прямоугольный
-: тупоугольный
Форумчанин
Регистрация: 31.05.2009
Сообщений: 786
Скорей всего это для coursera. Вот мое принятое решение))
import math a = int(input()) b = int(input()) c = int(input()) if a + b
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
Зачем считать сам угол? Достаточно знака косинуса
Регистрация: 09.03.2018
Сообщений: 4
Алгоритм такой:
1) Ищем максимальную сторону, пусть c.
2) Если c >= a + b, то треугольник невозможен
3) Считаем знак a*a + b*b — c*c
+: остроугольный
0: прямоугольный
-: тупоугольный
Спасибо за совет, попробую.
Все же не понимаю, почему мое решение 50% готовности. По теорме косинусов поочередно рассматриваю каждую сторону треугольника.
Последний раз редактировалось andr19792; 10.03.2018 в 22:08 .
Регистрация: 09.03.2018
Сообщений: 4
Скорей всего это для coursera. Вот мое принятое решение))
Спасибо за ответ, да coursera))), немного не понятен ход решения вот здесь:
else:
if b < c:
t = b
b = c
c = t
if a < b:
t = a
a = b
b = t
if b < c:
t = b
b = c
c = t
if a < b:
t = a
a = b
Регистрация: 09.03.2018
Сообщений: 4
Алгоритм такой:
1) Ищем максимальную сторону, пусть c.
2) Если c >= a + b, то треугольник невозможен
3) Считаем знак a*a + b*b — c*c
+: остроугольный
0: прямоугольный
-: тупоугольный
Так не получается:
a = int(input())
b = int(input())
c = int(input())
if (a + b) print(«impossible»)
else:
if c > a and c > b and a ** 2 + b ** 2 — c ** 2 > 0:
print(«acute»)
if b > a and b > c and a ** 2 + c ** 2 — b ** 2 > 0:
print(«acute»)
if a > b and a > c and b ** 2 + c ** 2 — a ** 2 > 0:
print(«acute»)
if c > a and c > b and a ** 2 + b ** 2 — c ** 2 < 0:
print(«obtuse»)
if b > a and b > c and a ** 2 + c ** 2 — b ** 2 < 0:
print(«obtuse»)
if a > b and a > c and b ** 2 + c ** 2 — a ** 2 < 0:
print(«obtuse»)
if c > a and c > b and a ** 2 + b ** 2 — c ** 2 == 0:
print(«rectangular»)
if b > a and b > c and a ** 2 + c ** 2 — b ** 2 == 0:
print(«rectangular»)
if a > b and a > c and b ** 2 + c ** 2 — a ** 2 == 0:
print(«rectangular»)
Форумчанин
Регистрация: 31.05.2009
Сообщений: 786
Скорей всего это для coursera. Вот мое принятое решение))
Спасибо за ответ, да coursera))), немного не понятен ход решения вот здесь:
else:
if b < c:
t = b
b = c
c = t
if a < b:
t = a
a = b
b = t
if b < c:
t = b
b = c
c = t
if a < b:
t = a
a = b
упорядочить по убыванию a,b,c
Регистрация: 05.03.2020
Сообщений: 1
Немного не Python
int a, b, c;
int maxVal, res;
cin >> a >> b >> c;
//Считаем знак a*a + b*b — c*c
res = a*a + b*b + c*c — 2*(maxVal*maxVal);
Последний раз редактировалось anlo; 05.03.2020 в 01:59 .
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Определить сторону треугольника | Apple_tini | PHP | 5 | 09.03.2015 14:20 |
borland C++. Даны числа: a b c. Определить, могут ли они быть сторонами треугольника, и если да, то определить его тип | Evgeniy73 | Помощь студентам | 6 | 02.07.2014 08:32 |
Определить периметр и площадь треугольника | skoch | Общие вопросы C/C++ | 6 | 19.04.2013 00:03 |
Определить тип треугольника | k1r1ch | Общие вопросы Delphi | 14 | 16.10.2009 16:27 |
Определить тип треугольника | michailevg | Общие вопросы C/C++ | 3 | 15.12.2008 17:29 |
Источник: www.programmersforum.ru