Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 123, средняя оценка - 4.63
oakenfold04
#1

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

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

Даны действительные положительные числа x,y,z.
Выяснить существует ли треугольник с длиннами сторон x,y,z? помогите сделать программу блок схему сделал а прогу не знаю как
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2009, 18:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выяснить существует ли треугольник с длинами сторон a,b,c (C++):

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

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

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

Объект «равносторонний треугольник, заданный длинами сторон» - C++
ПОМОГИТЕ РЕШИТЬ - Объект «равносторонний треугольник, заданный длинами сторон». Предусмотреть возможность операции присваивания,...

Треугольник задан длинами сторон. Найти длины медиан - C++
Помогите решить задачу. Треугольник задан длинами сторон.Найти длины медиан.

Проверить, можно ли построить треугольник с заданными длинами сторон - C++
Ребят помогите с решением задачи. Задание надо сделать на языке C++ Даны произвольные числа a,b,c. Если нельзя построить треугольник с...

47
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
19.09.2009, 09:06 #31
Тихон Медведкин, самое правильное было в 5 посте
0
Evg
Эксперт CАвтор FAQ
18248 / 6373 / 438
Регистрация: 30.03.2009
Сообщений: 17,640
Записей в блоге: 28
19.09.2009, 11:07 #32
Цитата Сообщение от M128K145 Посмотреть сообщение
берем то же доказательство galileopro
Со скрипом, но вроде бы понимаю. Надеюсь, что для двух и трёх отрицательных чисел так же всё логично
0
BRONXSTYLE
1 / 1 / 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
nikitapel
36 / 36 / 4
Регистрация: 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
Liss29
25 / 14 / 2
Регистрация: 18.11.2012
Сообщений: 536
Завершенные тесты: 1
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
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
12.03.2016, 02:44 #36
Цитата Сообщение от Liss29 Посмотреть сообщение
А такой вариант имеет право на существование?
Это зависит от того, что вы хотели получить в результате. В вашем варианте в случае несрабатывания второго или третьего 'if' на выход не будет выведено вообще ничего. Пользователь будет подвешен в состоянии мучительной неопределенности, как кот Шредингера.

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

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

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

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

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

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

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

Цитата Сообщение от Liss29 Посмотреть сообщение
в какую сторону копать чтобы усовершенствовать прогу
Так куда уж толще намек-то: посмотрите на структуру ваших if-ов и обратите внимание, что не все логические пути ведут к выдаче ответа пользователю.
0
Liss29
25 / 14 / 2
Регистрация: 18.11.2012
Сообщений: 536
Завершенные тесты: 1
12.03.2016, 04:59 #41
А если так:
C++
1
if((b > a && b < c) || b == c)
Вроде работает)

Добавлено через 1 минуту
TheCalligrapher
Посмотрел, выводы сделал. Думаю, вариант выше более близок к истине.
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
12.03.2016, 07:36 #42
Цитата Сообщение от Liss29 Посмотреть сообщение
А если так:
"Если так" где именно? Куда вы это собрались вписывать в вашем коде?
0
skipaq
69 / 69 / 30
Регистрация: 24.01.2013
Сообщений: 198
12.03.2016, 10:41 #43
такое.. свой недовариант
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
#include <iostream.h>
#include <Windows.h>
#include <stdio.h>
 
int main() {
  double a, b, c;
  do {
    cout << "Enter a, b, c: ";
    cin >> a >> b >> c;
  }
 while (a <= 0 || b <= 0 || c <= 0) ;
 
    if (a + b > c) {
        if (b + c > a) {
            if (a + c > b) {
                cout << "Exist.\n";
            }  else     cout << "Not exist.\n";
 
        } else      cout << "Not exist.\n";
 
    } else      cout << "Not exist.\n";
 
system("pause");
return 0;
}
0
Liss29
25 / 14 / 2
Регистрация: 18.11.2012
Сообщений: 536
Завершенные тесты: 1
12.03.2016, 21:20 #44
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
"Если так" где именно?
Где, перед началом if-ов для проверки суммы двух значений по отношению к третему.
Как у skipaq примерно так. Что конкретно сейчас не так?
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
12.03.2016, 22:08 #45
Цитата Сообщение от Liss29 Посмотреть сообщение
Как у skipaq примерно так. Что конкретно сейчас не так?
Если вы сделаете так, как у skipaq, то есть добавите ветки else с отрицательными ответами в каждый их ваших if, то ваша программа сразу станет работать правильно. И никаких дополнительных проверок не понадобится. Если же вы не вставите эти ветки, то ваши дополнительные проверки никак вам не помогут.

Об этом, собственно, речь и шла с самого начала.
0
12.03.2016, 22:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2016, 22:08
Привет! Вот еще темы с ответами:

Определить, можно ли построить треугольник с длинами сторон, равным этим числам - C++
1)Даны три положительных числа. Определить, можно ли построить треугольник с длинами сторон, равным этим числам. Если можно, то ответить на...

Треугольник АВС задан длинами своих сторон. Найти углы треугольника - C++
помогите составить программу в С++ Треугольник АВС задан длинами своих сторон. Найти углы треугольника.

Треугольник задан длинами сторон; найти радиусы вписанной и описанной окружностей - C++
Добрый вечер! Помогите пожалуйста написать простенькую программу на с++ Не могу разобраться, может по вашему коду получится, заранее...

Треугольник ABC задан длинами свих сторон. Найти длину высоты, опущенной из вершины A. - C++
помогите пожалуйста решить задачки...очень надо а я незнаю и не понимаю как решить...заранее большое спасибо... задачки надо решить не...


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

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru