Программа которая определяет тип треугольника

Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами. Даны три натуральных числа – стороны треугольника. Необходимо вывести одно из слов: 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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru