Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
f0rEsT93
1 / 1 / 1
Регистрация: 06.08.2013
Сообщений: 13
1

Метки и вывод наименьшего угла треугольника

26.01.2014, 14:09. Просмотров 362. Ответов 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
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <iostream>
using namespace std;
//test on existnce triangle
bool testtriangle(float a, float b, float c){
    bool result;
    if(((a+b)>=c) && ((a+c)>=b) && ((b+c)>=a)){//uslovue na sushestvovanie if (a<(c+b)) and (b<(a+c)) and (c<(a+b))
        result = true;
    }else{
        result = false;
    }
return result;
}
 
int ugol(float a, float b, float c){
    float cos, result=0;
    //int result;
    if(a>c){
        float temp=a;
        a=c;
        c=temp;
        //temp=0;
    }
    if(b>c){
        float temp=b;
        b=c;
        c=temp;
    }
    if((a+b)>c){
        cos=(a*a+b*b-c*c);
        //if(cos>0) result=cos;
        //return result;
    }   
    
    /*if((a+c)>b){
        cos=((a*a+c*c-b*b)/2*a*c);
            if(cos>0){
            result=cos;
        }
    }
    if((b+c)>a){
        cos=((b*b+c*c-a*a)/2*b*c);
            if(cos>0){
            result=cos;
        }
    }*/
    //if(cos>0)result=cos;
return cos;
}
 
bool testing(int cos){
    bool result;
    if(cos>0){
        return result=true;
    }else{
        return result=false;
    }
    return result;
}
 
//main code
int main(){
    float a, b, c, cos, min=180, x,y,z;
    bool test, ugolcos;
    int answer=0;
again:cout<<"Input sides for triangle: ";
        a=0;b=0;c=0;cos=0;
        cin>>a>>b>>c;
        test=testtriangle(a, b, c); //существование треугольника
        if (test==true){
            cos=ugol(a, b, c);//поиск угла
            ugolcos=testing(cos);//проверка на острый угол
            cout<<"Triangle is existence: "<<a<<" "<<b<<" "<<c<<" "<<"\n";
                if(ugolcos==true){
                    if(ugolcos<min){min=cos;}
                    
                }else{
                        cout<<"Ne iavliaetsia ostrim \n";
                        goto again;
                }
                //x=a;y=b;z=c;
                //cout<<"Triangle is existence: "<<x<<" "<<y<<" "<<z<<" "<<"\n";
                cout<<"Minimal ugol is: "<<min<<"\n";
 
            //many triangles
            cout<<"Try again? (1 - yes / 0 - exit) \n";
            cin>>answer;
            if (answer==1){ 
                //a=0;b=0;c=0;cos=0;//reseting parametres
                goto again;
            }
            if (answer==0){
                //break;
                goto endmin;
                //return 0;
            }
            x=a;y=b;z=c;
        }
        //exit if not existence triangle
        if (test==false){
            cout<<"Trinagle not existence... Try again? (1 - yes / 0 - exit) \n";
            cin>>answer;
            if (answer==1){
                cout<<"Triangle is existence: "<<x<<" "<<y<<" "<<z<<" "<<"\n";
                cout<<"Minimal ugol is: "<<min<<"\n";
            //if(answer==1){
                goto again;
            };
            if (answer==0){
                //break;
                goto endmin;
                //return 0;
            }
            
        }
        
endmin:cout<<"Triangle is existence: "<<x<<y<<z<<"\n";
cout<<"Minimal ugol is: "<<min<<"\n";
system("pause");
return 0;
}
Прошу помогите пожалуйста исправить, где ошибка не могу понять ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2014, 14:09
Ответы с готовыми решениями:

Определить номер строки и столбца наименьшего из элементов верхнего треугольника.
Определить номер строки и столбца наименьшего из элементов верхнего...

Даны два угла треугольника (в градусах). Определить существует ли такой треугольник
10 Даны два угла треугольника (в градусах). Определить существует ли такой...

Даны два угла треугольника (в градусах ). Определить существует ли такой треугольник
2. Даны два угла треугольника (в градусах ). Определить существует ли такой...

Найти (в градусах, минутах и секундах) все угла треугольника, вершины которого заданы координатами (x1, y1), (x2, y2), (x3, y3)
Найти (в градусах, минутах и секундах) все угла треугольника, вершины которого...

Даны два угла треугольника (в градусах ). Определить существует ли такой треугольник. Если да, то будет ли он прямоугольным.
Даны два угла треугольника (в градусах ). Определить существует ли такой...

8
Kuzia domovenok
2337 / 2079 / 487
Регистрация: 25.03.2012
Сообщений: 7,436
Записей в блоге: 1
26.01.2014, 15:44 2
В чём суть ошибки?

Добавлено через 2 минуты
Почему ugol возвращает int?

Добавлено через 4 минуты
Почему bool ugolcos сравнивается с float min?
0
f0rEsT93
1 / 1 / 1
Регистрация: 06.08.2013
Сообщений: 13
26.01.2014, 15:46  [ТС] 3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
В чём суть ошибки?
при вводе 1 2 3 ошибка возникает, торопился завтра надо сдавать вот и невнимательно напечатал ..

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Почему bool ugolcos сравнивается с float min?
исправил на if(cos<min)
0
Kuzia domovenok
2337 / 2079 / 487
Регистрация: 25.03.2012
Сообщений: 7,436
Записей в блоге: 1
26.01.2014, 15:50 4
Почему в програме активно используются булевы переменные, но им присваивается только true либо false?

Добавлено через 3 минуты
А разве у минимального угла косинус минимален? Сравни косинус 60ти гр. и косинус 120ти
0
f0rEsT93
1 / 1 / 1
Регистрация: 06.08.2013
Сообщений: 13
26.01.2014, 15:56  [ТС] 5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Почему в програме активно используются булевы переменные, но им присваивается только true либо false?
я начал недавно изучение Си... вернее проходить мы начали... только показали пару примеров и все... ..да и в последний раз я около полу года, года сидел за Pascal ABC....
оффтоп..встречные парочка вопросов: 1-можно ли исправить как то код, не много ли придется править; 2- можете ли посоветовать какие набудь толковые самоучители...?

Добавлено через 3 минуты
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А разве у минимального угла косинус минимален? Сравни косинус 60ти гр. и косинус 120ти
я только sqrt(3)/2 нашел для 60 - поставил значение 90 вместо 180 ... хотя знаю , что не правильно, можете исправленные участки показать?...или хотя бы показать...подтолкнуть в нужном направлении? код снова писать придется? или половина правильного в этом етсь?
0
Kuzia domovenok
2337 / 2079 / 487
Регистрация: 25.03.2012
Сообщений: 7,436
Записей в блоге: 1
26.01.2014, 16:12 6
Косинус 60гр это 0.5 !
И косинус убывающая функция! (т.е. Для минимального угла надо искать макс. Косинус)

Егэ по математике как сдавать будешь?!
Программу целиком не напишу, сижу на форуме с мобильника!
0
f0rEsT93
1 / 1 / 1
Регистрация: 06.08.2013
Сообщений: 13
26.01.2014, 16:15  [ТС] 7
спасибо за ответ, очень признателен...
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
сижу на форуме с мобильника!
если будет возможность, буду благодарен за код ....
0
AndrSlav
65 / 53 / 14
Регистрация: 20.12.2013
Сообщений: 429
26.01.2014, 16:27 8
Цитата Сообщение от f0rEsT93 Посмотреть сообщение
Треугольник задается координатами своих вершин.
Цитата Сообщение от f0rEsT93 Посмотреть сообщение
again:cout<<"Input sides for triangle: ";
Какое-то несоответствие, вроде. Если координаты вводятся, то их 6 или 9 должно быть, а не 3 для треугольника.
0
f0rEsT93
1 / 1 / 1
Регистрация: 06.08.2013
Сообщений: 13
26.01.2014, 17:06  [ТС] 9
Цитата Сообщение от AndrSlav Посмотреть сообщение
Какое-то несоответствие, вроде. Если координаты вводятся, то их 6 или 9 должно быть, а не 3 для треугольника.
возможно и так. Мне уже не успеть все переписать, но я был бы рад хотя бы части кода
0
26.01.2014, 17:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2014, 17:06

Как найти вершины прямоугольного треугольника через вершину прямого угла, катет и известные значения углов
https://pp.userapi.com/c824203/v824203420/3ab57/Cm9LlhdgdfA.jpg...

Написать программу вычисления площади треугольника, если известно длины двух сторон и величина угла между ними.
Написать программу вычисления площади треугольника, если известно длины двух...

Вывод наименьшего и наибольшего чисел
Пользователь вводит числа заканчивая введение нулем. Вывести на экран...


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

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

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