Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] 209. Triangle. (http://forum.oszone.net/showthread.php?t=185723)

Hardcore 17-09-2010 12:57 1497642

209. Triangle.
 
это перевод задачи.
Учитывая 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 1497663

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

Hector 17-09-2010 13:37 1497680

Цитата:

Цитата Drongo
правило при которых построение треугольника возможно. »

Сумма квадратов двух сторон должна быть больше квадрата третьей, вроде так

Hardcore 17-09-2010 13:51 1497700

Это все данные этого задания.

DedAlex 17-09-2010 14:57 1497779

Hardcore, просто проверка условия
Код:

(x+y<z)and(x+z<y)and(y+z<x)

Hardcore 17-09-2010 16:37 1497886

# 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 1497972

Цитата:

Цитата Hardcore
Так правильно? »

Рассмотрены не все варианты, да и рекомендуется для таких случаев использовать тег CODE. с условием что-то не то, используйте вариант DedAlex с одним if только с квадратами

Hardcore 17-09-2010 19:23 1498000

Можешь написать свой вариант решения этй задачи?

lxa85 17-09-2010 19:28 1498009

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

Hardcore 17-09-2010 19:40 1498021

Всё, решеил задачку.
Спасибо за советы.

Drongo 17-09-2010 21:10 1498101

Цитата:

Цитата Hardcore
Всё, решеил задачку. »

А ответ для других товарищей с подобным вопросом? На будущее. ;)

lxa85 17-09-2010 21:24 1498114

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

Hector 17-09-2010 23:06 1498175

В общем вот, С++ начал изучать неделю назад :) за код сильно не ругайте :)
Код:

#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 1498272

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

Drongo 18-09-2010 10:49 1498377

Цитата:

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

Я-то знаю и пытался наводящим вопросом подтолкнуть студента к самостоятельному решению задачи. Ведь по сути поняв правило, закодить его не составит труда. :)

Также стоит сделать проверку на ввод только положительных чисел

Hardcore 18-09-2010 21:44 1498761

Вот код моей задачки) спс за наводящие советы.

#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 1498796

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

Hardcore 19-09-2010 01:00 1498837

верно. я его проверил на контесторе.
так что не ошибки. мне уже + пооставили.

lxa85 19-09-2010 07:46 1498881

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


Время: 05:10.

Время: 05:10.
© OSzone.net 2001-