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

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

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

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

30.09.2013, 08:16. Просмотров 663. Ответов 2

Есть код который проверяет возможность создания треугольника из 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;
 
}
Все, что сам смог придумать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2013, 08:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка треугольника через исключения (C++):

Проверка треугольника через исключения - C++
Есть код который проверяет возможность создания треугольника из 3х чисел(сторон), но он работает с помощью условий. Как это все реализовать...

Исключения и проверка ввода - C++
Вот прочитал вчера много всего про исключения в с++, посмотрел несколько видеоуроков, все равно никак не пойму, какой выигрыш от...

Исключения. Проверка на правильность введения целого числа - C++
Надо сделать в программе несколько исключений. Одно из них должно срабатывать если вместо числа(int) будет введено число с точкой(float,...

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

Восстановление типа исключения через ссылку - C++
востановление типа исключения через ссылку не совсем понимаю, что за объект создается в catch при ловле базового исключения: struct...

проверка треугольника - C++
Всем привет! Народ, а как правильно проверить существует ли треугольник, у меня в этом ошибка #include&lt;iostream.h&gt; #include&lt;conio.h&gt; ...

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

например, в теле try мы рассчитаем углы треугольника и будем пробовать делить константу на (угол - 90) т.е. если нам попадется прямой угол мы словим исключение "деление на ноль", и опираясь на ID этого исключения(но здесь как раз и будет задействовано условие) можно делать какие-то выводы.
и т.д.
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 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;
 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2013, 10:33
Привет! Вот еще темы с ответами:

Проверка условия существования треугольника - C++
нужно написать программу Даны 3 числа, определить могут ли эти числа являться сторонами треугольника

Задать функцию которая возвращает частное деление двух чисел (обработка ошибок - через исключения) - C++
Ребят,срочно нужнатваша помощ.Задать функцию,которая возвращает частное деление двух чисел.Обработку ошибок реализовать через...

Найти периметр треугольника через функцию - C++
Ребят, сижу на зачете, помогите пожалуйста! :) Найти периметр треугольника, заданного координатами своих вершин. Определить функцию...

Нахождение площади через координаты треугольника - C++
Здравствуйте, есть задание Напишите функцию square, вычисляющую площадь треугольника. С ее помощью для каждой из N точек определите,...


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

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

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