Показать полную графическую версию : [решено] 209. Triangle.
Hardcore
17-09-2010, 12:57
это перевод задачи.
Учитывая 3 положительных действительных чисел х, у, z. Выход "да", если можно построить треугольник со стороной длины х, у, z. Выход "NO" в противном случае.
Пример:
Вход:
3 4 5
Выход
ДА
Пример:
Вход:
1 4 5
Выход
NO
оригинал задачи
Given 3 positive real numbers x, y, z. Output "YES" if it is possible to construct a triangle with side lengths x, y, z. Output "NO" otherwise.
Example:
Input:
3 4 5
Output
YES
Example:
Input:
1 4 5
Output
NO
помогите решить.
Hardcore, Без проблем. Напишите правило при которых построение треугольника возможно. :)
правило при которых построение треугольника возможно. »
Сумма квадратов двух сторон должна быть больше квадрата третьей, вроде так
Hardcore
17-09-2010, 13:51
Это все данные этого задания.
Hardcore, просто проверка условия
(x+y<z)and(x+z<y)and(y+z<x)
Hardcore
17-09-2010, 16:37
# include <iostream>
using namespace std;
int main () {
int x,y,z;
cin>> x>>y>>z;
(x*x)+(y*y)>(z*z)
cout<<"yes"<<endl;
if (x*x)+(y*y)<(z*z)
cout<<"No"<<endl;
return 0;
}
Так правильно?
Так правильно? »
Рассмотрены не все варианты, да и рекомендуется для таких случаев использовать тег CODE. с условием что-то не то, используйте вариант DedAlex с одним if только с квадратами
Hardcore
17-09-2010, 19:23
Можешь написать свой вариант решения этй задачи?
Hardcore, а почему используются квадраты сторон?
Ваапче, найдите в сети "Выгодский М.Я. Справочник по элементарной математике.", найдите там условие существования треугольника и по нему уже напишите программу.
Заодно избавите себя от кучи дополнительных вопросов по этой замечательной точной науке.
Hardcore
17-09-2010, 19:40
Всё, решеил задачку.
Спасибо за советы.
Всё, решеил задачку. »А ответ для других товарищей с подобным вопросом? На будущее. ;)
Drongo, сумма любых двух сторон должна быть строго больше третей.
В случае равенства - линия. Если меньше, то треугольника не существует.
Что тут решать то?
В общем вот, С++ начал изучать неделю назад :) за код сильно не ругайте :)
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
printf("Hello, enter, please x, y, z\n");
int x, y, z;
scanf("%d %d %d", &x, &y, &z);
if (x+y>z && x+z>y && z+y>x)
printf("YES\n");
else
printf("NO\n");
return 0;
}
Написано в Microsoft Visual Studio 2010
Hector, чисто практическая придирка.
Отсутствуют комментарии, непонятно, зачем вводить x, y, z. Их просто просят ввести, затем выдают Да / Нет.
Незачтено :)
Drongo, сумма любых двух сторон должна быть строго больше третей.
В случае равенства - линия. Если меньше, то треугольника не существует.
Что тут решать то? »Я-то знаю и пытался наводящим вопросом подтолкнуть студента к самостоятельному решению задачи. Ведь по сути поняв правило, закодить его не составит труда. :)
Также стоит сделать проверку на ввод только положительных чисел
Hardcore
18-09-2010, 21:44
Вот код моей задачки) спс за наводящие советы.
#include <iostream>
using namespace std;
int main () {
double a,b,c;
cin>>a>>b>>c;
if (a+b>c && a+c>b && b+c>a)
{
cout << "yes"<<endl;
}
else {
cout << "no"<<endl;
}
return 0;
}
Hardcore, твое решение не верно. Ошибку найдешь - молодец. Не найдешь - не молодец. :)
Hardcore
19-09-2010, 01:00
верно. я его проверил на контесторе.
так что не ошибки. мне уже + пооставили.
Hardcore, ты поверь дядьке, твой алгоритм содержит ошибку. Просто на контесторе принят определенный тип тестирования, избавляющий участников от "зашиты от дурака". Например если задан определенный входной формат данных, то он всегда будет таким. Если ожидается цифра, будет цифра а не буква. Я это знаю, т.к. был участником олимпиад по программированию. В реальных условиях это не так. Поэтому ищи ошибку, а за одно и объяснение, почему на контестере тебе поставили "+"
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.