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

Исключение - C++

Восстановить пароль Регистрация
 
LexaB
0 / 0 / 0
Регистрация: 31.10.2011
Сообщений: 31
17.02.2013, 19:04     Исключение #1
Здравствуйте, помогите вставить в эту задачу исключения (числа не должны быть меньше равны 0). Задание вроде и не сложное но при использовании структуры вылетает куча ошибок. Подскажите пожалуйста.
Структура примерная:
C++
1
2
3
4
5
6
7
8
9
try
{
 throw 1;
}
catch(int a)
{
 cout << "Caught exception number:  " << a << endl;
 eturn;}
 cout << "No exception detected!" << endl;
Задача:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "conio.h"
#include "iostream.h"
#include "math.h"
using namespace std;
 
void main(){
    float S,a,b,c,p ;
    cin>>a;
    cin>>b;
    cin>>c;
 
 
    p=(a+b+c)/2;
    S=sqrt(p*(p-a)*(p-b)*(p-c));
    cout<<S;
    getch();
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 19:04     Исключение
Посмотрите здесь:

C++ необработаное исключение ?? оО
исключение C++
С++, отловить исключение C++
C++ Необработанное исключение
исключение в if - else - if C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
17.02.2013, 20:26     Исключение #2
LexaB, а так пойдет?

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
// up.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "math.h"
#include <iostream>
#include <iomanip>
#include <locale>
using namespace std;
 
void main()
{
    wcout.imbue(locale(".866"));
 
    float S, a, b, c, p;
 
    wcout << L"Введите а: ";
        cin >> a;
    wcout << L"Введите b: ";
        cin >> b;
    wcout << L"Введите c: ";
        cin >> c;
 
    try
    {
        if(a <= 0)
            throw L"\nПервый параметр <= 0!";
        else if(b <= 0)
            throw L"\nВторой параметр <= 0!";
        else if(c <= 0)
            throw L"\nТретий параметр <= 0!";
    }
    catch(const wchar_t  *report)
    {
        wcout << report << "\n";
    }
 
    p = (a + b + c) / 2;
    S = sqrt(p * (p - a) * (p - b) * (p - c));
    wcout << L"Результат: " << S << "\n\n";;
}
LexaB
0 / 0 / 0
Регистрация: 31.10.2011
Сообщений: 31
17.02.2013, 21:21  [ТС]     Исключение #3
благодарю, только не подскажете как запустить в C++ Builder 6, а то не работает...
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
17.02.2013, 21:30     Исключение #4
LexaB, тут я не советчик, я работал только с VS.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
17.02.2013, 21:43     Исключение #5
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
#include <cmath>
#include <stdexcept>
#include <iostream>
 
class ValidationError : public std::runtime_error
{
public:
    ValidationError(const char* msg) :
        std::runtime_error(msg)
    {
    }
};
 
class IOError : public std::runtime_error
{
public:
    IOError(const char* msg) :
        std::runtime_error(msg)
    {
    }
};
 
float readFloat(bool (*validationFunc)(float))
{
    float x;
    std::cin >> x;
 
    if(!std::cin)
        throw IOError("IOError");
 
    if(!validationFunc(x))
        throw ValidationError("ValidationError");
 
    return x;
}
 
bool isValid(float x)
{
    return x > 0;
}
 
int main()
{
    try
    {        
        float a = readFloat(isValid);
        float b = readFloat(isValid);
        float c = readFloat(isValid);
 
        const float p = (a + b + c) / 2;
        const float S = sqrt(p * (p - a) * (p - b) * (p - c));
 
        std::cout << S << '\n';
    }
 
    catch(std::runtime_error& e)
    {
        std::cerr << e.what() << '\n';
    }
}
Yandex
Объявления
17.02.2013, 21:43     Исключение
Ответ Создать тему
Опции темы

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