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

C для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Nik789
1 / 1 / 0
Регистрация: 21.10.2014
Сообщений: 15
#1

Могут ли три числа представлять стороны прямоугольного треугольника? - C (СИ)

21.10.2014, 15:51. Просмотров 797. Ответов 19
Метки нет (Все метки)

Задача № 2 Составить программу, считывает три ненулевых целых числа, определяет и печатает, могут ли они представлять стороны прямоугольного треугольника.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2014, 15:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Могут ли три числа представлять стороны прямоугольного треугольника? (C (СИ)):

Найти стороны равнобедренного прямоугольного треугольника - C (СИ)
В равнобедренном прямоугольном треугольнике известна высота h, опущенная на гипотенузу. Найти стороны треугольника.

Определить, могут ли три точки с координатами являться вершинами треугольника - C (СИ)
Добрый день. Помогите с программой. Определить, могут ли три точки с координатами (x1, y1), (x2, y2), (x3, y3) являться вершинами...

Вычислить площадь треугольника, если известны три его стороны - C (СИ)
Вычислить площадь треугольника, если известны три его стороны Прошу написать на C(Без+).

Проверить, могут ли числа быть сторонами треугольника - C (СИ)
Даны три положительных числа a, b, c. Проверить будут ли они сторонами треугольника? Если да, то вычислить площадь этого треугольника. ...

Ввести стороны равностороннего треугольника. Найти площадь этого треугольника и его высоту - C (СИ)
В универе на первом курсе в первый день сразу задали лабораторную помогите решить на си задачу: Ввести стороны равностороннего...

Найти, Значение катетов прямоугольного треугольника - C (СИ)
Составить программу, в которой вводится значение катетов прямоугольного треугольника. Найти Вывести на экран значение гипотенузы и...

19
Andrej
И целого heap'а мало
94 / 55 / 9
Регистрация: 31.07.2014
Сообщений: 291
21.10.2014, 21:39 #2
Nik789, математика: неравенство треугольника. Если большая сторона меньше суммы других, то это треугольник.
0
_Ivana
3206 / 1834 / 153
Регистрация: 01.03.2013
Сообщений: 5,054
Записей в блоге: 4
22.10.2014, 04:52 #3
А если она еще и прямо меньше суммы двух других - то он прямо угольный.
0
kiff20072008
57 / 57 / 13
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 11:37 #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main()
{
    int a, b, c;
 
    printf("Input numbers\n");
    scanf("%i", &a);
    scanf("%i", &b);
    scanf("%i", &c);
 
    a *= a;
    b *= b;
    c *= c;
    if ((a == b + c) || (b == a + c) || (c == b + a))
        printf("Yes it is triangle");
    else
        printf("No");
    return 0;
 
 
}
1
ildwine
Модератор
2919 / 1773 / 639
Регистрация: 04.03.2013
Сообщений: 4,393
Записей в блоге: 1
22.10.2014, 19:08 #5
kiff20072008, наверное надо еще учесть что a, b, c не могут быть нулевыми:
C
1
if (((a == b + c) || (b == a + c) || (c == b + a)) && (a != 0) && (b != 0) && (c != 0))
Добавлено через 14 секунд
Иначе это не треугольник
1
kiff20072008
57 / 57 / 13
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 19:10 #6
ildwine, ну тогда они не могут быть еще и отрицательными
C
1
if (((a == b + c) || (b == a + c) || (c == b + a)) && (a > 0) && (b > 0) && (c > 0))
1
ildwine
Модератор
2919 / 1773 / 639
Регистрация: 04.03.2013
Сообщений: 4,393
Записей в блоге: 1
22.10.2014, 19:17 #7
kiff20072008, предлагаю проверять при вводе:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main()
{
    int a, b, c; 
    do {
        printf("Input numbers\n");
        scanf("%d", &a);
        scanf("%d", &b);
        scanf("%d", &c);
        if ((a <= 0) || (b <= 0) || (c <= 0)) printf("\nIncorrect input...");
    } while ((a <= 0) || (b <= 0) || (c <= 0));
    a *= a;
    b *= b;
    c *= c;
    if ((a == b + c) || (b == a + c) || (c == b + a))
        printf("Yes, it's right-angled triangle");
    else
        printf("No");
    return 0; 
}
2
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
22.10.2014, 19:19 #8
Цитата Сообщение от Andrej Посмотреть сообщение
Nik789, математика: неравенство треугольника. Если большая сторона меньше суммы других, то это треугольник.
Нет. Треугольник прямой. Поэтому по теореме Пифагора: квадрат гипотенузы равен сумме квадратов катетов. Гипотенуза - это всегда самая длинная сторона. Значит выбрать из трёх чисел самое большое и сравнить его квадрат с суммой квадратов двух других сторон.

Добавлено через 45 секунд
Цитата Сообщение от kiff20072008 Посмотреть сообщение
if ((a == b + c) || (b == a + c) || (c == b + a)) printf("Yes it is triangle");
Нет. Вырожденный теругольник прямоугольным быть не может.
0
ildwine
Модератор
2919 / 1773 / 639
Регистрация: 04.03.2013
Сообщений: 4,393
Записей в блоге: 1
22.10.2014, 19:33 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
taras atavin, вот поэтому я предлагаю отсечь вариант вырожденности при вводе... а проверять только теорему Пифагора.

Добавлено через 5 минут
А вообще, если строго следовать условию:
Цитата Сообщение от Nik789 Посмотреть сообщение
Составить программу, считывает три ненулевых целых числа, определяет и печатает, могут ли они представлять стороны прямоугольного треугольника
нужно действовать так, имхо:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
int main()
{
    int a, b, c; 
    do {
        printf("Input numbers\n");
        scanf("%d", &a);
        scanf("%d", &b);
        scanf("%d", &c);
        if ((a == 0) || (b == 0) || (c == 0)) printf("\nIncorrect input...");
    } while ((a == 0) || (b == 0) || (c == 0));
    if ((a < 0) || (b < 0) || (c < 0)) printf("No");
    else {
        a *= a;
        b *= b;
        c *= c;
        if ((a == b + c) || (b == a + c) || (c == b + a))
            printf("Yes, it's right-angled triangle");
        else printf("No");
    }   
    return 0; 
}
1
kiff20072008
57 / 57 / 13
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 19:39 #10
ildwine, да я думаю это идеально=)
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
22.10.2014, 20:41 #11
Цитата Сообщение от ildwine Посмотреть сообщение
taras atavin, вот поэтому я предлагаю отсечь вариант вырожденности при вводе... а проверять только теорему Пифагора.
Читай:
Цитата Сообщение от ildwine Посмотреть сообщение
if ((a == b + c) || (b == a + c) || (c == b + a)) printf("Yes, it's right-angled triangle");
. Так вот, если сторона равно сумме двух других, то треугольник вырожден, у него один угол 180 и два по нолю.
0
korvin_
2009 / 1496 / 235
Регистрация: 28.04.2012
Сообщений: 5,369
22.10.2014, 20:59 #12
Цитата Сообщение от ildwine Посмотреть сообщение
нужно действовать так, имхо
И зачем столько повторяющихся проверок? Тем более незачем проверять ((a < 0) || (b < 0) || (c < 0)) после выхода из цикла. Твой первый вариант был более правильный.

Кликните здесь для просмотра всего текста
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
#include <stdio.h>
 
int
main()
{
    int a, b, c, incorrect;
    do {
        printf("Input three numbers: ");
        scanf("%d %d %d", &a, &b, &c);
        incorrect = a <= 0 || b <= 0 || c <= 0;
        if (incorrect)
            printf("Incorrect input\n");
    } while (incorrect);
 
    a *= a;
    b *= b;
    c *= c;
    if (a == b+c || b == a+c || c == b+a)
        printf("Yes, it's right-angled triangle\n");
    else
        printf("No\n");
 
    return 0;
}
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
22.10.2014, 21:00 #13
Блин. Опять сторона его большая равна сумме двух других сторон.
0
kiff20072008
57 / 57 / 13
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 21:10 #14
ildwine, да я думаю это идеально=)taras atavin,
там в квадрат возводится
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
22.10.2014, 21:12 #15
Где?
Цитата Сообщение от ildwine Посмотреть сообщение
if ((a == b + c) || (b == a + c) || (c == b + a))
. Простая сумма и просто сторона.
0
22.10.2014, 21:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2014, 21:12
Привет! Вот еще темы с ответами:

Проверка прямоугольного треугольника через логику - C (СИ)
Всем привет) очередная проблема) Задачка такая даны 3 стороны нужно сказать треугольник равносторонний равнобедренный или прямоугольный. ...

Код прямоугольного треугольника заменить на равнобедренный - C (СИ)
#include &lt;stdio.h&gt; #include &lt;iostream.h&gt; #include &lt;conio.h&gt; void main(void) {int i,j,n,h; clrscr(); cout&lt;&lt;&quot;N=&quot;; cin&gt;&gt;n; ...

Вычислить периметр и площадь прямоугольного треугольника с катетами a и b - C (СИ)
Прохожу простые задачки ,помогите улучшить решение ,хотя бы совет :) // Вычислить периметр и площадь прямоугольного треугольника с...

Ввести катеты прямоугольного треугольника и на найти его площадь и гипотенузу - C (СИ)
help me , срочно выручайте 1) Ввести катеты прямоугольного треугольника.Найти его площадь и гипотенузу 2)Даны радиус круга и...


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

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

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