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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
#1

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

04.10.2010, 13:31. Просмотров 1786. Ответов 28
Метки нет (Все метки)

Сделал сам, но работает только при том условии, когда сторона "А" - это гипотенуза.
Помогите, плз, чтоб программа работала для трёх любых введённых сторон.


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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2010, 13:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить прямоугольность треугольника по трём сторонам (C++):

Найти площадь пятиугольника (определить функцию для расчёта площади треугольника по трём сторонам) - C++
даны вещественные числа a.b.c.d.e Найти площадь пятиугольника ,(определить функцию для расчёта площади треугольника по трём сторонам) в...

Упростить код вычисления трёх высот треугольника по трём сторонам - C++
Здравствуйте! Имеется код вычисления трёх высот треугольника по трём сторонам. Можно ли упростить его использовав одну функцию общую...

Реализовать функцию нахождения площади треугольника по трём известным сторонам - C++
Народ, решите пожалуйста! Сам не успеваю, очень прошу! Разработать функцию f(x, у, z), которая по длинам сторон треугольника х, у, z...

Определить вид треугольника по его сторонам - C++
Помогите кто-нибудь Даны три числа.Если они могут быть длинами сторон треугольника,определите его...

Возможность существования треугольника по сторонам - C++
Определить возможность существования треугольника по сторонам. Треугольник существует только тогда, когда сумма любых двух его сторон...

По заданным сторонам треугольника вычисить высоты - C++
Напишите программу которая по заданным сторонам треугольника a,b,c вычисляет длины высот проведенных к этим сторонам.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
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))
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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, ну и зачем так нагружать процессор ненужными расчетами?
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
04.10.2010, 13:54 #4
M128K145, мой процессор выдерживает. Даже не пищит.
А у тебя чуток не получится, ежели пара сторон одинаковые.
0
taras atavin
Ушёл с форума.
3569 / 1753 / 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);
. И никаких гвозёв.
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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, к чему битовые операции?
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
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)
Но совершенству нет предела...
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.10.2010, 14:03 #8
M128K145, а к чему задача? Любая из сторон может быть гипотенузой, тогда её квадрат равен сумме квадратов катетов. Вот я и проверяю все три варианта. А если ни один не проходит, то это всё, что угодно, но не прямоугольный треугольник.

Добавлено через 37 секунд
Цитата Сообщение от Day Посмотреть сообщение
А чтоб не греть процессор
А мой вариант греет?
0
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
04.10.2010, 20:11  [ТС] #9
Так что в итоге является оптимальным вариантом?)
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
04.10.2010, 21:38 #10
<<FIRsT BLooD>>, оптимальным с точки зрения чего?
0
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
05.10.2010, 11:34  [ТС] #11
Цитата Сообщение от M128K145 Посмотреть сообщение
<<FIRsT BLooD>>, оптимальным с точки зрения чего?
В целом. Какой вариант мне взять?
Напишите, плз, готовый вариант полной программы.
0
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
07.10.2010, 07:13  [ТС] #12
?????
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.10.2010, 08:32 #13
<<FIRsT BLooD>>, у вас проблемы со вставкой двух строк в код?
0
<<FIRsT BLooD>>
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 19
08.10.2010, 10:29  [ТС] #14
Какой из вышеперечисленных вариантов вставить?
0
murderer
3197 / 1420 / 72
Регистрация: 06.10.2010
Сообщений: 3,073
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;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2010, 10:45
Привет! Вот еще темы с ответами:

Нахождение углов треугольника по трем его сторонам - C++
На данный момент у меня получается вот так.. На форуме есть подобная тема но она на языке паскаль...

Построение треугольника по трем сторонам, найти площадь - C++
Запутался с написанием программы Помогите! Даны три числа. Если они могут быть длинами сторон разностороннего остроугольного...

Найти максимальную площадь треугольника по двум его сторонам - C++
Формат ввода Первая строка ввода содержит два целых числа A и B (1 ≤ A, B ≤ 109) – заданные длины сторон. Формат вывода Вывести одно...

Написать функцию, вычисляющую по заданным сторонам треугольника его площадь - C++
Написать функцию, вычисляющую по заданным сторонам треугольника его площадь


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.10.2010, 10:45
Ответ Создать тему
Опции темы

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