Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/179: Рейтинг темы: голосов - 179, средняя оценка - 4.85
oakenfold04
1

Выяснить существует ли треугольник с длинами сторон a,b,c

17.09.2009, 18:56. Показов 32314. Ответов 47
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны действительные положительные числа x,y,z.
Выяснить существует ли треугольник с длиннами сторон x,y,z? помогите сделать программу блок схему сделал а прогу не знаю как
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2009, 18:56
Ответы с готовыми решениями:

Выяснить, существует ли треугольник с длинами сторон x, y, z (цикл While)
Даны действительные положительные числа x,y,z. а)Выяснить существует ли треугольник с длинами...

Выяснить существует ли треугольник с заданными длинами сторон
Даны действительные положительные числа x, y, z. Выяснить существует ли треугольник с длинами...

Существует ли треугольник с длинами сторон x, y, z
Даны действительные числа x, y, z. Выяснить, существует ли треугольник с длинами сторон x, y, z,...

Построить алгоритм, определяющий, существует ли треугольник с заданными длинами сторон a, b и c.
1.Построить алгоритм, определяющий, существует ли треугольник с заданными длинами сторон a, b и c....

47
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
18.09.2009, 18:12 21
Author24 — интернет-сервис помощи студентам
Evg, хм... ну так он и не выполнит тогда все три условия. Если я ошибаюсь, то приведи три таких числа, чтобы твое же условие не выполнилось?
0
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
18.09.2009, 18:14 22
Ну если же он введет -1 0 0 ЄТО же не треугольник...
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
18.09.2009, 18:19 23
Цитата Сообщение от M128K145 Посмотреть сообщение
Evg, хм... ну так он и не выполнит тогда все три условия. Если я ошибаюсь, то приведи три таких числа, чтобы твое же условие не выполнилось?
Привести не могу, ибо с математикой туго А потому подстраховываюсь дополнительной проверкой. Я её писал именно на случай отрицательных величин. Писать её или нет - пусть решают те, кто математики, а себе я бы проверочку написал, ибо хуже от этогоне станет

Добавлено через 49 секунд
Цитата Сообщение от galileopro Посмотреть сообщение
Ну если же он введет -1 0 0 ЄТО же не треугольник...
Введи в браузере "trampampam://qqq" - это не URL, но браузер ведь от этого не кердыкнулся

Добавлено через 23 секунды
Если пользователь введёт 1 1 100 - это тоже не треугольник
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
18.09.2009, 18:21 24
galileopro, скомпилируй https://www.cyberforum.ru/post271122.html
0
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
18.09.2009, 18:39 25
Да все работает.
Я понял почему, вот подставьте а=0 в
Цитата Сообщение от galileopro Посмотреть сообщение
(a+b>c) && (b+c>a) && (c+a>b)
и получите
C++
1
(b>c) && (b+c>0) && (c>b)
противоречие здесь
C++
1
(b>c)&& (c>b)
и поэтому возвращает ложь. Вот так)
2
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
18.09.2009, 18:44 26
Цитата Сообщение от M128K145 Посмотреть сообщение
автоматически превращается в (0 && 0 && 1) (порядок не важен)
вот о чем я и говорил, а чтобы это был треугольник надо только (1 && 1 && 1) и никаких других вариантов.
1
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
18.09.2009, 18:55 27
Цитата Сообщение от galileopro Посмотреть сообщение
поэтому возвращает ложь. Вот так)
Убедительно. А на случай отрицательных чисел оно доказывается?
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
18.09.2009, 19:12 28
Цитата Сообщение от Evg Посмотреть сообщение
Убедительно. А на случай отрицательных чисел оно доказывается?
берем то же доказательство galileopro
C++
1
(b-n > c) && (b+c > -n) && (c-n > b)
противоречие то же самое
C++
1
(b-n > c)&& (c-n > b)
1
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
18.09.2009, 19:43 29
Цитата Сообщение от M128K145 Посмотреть сообщение
(b-n > c)&& (c-n > b)
Да это то же самое, что
C++
1
(b-c>n)&&(b-c<-n)
Если n>0 то как может некоторое число b-c быть больше положительного и меньше отрицательного?
Если n<0 то -n>0 и тут никаких противоречий не будет но это равносильно a=-n>0 и все вроде нормально.
1
0 / 0 / 0
Регистрация: 17.09.2009
Сообщений: 5
19.09.2009, 03:49 30
Вот так, наверное, самое правильное и будет:
C++
1
2
3
4
5
template <class T>
bool If_Triang(T a, T b, T c)
{
return (a>=0) && (b>=0) && (c>=0) && (a+b>c) && (b+c>a) && (c+a>b);
}
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
19.09.2009, 09:06 31
Тихон Медведкин, самое правильное было в 5 посте
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
19.09.2009, 11:07 32
Цитата Сообщение от M128K145 Посмотреть сообщение
берем то же доказательство galileopro
Со скрипом, но вроде бы понимаю. Надеюсь, что для двух и трёх отрицательных чисел так же всё логично
0
2 / 2 / 0
Регистрация: 19.05.2011
Сообщений: 4
22.05.2011, 06:56 33
попробывал так создать, но у меня ничерта не работает
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<HTML>
 <HEAD>
 <TITLE>треугольник</TITLE>
 <script language="JavaScript">
 <!-- //
 function srec (obj )
 {
 var a = Number(obj.num1.value);
 var b = Number(obj.num2.value);
 var c = Number(obj.num3.value);
 var k=1 
if (a=>0) k=0 
else if(b>=0) k=0
else if (c>=0)k=0 
else if (a+b>c)k=0 
else if (b+c>a)k=0 
else if (c+a>b)k=0 
else  
obj.res.value=k  }
 //-->
 </script>
 </HEAD>
 <BODY>
 <H4>Возможен ли треугольник</H4>
 <FORM name="form1">
 A: <input type="text" size=8 name="num1"><hr>
 B: <input type="text" size=8 name="num2"><hr>
 C: <input type="text" size=8 name="num3"><hr>
 результат
 <input type="button" value=Определить onClick="maxval(form1)">
 <input type="text" size=8 name="res"><hr>
 <input type="reset">
 </FORM>
 </BODY>
 </HTML>[JS]
[/JS]
0
37 / 37 / 6
Регистрация: 20.03.2011
Сообщений: 331
22.05.2011, 10:42 34
А вот и код (Я сделал по формуле герона =)) По геометрии в 8 классе изучали формулу Герона, по ней можно найти площадь треугольника. В итоге если площадь равна нулю то такой треугольник не существует
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//---------------------------------------------------------------------------
#include <nik.h>
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include <tchar.h>
//---------------------------------------------------------------------------
 
#pragma argsused
float a,b,c,s,p,S;
int main()
{
cout << "Введите 3 стороны треугольника \n";
cin >> a >> b >> c;
p=(a+b+c) / 2;
s = p * (p-a) * (p-b) * (p-c);
S=sqrt(s);
 
if (S==0) {
cout << "Такого треугольника не существеует \n";
}
else
{
cout << "Такой треугольник существеует \n";
cout << "И его площадь" << S << "кв см";
}
system("Pause >> void");
    return 0;
}
//---------------------------------------------------------------------------
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
11.03.2016, 23:15 35
А такой вариант имеет право на существование?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
 
using namespace std;
int main()
{
    /*int x = 2;
    int y = 2;
    cout << (++x + y);*/
 
    double a; // катет 
    double b; //катет
    double c; //гипотенуза
 
    cout << "Введите три ненулевых значения: ";
    cin >> a >> b >> c;
 
    if((a + b) > c)
    {
        if((a + c) > b)
        {
            if((b + c) > a)
            {
                cout << "Такой треугольник существует!" << endl;
            }
        }
    }
    else 
        cout << "Такой треугольник не существует!" << endl;
        
    return 0;
}
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
12.03.2016, 02:44 36
Цитата Сообщение от Liss29 Посмотреть сообщение
А такой вариант имеет право на существование?
Это зависит от того, что вы хотели получить в результате. В вашем варианте в случае несрабатывания второго или третьего 'if' на выход не будет выведено вообще ничего. Пользователь будет подвешен в состоянии мучительной неопределенности, как кот Шредингера.

Добавлено через 4 минуты
Цитата Сообщение от nikitapel Посмотреть сообщение
По геометрии в 8 классе изучали формулу Герона, по ней можно найти площадь треугольника. В итоге если площадь равна нулю то такой треугольник не существует
Если вы тупо примените формулу Герона к набору длин, для которых не выполняется неравенство треугольника, то запросто схлопочете отрицательное число под корнем и какой-то малопредсказуемый результат (определяется реализацией), а отнюдь не нуль.
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
12.03.2016, 03:27 37
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Это зависит от того, что вы хотели получить в результате.
Дано задание, условие описано в начале темы, я по этой же книжке учу, там про проверки ничего не сказано. Просто хотелось узнать, как вариант потянет или нет.

т.е. во втором и третем If нужно пункт, например, else и высти собщение , и перейти к началу ввода новых значений. Может так, хотя я не претендую на особую оригинальность, но всё же.

Стоит, думаю, тогда и проверку при вводе добавить чтобы введённые числа не были 0, а возможно и отрицательные тоже.
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
12.03.2016, 03:33 38
Цитата Сообщение от Liss29 Посмотреть сообщение
Дано задание, условие описано в начале темы,
Совершено верно. Требование "Выяснить существует ли треугольник", я понимаю так: по введенным данным надо дать ответ, типа "Да, существует" или "Нет, не существует". Ваша же программа иногда вообще ничего не говорит, а просто заканчивается молча.

Как это может соответствовать условию? По-моему это не соответствует условию. Если вы как-то по другому поняли условие - поясните.

Если я введу: 1 1 10, то ваша программа скажет "Такой треугольник не существует!". Замечательно. А вот если я введу: 10 1 1, то ваша программа ничего не скажет вообще. Как это понимать?

Цитата Сообщение от Liss29 Посмотреть сообщение
и перейти к началу ввода новых значений.
Цитата Сообщение от Liss29 Посмотреть сообщение
проверку при вводе добавить чтобы введённые числа не были 0, а возможно и отрицательные тоже.
Об этом пока речи не идет. Речь идет об основной функциональности программы - ответе на вопрос о том, существует ли такой треугольник.
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
12.03.2016, 04:05 39
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
просто заканчивается молча.
Я ввёл пару значений у меня молча не заканчивалась, как обработать, я нашёл более понятный мне вариант это сравнение сумму двух членов с третим. Честно, не знаю.

А намёк хоть возможен, в какую сторону копать чтобы усовершенствовать прогу)
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
12.03.2016, 04:18 40
Цитата Сообщение от Liss29 Посмотреть сообщение
Я ввёл пару значений у меня молча не заканчивалась,
Я вам привел вариант, при котором ваша программа не говорит ни "да", ни "нет", а просто заканчивается молча: 10 1 1.

Цитата Сообщение от Liss29 Посмотреть сообщение
в какую сторону копать чтобы усовершенствовать прогу
Так куда уж толще намек-то: посмотрите на структуру ваших if-ов и обратите внимание, что не все логические пути ведут к выдаче ответа пользователю.
0
12.03.2016, 04:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2016, 04:18
Помогаю со студенческими работами здесь

а) Выяснить, существует ли треугольник с длинами сторон x, y, z. б) Если треугольник существует, то ответить – является
Даны действительные положительные числа x, y, z. а) Выяснить, существует ли треугольник с длинами...

Выяснить,существует ли треугольник с длинами сторон x,y,z
Даны три положительных вещественных числа x,y,z.Выяснить,существует ли треугольник с длинами сторон...

Выяснить, существует ли треугольник с длинами сторон x, y, z
Разобрать алгоритм и составить программу для решения задачи. Даны действительные числа...

Выяснить, существует ли треугольник с длинами сторон
Пожалуйста помогите решить задачи по программированию. 1.Даны положительные числа x, y, z....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru