Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Rabbit
0 / 0 / 1
Регистрация: 05.09.2015
Сообщений: 51
1

Exception Handling Classes

27.09.2015, 17:40. Просмотров 872. Ответов 5
Метки нет (Все метки)

Задача:
Write a program that prompts the user to enter a person’s date of birth in numeric form such as 8-27-1980. The program then outputs the date of birth in the form: August 27, 1980. Your program must contain at least two exception classes: invalidDay and invalidMonth. If the user enters an invalid value for day, then the program should throw and catch an invalidDay object. Similar conventions for the invalid values of month and year. (Note that your program must handle a leap year.)

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
#include <iostream>
#include<iomanip>
using namespace std;
 
 
 
 
int main()
{
    int day,month, year;
 
    cout<<"Please input date of birth mm-dd-yy:";
    cin>>month>>day>>year;
 
    cout<<endl;
    try {
    
        
    string monthstring;
 
     switch(month){
        case 1: monthstring = "January";
            break;
        case 2: monthstring = "February";
            break;
        case 3: monthstring = "March";
            break;
        case 4: monthstring = "April";
            break;
        case 5: monthstring = "May";
            break;
        case 6: monthstring = "June";
            break;
        case 7: monthstring = "July";
            break;
        case 8: monthstring = "August";
            break;
        case 9: monthstring = "September";
            break;
        case 10: monthstring = "October";
            break;
        case 11: monthstring = "November";
            break;
        case 12: monthstring = "December";
            break;
        default:  monthstring = "Invalid Month";
            break;
    }
    
    
    cout<<monthstring<<" "<<day<<", "<<year;
 
    }
    catch(invalidday x)
    {
        cout<<x.what()<<endl;;
    }
    
    catch(invalidmonth y)
    {
        cout<<y.what()<<endl;;
    }
    return 0;
}
 
class invalidday
{
public:
    
    invalidday()
    {
        message = "Invalid day";
    }
    
    invalidday(int day)
    {
        message = day;
    }
 
    string what()
    {
        return message;
    }
    
private:
    string message;
 
};
 
class invalidmonth
{
public:
    invalidmonth()
    {
        message = "Invalid month";
    }
    
    invalidmonth(int month)
    {
        message = month;
    }
    
    string what() 
    {
        return message;
    }
    
private:
    string message;
};
Подскажите в чем ошибка.Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2015, 17:40
Ответы с готовыми решениями:

Exception Handling. Собственный класс для перехвата исключений
Помогите, пожалуйста, с данной задачей. Задача: Define an exception class...

Templates (composition). exception handling run-time error
Код компилируется. Если делать циклы для push and pop размера такого чтоб не...

First chance exception at $77ADB09E. Exception class EAccessViolation with message 'Access Violation'. Process
Объясните в каких случаях возникает эта ошибка, из-за чего? Как справиться с...

Выдаёт ошибку "Unhandled exception at 0x00007F exception: std::bad_alloc in memory location"
Добрый день, друзья не могли бы помочь разобраться, почему выдаёт такую ошибку?...

If a function throws an exception that is not listed in the function exception-specification list
Вопрос: if a function throws an exception that is not listed in the function...

5
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
27.09.2015, 17:54 2
Цитата Сообщение от Rabbit Посмотреть сообщение
Подскажите в чем ошибка.Спасибо.
Ошибка в том, что ты не указал как она (ошибка) проявляется. Пожалуйста.
0
Rabbit
0 / 0 / 1
Регистрация: 05.09.2015
Сообщений: 51
27.09.2015, 18:59  [ТС] 3
А можно пжл поподробнее
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
27.09.2015, 19:17 4
Цитата Сообщение от Rabbit Посмотреть сообщение
А можно пжл поподробнее
Я вот тоже этого бы хотел.
Обычно когда просят найти причину ошибки, описывают существующее и желаемое поведение. Желаемое поведение описано (хоть и на английском), а вот имеющееся - нет. Например, ввожу то-то и то-то, ожидаю это, а получаю другое. И т.п.
0
Rabbit
0 / 0 / 1
Регистрация: 05.09.2015
Сообщений: 51
28.09.2015, 04:39  [ТС] 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
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
#include <iostream>
#include <cmath>
#include<iomanip>
using namespace std;
 
 
 
 
int main()
{
    int day,month, year;
 
 
    try {
 
    cout<<"Please input date of birth mm-dd-yy:";
    cin>>month>>day>>year;
 
    cout<<endl;
 
    if(month <=0 || month >12)
        throw invalidmonth();
    else if(day <=0||day>31 )
        throw invalidday();
 
    string monthstring;
 
     switch(month){
        case 1: monthstring = "January";
            break;
        case 2: monthstring = "February";
            break;
        case 3: monthstring = "March";
            break;
        case 4: monthstring = "April";
            break;
        case 5: monthstring = "May";
            break;
        case 6: monthstring = "June";
            break;
        case 7: monthstring = "July";
            break;
        case 8: monthstring = "August";
            break;
        case 9: monthstring = "September";
            break;
        case 10: monthstring = "October";
            break;
        case 11: monthstring = "November";
            break;
        case 12: monthstring = "December";
            break;
        default:  monthstring = "Invalid Month";
            break;
    }
 
 
    cout<<monthstring<<" "<<day<<", "<<year;
 
    }
    catch(invalidday x)
    {
        cout<<x.what()<<endl;;
    }
 
    catch(invalidmonth y)
    {
        cout<<y.what()<<endl;;
    }
    return 0;
}
 
class invalidday
{
public:
 
    invalidday()
    {
        message = "Invalid day";
    }
 
    invalidday(int day)
    {
        message = day;
    }
 
    string what()
    {
        return message;
    }
 
private:
    string message;
 
};
 
class invalidmonth
{
public:
    invalidmonth()
    {
        message = "Invalid month";
    }
 
    invalidmonth(int month)
    {
        message = month;
    }
 
    string what()
    {
        return message;
    }
 
private:
    string message;
};
Вот в этом сегменты пишет: 'invalidday' was not declared in this scope

if(month <=0 || month >12)
throw invalidmonth();
else if(day <=0||day>31 )
throw invalidday();
Добавлено через 5 минут
Что-то в классах не так.
0
Fasterbru
5 / 5 / 4
Регистрация: 18.11.2014
Сообщений: 81
28.09.2015, 04:51 6
Классы которые используются должны быть объявлены раньше, а у вас они объявлены позже. Вам выше нужно сделать прототипы:
C++
1
2
class invalidday;
class invalidmonth;
0
28.09.2015, 04:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2015, 04:51

Visual C/C++ Classes
Уважаемые программисты! :gsmile: Помогите, пожалуйста, разобраться с...

classes, конструкторы..
Привет.. В общем такая фигня. Вот код: Employee.h: class Employee {...

push_back() and vector of classes
Добрый вечер! Есть код следующего вида: class topic_message { public: ...


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

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

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