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

Проверка треугольника через исключения - C++

Восстановить пароль Регистрация
 
stal_in
1 / 1 / 0
Регистрация: 22.03.2011
Сообщений: 52
30.09.2013, 08:16     Проверка треугольника через исключения #1
Есть код который проверяет возможность создания треугольника из 3х чисел(сторон), но он работает с помощью условий. Как это все реализовать с помощью try throw & catch ?

С исключениями вообще работать не умею, гугл не помог, помогите пожалуйста.

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
#include <iostream>
 
int main()
{
    setlocale( LC_ALL,"Russian" );
    float a,b,c;
 
    printf("Вводи стороны типа: ");
    scanf("%f %f %f",&a,&b,&c);
 
    if(a >= b + c || b >= a + c || c >= b + a) // неравенство треугольника
    {   
        // это вообще не треугольник
        printf("Ваще не треугольник\n");
         
    } else if(a*a == b*b+c*c || b*b == a*a+c*c || c*c == b*b+a*a)
    {
        //прямоугольный
        printf("Прямоугольник типа\n");
         
    } else if(a*a > b*b+c*c || b*b > a*a+c*c || c*c > b*b+a*a)
    {
        //тупоугольный
        printf("А этот у нас тупой\n");
         
    } else
    {
        //остроугольный
        printf("А вот и остряк\n");
        
    }
 
    system("PAUSE");
    return 0;
    
}
Добавлено через 2 часа 18 минут
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
#include <iostream>
 
using namespace std;
int main()
{
setlocale( LC_ALL,"Russian" );
float a,b,c;
 
printf("Введите стороны: ");
scanf("%f %f %f",&a,&b,&c);
try{
    
if(a >= b + c || b >= a + c || c >= b + a) // неравенство треугольника
{ 
// это вообще не треугольник
throw 25;
 
} else if(a*a == b*b+c*c || b*b == a*a+c*c || c*c == b*b+a*a)
{
//прямоугольный
printf("Прямоугольный треугольник\n");
 
} else if(a*a > b*b+c*c || b*b > a*a+c*c || c*c > b*b+a*a)
{
//тупоугольный
printf("Тупоугольный треугольник\n");
 
} else
{
//остроугольный
printf("Остроугольный треугольник\n");
 
}
}
catch (int i) { // перехват ошибки
cout << "Caught an exception - value is: ";
cout << i << " \n";
}
cout << "25 Exception - Not a trangle \n";
system("PAUSE");
return 0;
 
}
Все, что сам смог придумать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2013, 08:16     Проверка треугольника через исключения
Посмотрите здесь:

Проверка условия существования треугольника C++
Нахождение площади через координаты треугольника C++
проверка треугольника C++
C++ Проверка входных данных: вызов и обработка исключения
Исключения. Проверка на правильность введения целого числа C++
Проверка треугольника через исключения C++
C++ Исключения и проверка ввода
Задать функцию которая возвращает частное деление двух чисел (обработка ошибок - через исключения) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AntonChik
1083 / 581 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
30.09.2013, 09:26     Проверка треугольника через исключения #2
вообще мне кажется все это тупо.
совсем обойтись без условий не получится, т.к. на них строится логика. условия можно перенести, спрятать, завуалировать, но они будут, либо будут только простые или нелогичные действия.

например, в теле try мы рассчитаем углы треугольника и будем пробовать делить константу на (угол - 90) т.е. если нам попадется прямой угол мы словим исключение "деление на ноль", и опираясь на ID этого исключения(но здесь как раз и будет задействовано условие) можно делать какие-то выводы.
и т.д.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
30.09.2013, 10:33     Проверка треугольника через исключения #3
Как вариант, но исключения для таких целей не используют:
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
#include<iostream>
class Error{};
int main()
{
    //setlocale( LC_ALL,"Russian" );
    system("chcp 1251>0");
    float a,b,c;
    Error Er;
 
    printf("Вводи стороны типа: ");
    scanf("%f %f %f",&a,&b,&c);
 
try
{
    if(a >= b + c || b >= a + c || c >= b + a) // неравенство треугольника
        throw Er;
}
catch(Error)
{
    std::cout << "Треугольник с введенными параметрами не может быть задан!" << std::endl;
    system("pause");
    exit(1);
}
    if(a*a == b*b+c*c || b*b == a*a+c*c || c*c == b*b+a*a)
    {
        //прямоугольный
        printf("Прямоугольник типа\n");
 
    } else if(a*a > b*b+c*c || b*b > a*a+c*c || c*c > b*b+a*a)
    {
        //тупоугольный
        printf("А этот у нас тупой\n");
 
    } else
    {
        //остроугольный
        printf("А вот и остряк\n");
 
    }
 
    system("PAUSE");
    return 0;
 
}
Yandex
Объявления
30.09.2013, 10:33     Проверка треугольника через исключения
Ответ Создать тему

Метки
исключение
Опции темы

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