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

Exception Handling Classes - C++

27.09.2015, 17:40. Просмотров 744. Ответов 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;
};
Подскажите в чем ошибка.Спасибо.
http://www.cyberforum.ru/cpp-beginners/thread1525130.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2015, 17:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Exception Handling Classes (C++):

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...

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

5
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 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
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 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
Привет! Вот еще темы с решениями:

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

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

STL & classes
Товарищи, выручайте. Ситуация следующая. Имеется два *.h файла, в каждом файле...

Ошибка дружественной фунци: a managed type cannot have any friend functions/classes/interfaces
public ref class Person { friend ofstream&amp; operator&lt;&lt;(ofstream&amp; o,Person...


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

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

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