PDA

Показать полную графическую версию : [решено] 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

помогите решить.

Drongo
17-09-2010, 13:18
Hardcore, Без проблем. Напишите правило при которых построение треугольника возможно. :)

Hector
17-09-2010, 13:37
правило при которых построение треугольника возможно. »
Сумма квадратов двух сторон должна быть больше квадрата третьей, вроде так

Hardcore
17-09-2010, 13:51
Это все данные этого задания.

DedAlex
17-09-2010, 14:57
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;
}
Так правильно?

Hector
17-09-2010, 18:32
Так правильно? »
Рассмотрены не все варианты, да и рекомендуется для таких случаев использовать тег CODE. с условием что-то не то, используйте вариант DedAlex с одним if только с квадратами

Hardcore
17-09-2010, 19:23
Можешь написать свой вариант решения этй задачи?

lxa85
17-09-2010, 19:28
Hardcore, а почему используются квадраты сторон?
Ваапче, найдите в сети "Выгодский М.Я. Справочник по элементарной математике.", найдите там условие существования треугольника и по нему уже напишите программу.
Заодно избавите себя от кучи дополнительных вопросов по этой замечательной точной науке.

Hardcore
17-09-2010, 19:40
Всё, решеил задачку.
Спасибо за советы.

Drongo
17-09-2010, 21:10
Всё, решеил задачку. »А ответ для других товарищей с подобным вопросом? На будущее. ;)

lxa85
17-09-2010, 21:24
Drongo, сумма любых двух сторон должна быть строго больше третей.
В случае равенства - линия. Если меньше, то треугольника не существует.
Что тут решать то?

Hector
17-09-2010, 23:06
В общем вот, С++ начал изучать неделю назад :) за код сильно не ругайте :)
#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

lxa85
18-09-2010, 02:14
Hector, чисто практическая придирка.
Отсутствуют комментарии, непонятно, зачем вводить x, y, z. Их просто просят ввести, затем выдают Да / Нет.
Незачтено :)

Drongo
18-09-2010, 10:49
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;
}

lxa85
18-09-2010, 23:31
Hardcore, твое решение не верно. Ошибку найдешь - молодец. Не найдешь - не молодец. :)

Hardcore
19-09-2010, 01:00
верно. я его проверил на контесторе.
так что не ошибки. мне уже + пооставили.

lxa85
19-09-2010, 07:46
Hardcore, ты поверь дядьке, твой алгоритм содержит ошибку. Просто на контесторе принят определенный тип тестирования, избавляющий участников от "зашиты от дурака". Например если задан определенный входной формат данных, то он всегда будет таким. Если ожидается цифра, будет цифра а не буква. Я это знаю, т.к. был участником олимпиад по программированию. В реальных условиях это не так. Поэтому ищи ошибку, а за одно и объяснение, почему на контестере тебе поставили "+"




© OSzone.net 2001-2012