Форум программистов, компьютерный форум CyberForum.ru

Определить прямоугольность треугольника по трём сторонам - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
04.10.2010, 13:31     Определить прямоугольность треугольника по трём сторонам #1
Сделал сам, но работает только при том условии, когда сторона "А" - это гипотенуза.
Помогите, плз, чтоб программа работала для трёх любых введённых сторон.


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// bl.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "conio.h"
#include "math.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    float A;
    do
    {
        printf("\n BBeDuTe cTopoHy A: ");
        scanf("%f",&A);
        if(A<=0)
        {
            printf("OIIIu6Ka");
        }
    }while(A<=0);
    printf("CTOPOHA A=%f",A);
 
    float B;
    do
    {
        printf("\n BBeDuTe cTopoHy B: ");
        scanf("%f",&B);
        if(B<=0)
        {
            printf("OIIIu6Ka");
        }
    }while(B<=0);
    printf("CTOPOHA B=%f",B);
 
    float C;
    do
    {
        printf("\n BBeDuTe cTopoHy C: ");
        scanf("%f",&C);
        if(C<=0)
        {
            printf("OIIIu6Ka");
        }
    }while(C<=0);
    printf("CTOPOHA C=%f",C);
 
    do
    {
        if(A==sqrt(B*B+C*C))
        {
            printf("\n TpeyroJIbHuK IIp9IMoyroJIbHblu");
        }
    }while(A==sqrt(B*B+C*C));
        printf("\n TpeyroJIbHuK HE IIp9IMoyroJIbHblu");
    getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2010, 13:31     Определить прямоугольность треугольника по трём сторонам
Посмотрите здесь:

Найти площадь треугольника по заданным двум сторонам и углу между ними. C++
C++ Нахождение углов треугольника по трем его сторонам
C++ Вывести три числа, которые будут равны сторонам треугольника
C++ Найти площадь пятиугольника (определить функцию для расчёта площади треугольника по трём сторонам)
Упростить код вычисления трёх высот треугольника по трём сторонам C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
04.10.2010, 13:41     Определить прямоугольность треугольника по трём сторонам #2
C
1
if(A==sqrt(B*B+C*C) || B==sqrt(A*A+C*C) || C==sqrt(B*B+A*A))
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
04.10.2010, 13:48     Определить прямоугольность треугольника по трём сторонам #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool isRect(double hyp, double cat1, double cat2)
{
    return (hyp*hyp == cat1*cat1 + cat2*cat2);
}
 
int main()
{
    double  a, b, c;
    std::cin>>a>>b>>c;
    if(a > b && a > c)
        std::cout<<(isRect(a, b, c) ? "true" : "false");
    else if(b > a && b > c)
        std::cout<<(isRect(b, a, c) ? "true" : "false");
    else if(c > a && c > b)
        std::cout<<(isRect(c, a, b) ? "true" : "false");
}
Day, ну и зачем так нагружать процессор ненужными расчетами?
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
04.10.2010, 13:54     Определить прямоугольность треугольника по трём сторонам #4
M128K145, мой процессор выдерживает. Даже не пищит.
А у тебя чуток не получится, ежели пара сторон одинаковые.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.10.2010, 13:56     Определить прямоугольность треугольника по трём сторонам #5
C++
1
return (a*a==b*b+c*c)|(a*a+c*c==b*b)|(a*a+b*b==c*c);
. И никаких гвозёв.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
04.10.2010, 13:58     Определить прямоугольность треугольника по трём сторонам #6
Day, читайте мою подпись.
Мне не сложно поставить после 15 строки запись
C++
1
2
else
    std::cout<<"false";
А если ваш код в цикле запустить?


Цитата Сообщение от taras atavin Посмотреть сообщение
C++
1
return (a*a==b*b+c*c)|(a*a+c*c==b*b)|(a*a+b*b==c*c);
taras atavin, к чему битовые операции?
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
04.10.2010, 14:01     Определить прямоугольность треугольника по трём сторонам #7
А чтоб не греть процессор
C
1
2
3
4
A2 = A*A;
B2 = B*B;
C2 = C*C;
return (A2==B2+C2) |  (B2==A2+C2) | (C2==B2+A2)
Но совершенству нет предела...
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.10.2010, 14:03     Определить прямоугольность треугольника по трём сторонам #8
M128K145, а к чему задача? Любая из сторон может быть гипотенузой, тогда её квадрат равен сумме квадратов катетов. Вот я и проверяю все три варианта. А если ни один не проходит, то это всё, что угодно, но не прямоугольный треугольник.

Добавлено через 37 секунд
Цитата Сообщение от Day Посмотреть сообщение
А чтоб не греть процессор
А мой вариант греет?
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
04.10.2010, 20:11  [ТС]     Определить прямоугольность треугольника по трём сторонам #9
Так что в итоге является оптимальным вариантом?)
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
04.10.2010, 21:38     Определить прямоугольность треугольника по трём сторонам #10
<<FIRsT BLooD>>, оптимальным с точки зрения чего?
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
05.10.2010, 11:34  [ТС]     Определить прямоугольность треугольника по трём сторонам #11
Цитата Сообщение от M128K145 Посмотреть сообщение
<<FIRsT BLooD>>, оптимальным с точки зрения чего?
В целом. Какой вариант мне взять?
Напишите, плз, готовый вариант полной программы.
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
07.10.2010, 07:13  [ТС]     Определить прямоугольность треугольника по трём сторонам #12
?????
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
07.10.2010, 08:32     Определить прямоугольность треугольника по трём сторонам #13
<<FIRsT BLooD>>, у вас проблемы со вставкой двух строк в код?
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
08.10.2010, 10:29  [ТС]     Определить прямоугольность треугольника по трём сторонам #14
Какой из вышеперечисленных вариантов вставить?
murderer
3175 / 1398 / 69
Регистрация: 06.10.2010
Сообщений: 3,017
08.10.2010, 10:45     Определить прямоугольность треугольника по трём сторонам #15
Вот так должно работать шустрее
C
1
2
3
4
A2 = A*A;
B2 = B*B;
C2 = C*C;
return ((A2-B2-C2)&(B2-A2-C2)&(C2-B2-A2))==0;
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
08.10.2010, 12:42     Определить прямоугольность треугольника по трём сторонам #16
Цитата Сообщение от <<FIRsT BLooD>> Посмотреть сообщение
В целом. Какой вариант мне взять?
Напишите, плз, готовый вариант полной программы.
Есть подозрение, что стартовая программа написана кем то другим\
murderer
3175 / 1398 / 69
Регистрация: 06.10.2010
Сообщений: 3,017
08.10.2010, 12:54     Определить прямоугольность треугольника по трём сторонам #17
Очень интересный цикл у него
C
1
2
3
4
5
6
7
do
        {
                if(A==sqrt(B*B+C*C))
                {
                        printf("\n TpeyroJIbHuK IIp9IMoyroJIbHblu");
                }
        }while(A==sqrt(B*B+C*C));
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
08.10.2010, 13:19  [ТС]     Определить прямоугольность треугольника по трём сторонам #18
murderer, нам препод показал шаблоны, вот я и составил по ним, как ты сказал, "стартовую программу". Он всем разные задачи раздал.

LineStown, ок, а его в конец вставлять?
murderer
3175 / 1398 / 69
Регистрация: 06.10.2010
Сообщений: 3,017
08.10.2010, 13:25     Определить прямоугольность треугольника по трём сторонам #19
Короче

C
1
2
3
4
5
6
7
A2 = A*A;
B2 = B*B;
C2 = C*C;
if (((A2-B2-C2)&(B2-A2-C2)&(C2-B2-A2))==0)
    printf("\n TpeyroJIbHuK IIp9IMoyroJIbHblu");
else
   printf("\n TpeyroJIbHuK HE IIp9IMoyroJIbHblu");
Так понятно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2010, 19:13     Определить прямоугольность треугольника по трём сторонам
Еще ссылки по теме:

C++ Возможность существования треугольника по сторонам
C++ Построение треугольника по трем сторонам, найти площадь
C++ Найти максимальную площадь треугольника по двум его сторонам

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

Или воспользуйтесь поиском по форуму:
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
26.10.2010, 19:13  [ТС]     Определить прямоугольность треугольника по трём сторонам #20
Нет.
вставляю в конце, он мне 13 ошибок выдаёт.
И вообще у меня вроде как нет if/else...
С++ надо, а не просто С.

Оч прошу вставить что куда надо в мою недопрогу в 1 посте, буду очень признателен.

Добавлено через 1 час 50 минут
+
чем быстрее, тем лучше)
Yandex
Объявления
26.10.2010, 19:13     Определить прямоугольность треугольника по трём сторонам
Ответ Создать тему
Опции темы

Текущее время: 04:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru