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

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

Войти
Регистрация
Восстановить пароль
 
Alexandr1966
26 / 26 / 1
Регистрация: 17.12.2012
Сообщений: 438
#1

Обработчики ошибок try catch - C++

03.10.2013, 09:05. Просмотров 872. Ответов 13
Метки нет (Все метки)

Друзья, вот есть задача у меня решенная, вот условие:
Справка о междугороднем телефонном разговоре содержит: номер телефона абонента (6 цифр), дату (год, месяц, день), время (час, минута), код города (3 цифры), номер телефона в другом городе (7 цифр), продолжительность разговора (в минутах), категорию (срочный, обычный) и тариф (плата в рублях за минуту). Определить дату такого телефонного разговора, которой является максимальным по продолжительности среди срочных разговоров за указанный месяц.

Вот код программы, всё вроде бы работает нормально:
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
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "string.h"
 
struct date
{
    int day;
    int month;
    int year;
};
 
struct time
{
    int hour;
    int minute;
};
 
struct spravka //определение структурных типов данных
{
    char number[12];
    struct date D;
    struct time T;
    char num_other[12];
    int kod;
    int time;
    char category[20];
    double tarif;
};
 
int main()
{
    struct spravka a[2];
    int i,m,k; FILE *fp, *pc;
    setlocale(LC_ALL, "rus");
    int max;
    fp=fopen("input.txt","w");//открываем файл для записи с клавиатуры
 
    for(i=0;i<3;i++)// вводим данные
    {
        printf("Разговор!!! \n");
        printf("Номер: ");
        scanf("%s", a[i].number);
        printf("День: ");
        scanf("%d", &a[i].D.day);
        printf("Месяц: ");
        scanf("%d", &a[i].D.month);
        printf("Год: ");
        scanf("%d", &a[i].D.year);
        printf("Час: ");
        scanf("%d", &a[i].T.hour);
        printf("Минута: ");
        scanf("%d", &a[i].T.minute);
        printf("Другой номер: ");
        scanf("%s", a[i].num_other);
        printf("Код: ");
        scanf("%d", &a[i].kod);
        printf("Продолжительность: ");
        scanf("%d", &a[i].time);
        printf("Категория: ");
        scanf("%s", a[i].category);
        printf("Тариф: ");
        scanf("%lf", &a[i].tarif);
        printf("\n");
}
 
    for(int i=0; i<3; i++)// обработка
    {
        fwrite((char*)&a[i],sizeof(a[i]),1,fp);//данные записываются в файл
    }
 
    fclose(fp);
 
    printf("Введите месяц: ");
    scanf("%d", &m);
    max=0;
    k=0;
    fp=fopen("input.txt","r");//открываем файл для чтения с клавиатуры
    pc=fopen("output.txt","w");//записать данные обработки в файл
    for(int i=0; i<2; i++)// обработка
    {
        fread((char*)&a[i],sizeof(a[i]),1,fp);
    }
 
    for(i=0;i<3;i++)    
    { 
        if ((a[i].D.month==m) && (a[i].time > max) && strcmp(a[i].category,"sr")==0) 
        {
            k=i;
            max=a[i].time;
        }
    }
    printf("---------------------------------------- \n");
    printf("Номер: %s \n", a[k].number);
    printf("ДЕНЬ.МЕСЯЦ.ГОД: %d.%d.%d \n", a[k].D.day, a[k].D.month, a[k].D.year);
    printf("ВРЕМЯ: %d:%d \n", a[k].T.hour, a[k].T.minute);
    printf("Код города: %d \n", a[k].kod);
    printf("Номер в другом городе: %s \n", a[k].num_other);
    printf("Продолжительность: %d \n", a[k].time);  
    printf("Категория разговора: %s \n", a[k].category);
    printf("Тариф: %f \n", a[k].tarif);
    fwrite((char*)&a[k],sizeof(a[i]),1,pc);//данные записываются в файл
    fclose(fp);
    fclose(pc);
    _getch();
    return 0;
}

Нужно сделать так, чтобы допустим при неправильном вводе ВХОДНЫХ ДАННЫХ выдавалась ошибка с помощью обработчиков TRY и CATCH, например НОМЕР ТЕЛЕФОНА у меня типа int, а если введу СИМВОЛ какой нибудь, то мне должно выдаваться сообщение об ошибке, как это реализовать я не знаю, может кто в курсе =)) В общем. на всех участках, где возможно сделать обработчик ошибок, прошу мне помочь)))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2013, 09:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обработчики ошибок try catch (C++):

отлов ошибок try, catch зачем он нужен? - C++
я вот пишу прогу, которая не отлавливает ошибку. try { int i=10; i=i/0; } catch(...) { printf(&quot;\n...

try-catch - C++
Доброго времени суток, начал изучать исключения, и вот есть такой код: // new.cpp : Defines the entry point for the console...

Try и catch - C++
Пытался сделать простую структуру,чтобы в блоке try задавалось значение переменной x, и если это значение равно,например, 5,то блок catch...

Try-catch - C++
Добрый вечер, #include &lt;iostream&gt; using namespace std; void F1(int); void F2(int, int); void F3(int, int, int);

try-catch - C++
Читаю книгу Страуструпа. Он пишет (стр 232), что можно не передавать обработчику исключений какое либо значение. #include...

TRY/CATCH - C++
Здравствуйте! У меня есть: MASS; для простоты пояснения, x=rand();y=rand(),znacheniye=rand(); Как игнорировать ошибки...

13
Rapsod
Волшебник
63 / 62 / 4
Регистрация: 21.11.2009
Сообщений: 319
03.10.2013, 09:19 #2
Alexandr1966, Вот пример как это делать: Обработчик ошибок
0
Alexandr1966
26 / 26 / 1
Регистрация: 17.12.2012
Сообщений: 438
03.10.2013, 16:24  [ТС] #3
ой, мне конечно стыдно просить, но все таки, можно в самом коде исправить во всех местах а, как нужно сделать, а то я вообще ооооочень плохо в С++, и мне нужно просто быстренько с этим заданием покончить, кому не трудно, помогите бедному студенту))

Добавлено через 2 часа 6 минут
ребяа подскажите а)

Добавлено через 4 часа 48 минут
есть те кто выручит?)
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 17:49 #4
Кликните здесь для просмотра всего текста
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
118
119
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include <stdio.h>
#include "string.h"
 
struct date
{
    int day;
    int month;
    int year;
};
 
struct time
{
    int hour;
    int minute;
};
 
struct spravka //определение структурных типов данных
{
    char number[12];
    struct date D;
    struct time T;
    char num_other[12];
    int kod;
    int time;
    char category[20];
    double tarif;
};
 
int main()
{
    struct spravka a[3];
    int i,m,k; FILE *fp, *pc;
    setlocale(LC_ALL, "rus");
    int max;
    fp=fopen("input.txt","w");//открываем файл для записи с клавиатуры
    try
    {
        for(i=0;i<3;i++)// вводим данные
        {
            printf("Разговор!!! \n");
            printf("Номер: ");
            scanf("%s", a[i].number);
            if (strlen(a[i].number) > 11) throw "Error!";
            printf("День: ");
            if (!scanf("%d", &a[i].D.day)) throw "Error!";
            printf("Месяц: ");
            if (!scanf("%d", &a[i].D.month)) throw "Error!";
            printf("Год: ");
            if (!scanf("%d", &a[i].D.year)) throw "Error!";
            printf("Час: ");
            if (!scanf("%d", &a[i].T.hour)) throw "Error!";
            printf("Минута: ");
            if (!scanf("%d", &a[i].T.minute)) throw "Error!";
            printf("Другой номер: ");
            scanf("%s", a[i].num_other);
            if (strlen(a[i].number) > 11) throw "Error!";
            printf("Код: ");
            if (!scanf("%d", &a[i].kod)) throw "Error!";
            printf("Продолжительность: ");
            if (!scanf("%d", &a[i].time)) throw "Error!";
            printf("Категория: ");
            scanf("%s", a[i].category);
            if (strlen(a[i].number) > 19) throw "Error!";
            printf("Тариф: ");
            if (!scanf("%lf", &a[i].tarif)) throw "Error!";
            printf("\n");
        }
 
        for(int i=0; i<3; i++)// обработка
        {
            fwrite((char*)&a[i],sizeof(a[i]),1,fp);//данные записываются в файл
        }
 
        fclose(fp);
 
        printf("Введите месяц: ");
        if (!scanf("%d", &m)) throw "Error!";
    }
    catch(const char* err)
    {
        printf(err);
        _getch();
        return 0;
    }
    max=0;
    k=0;
    fp=fopen("input.txt","r");//открываем файл для чтения с клавиатуры
    pc=fopen("output.txt","w");//записать данные обработки в файл
    for(int i=0; i<2; i++)// обработка
    {
        fread((char*)&a[i],sizeof(a[i]),1,fp);
    }
 
    for(i=0;i<3;i++)    
    { 
        if ((a[i].D.month==m) && (a[i].time > max) && strcmp(a[i].category,"sr")==0) 
        {
            k=i;
            max=a[i].time;
        }
    }
    printf("---------------------------------------- \n");
    printf("Номер: %s \n", a[k].number);
    printf("ДЕНЬ.МЕСЯЦ.ГОД: %d.%d.%d \n", a[k].D.day, a[k].D.month, a[k].D.year);
    printf("ВРЕМЯ: %d:%d \n", a[k].T.hour, a[k].T.minute);
    printf("Код города: %d \n", a[k].kod);
    printf("Номер в другом городе: %s \n", a[k].num_other);
    printf("Продолжительность: %d \n", a[k].time);  
    printf("Категория разговора: %s \n", a[k].category);
    printf("Тариф: %f \n", a[k].tarif);
    fwrite((char*)&a[k],sizeof(a[i]),1,pc);//данные записываются в файл
    fclose(fp);
    fclose(pc);
    _getch();
    return 0;
}
1
Alexandr1966
26 / 26 / 1
Регистрация: 17.12.2012
Сообщений: 438
04.10.2013, 17:00  [ТС] #5
Спасибо)) а у меня еще вопрос, вот при неверном вводе данных, выдается ошибка и программа закрывается, а как сделать так, чтоб она опять заново просила ввести данные в это поле???
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 19:14 #6
Цитата Сообщение от Alexandr1966 Посмотреть сообщение
а как сделать так, чтоб она опять заново просила ввести данные в это поле???
Тогда без исключений. Цикл while, после ошибки сброс флагов потока и очистка потока.
1
Alexandr1966
26 / 26 / 1
Регистрация: 17.12.2012
Сообщений: 438
06.10.2013, 07:16  [ТС] #7
а можно это показать на коде пожалуйста, а то я на словах не совсем понял о чем вы(
0
alsav22
06.10.2013, 12:12
  #8

Не по теме:

Л/с получили?

1
Alexandr1966
26 / 26 / 1
Регистрация: 17.12.2012
Сообщений: 438
06.10.2013, 17:34  [ТС] #9
Да, получил, всё сделал)

Добавлено через 4 часа 21 минуту
Сможешь подсказать как сделать?)
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.10.2013, 20:18 #10
Кликните здесь для просмотра всего текста
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include <stdio.h>
#include "string.h"
 
struct date
{
    int day;
    int month;
    int year;
};
 
struct time
{
    int hour;
    int minute;
};
 
struct spravka //определение структурных типов данных
{
    char number[12];
    struct date D;
    struct time T;
    char num_other[12];
    int kod;
    int time;
    char category[20];
    double tarif;
};
 
int main()
{
    struct spravka a[3];
    int i,m,k; FILE *fp, *pc;
    setlocale(LC_ALL, "rus");
    int max;
    fp=fopen("input.txt","w");//открываем файл для записи с клавиатуры
    
    for(i=0;i<3;i++)// вводим данные
    {
    printf("Разговор!!! \n");
            
    while (1)
    {
        printf("Номер: ");
        scanf("%s", a[i].number);
        if (strlen(a[i].number) > 11)
        {
            printf("Слишком длинный номер! Повторите, пожалуйста.\n");
            while (getchar() != '\n');
        }
        else break;
    }
            
    while (1)
    {
        printf("День: ");
        if (!scanf("%d", &a[i].D.day) )
        {
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
            clearerr(stdin);
            while (getchar() != '\n');
        }
        else
        {
            if (getchar() == '\n') break;
            while (getchar() != '\n');
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
        }
    }
 
    while (1)
    {
        printf("Месяц: ");
        if (!scanf("%d", &a[i].D.month))
        {
                
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
            clearerr(stdin);
            while (getchar() != '\n');
        }
        else
        {
            if (getchar() == '\n') break;
            while (getchar() != '\n');
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
        }
    }
            
            
    while (1)
    {
        printf("Год: ");
        if (!scanf("%d", &a[i].D.year))
        {
                
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
            clearerr(stdin);
            while (getchar() != '\n');
        }
        else
        {
            if (getchar() == '\n') break;
            while (getchar() != '\n');
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
        }
    }
 
    while (1)
    {
        printf("Час: ");
        if (!scanf("%d", &a[i].T.hour))
        {
                
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
            clearerr(stdin);
            while (getchar() != '\n');
        }
        else
        {
            if (getchar() == '\n') break;
            while (getchar() != '\n');
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
        }
    }
            
    while (1)
    {
        printf("Минута: ");
        if (!scanf("%d", &a[i].T.minute))
        {
                
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
            clearerr(stdin);
            while (getchar() != '\n');
        }
        else
        {
            if (getchar() == '\n') break;
            while (getchar() != '\n');
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
        }
    }
            
    while (1)
    {
        printf("Другой номер: ");
        scanf("%s", a[i].num_other);
        if (strlen(a[i].num_other) > 11)
        {
            printf("Слишком длинный номер! Повторите, пожалуйста.\n");
            while (getchar() != '\n');
        }
        else break;
    }
            
    while (1)
    {
        printf("Код: ");
        if (!scanf("%d", &a[i].kod))
        {
                
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
            clearerr(stdin);
            while (getchar() != '\n');
        }
        else
        {
            if (getchar() == '\n') break;
            while (getchar() != '\n');
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
        }
    }
            
    while (1)
    {
        printf("Продолжительность: ");
        if (!scanf("%d", &a[i].time))
        {
                
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
            clearerr(stdin);
            while (getchar() != '\n');
        }
        else
        {
            if (getchar() == '\n') break;
            while (getchar() != '\n');
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
        }
    }
            
    while (1)
    {
        printf("Категория: ");
        scanf("%s", a[i].category);
        if (strlen(a[i].number) > 19)
        {
            printf("Слишком длинная категория! Повторите, пожалуйста.\n");
            while (getchar() != '\n');
        }
        else break;
    }
            
    while (1)
    {
        printf("Тариф: ");
        if (!scanf("%lf", &a[i].tarif))
        {
                
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
            clearerr(stdin);
            while (getchar() != '\n');
        }
        else
        {
            if (getchar() == '\n') break;
            while (getchar() != '\n');
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
        }
    }
 
    printf("\n");
    }
 
    for(int i=0; i<3; i++)// обработка
    {
    fwrite((char*)&a[i],sizeof(a[i]),1,fp);//данные записываются в файл
    }
 
    fclose(fp);
 
    while (1)
    {
        printf("Введите месяц: ");
        if (!scanf("%d", &m))
        {
                
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
            clearerr(stdin);
            while (getchar() != '\n');
        }
        else
        {
            if (getchar() == '\n') break;
            while (getchar() != '\n');
            printf("Ошибка ввода! Повторите, пожалуйста.\n");
        }
    }
    
    max=0;
    k=0;
    fp=fopen("input.txt","r");//открываем файл для чтения с клавиатуры
    pc=fopen("output.txt","w");//записать данные обработки в файл
    for(int i=0; i<2; i++)// обработка
    {
        fread((char*)&a[i],sizeof(a[i]),1,fp);
    }
 
    for(i=0;i<3;i++)    
    { 
        if ((a[i].D.month==m) && (a[i].time > max) && strcmp(a[i].category,"sr")==0) 
        {
            k=i;
            max=a[i].time;
        }
    }
    printf("---------------------------------------- \n");
    printf("Номер: %s \n", a[k].number);
    printf("ДЕНЬ.МЕСЯЦ.ГОД: %d.%d.%d \n", a[k].D.day, a[k].D.month, a[k].D.year);
    printf("ВРЕМЯ: %d:%d \n", a[k].T.hour, a[k].T.minute);
    printf("Код города: %d \n", a[k].kod);
    printf("Номер в другом городе: %s \n", a[k].num_other);
    printf("Продолжительность: %d \n", a[k].time);  
    printf("Категория разговора: %s \n", a[k].category);
    printf("Тариф: %f \n", a[k].tarif);
    fwrite((char*)&a[k],sizeof(a[i]),1,pc);//данные записываются в файл
    fclose(fp);
    fclose(pc);
    _getch();
    return 0;
}
1
Alexandr1966
26 / 26 / 1
Регистрация: 17.12.2012
Сообщений: 438
08.10.2013, 05:17  [ТС] #11
спасибо тебе огромное дружище) слушай, а можно тебя попросить переделать кое какой код, вот в теме в этой все написано Определить, имеются ли в последовательности слова, в которых каждая буква слова входит в него не менее двух раз

Добавлено через 12 часов 54 минуты
Кстати, а что значит цикл while (1), что за единица?
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.10.2013, 05:31 #12
Цитата Сообщение от Alexandr1966 Посмотреть сообщение
а что значит цикл while (1)
Условие работы цикла всегда true.
1
Максусс
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 14
07.03.2016, 17:28 #13
alsav22, Здравствуйте, не могли бы вы мне помочь, у меня есть рабочая программа, и все бы хорошо но она не выдает сообщение об ошибках.. не могли бы вы мне помочь(исправить) чтоб она реагировала неправильный ввод данных, на букву вместо цифры или на запятую вместо точки в десятичных дробях.
вот сама программа.
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
// SLU_GAUS.cpp: определяет точку входа для консольного приложения.
//
//подключение заголовков
#include "stdafx.h"
#include "iostream"
#include "stdio.h"
//-----------------------------------------------
//подключение пространства имен
using namespace std;
//-----------------------------------------------
//функция решения СЛУ методом Гаусса
bool gauss(double **a, int size, double *x)
{
    try
    {
        for (int k = 0; k < size; k++)//переьираем уровнения
        {
            for (int i = size; i >= 0; i--)//перебираем индексы уровнения от последнего до первого
                a[k][i] = a[k][i] / a[k][k];//делем индексы уровнения К на К индекс этого уровнения, т.е. на диагональный индекс
            for (int i = k + 1; i < size; i++)//пребираем уровнения от К+1 уровнения
                for (int j = size; j >= k; j--)// перебираем индексы уровнения от последнего до К, т.е. до диагонального
                    a[i][j] = a[i][j] - a[k][j] * a[i][k];
        }
        for (int k = size - 1; k >= 0; k--)//перебираем от предпоследнего уровнения до первого
        {
            double m = a[k][size];
            for (int i = size - 1; i > k; i--)//перебираем индексы от предпоследнего до К
                m = m - a[k][i] * x[i];
            x[k] = m;
            //cout<<"X "<<(k + 1)<<" = "<<m<<endl;
        }
    }
    catch (char *msg)
    {
        cout<<"ОШИБКА ИЛИ РЕШЕНИЙ НЕТ"<<endl;
        cout<<msg<<endl;
        return false;
    }
    return true;
}
//-----------------------------------------------
//Функция получени марицы коефициентов  СЛУ и соот. свободных членов
bool getMatrixCoef(double **a, int size)
{
    try//обработчик ошибок перехватываем возникающие ошибки
    {
        for (int i = 0; i < size; i++)
        {
            for (int j = 0; j < size; j++)
            {
                cout<<"Введите "<<j + 1<<" коиффициент "<<i + 1<<" уравнения: ";
                cin>>a[i][j];
            }
            cout<<"Введите  свободный член "<<i + 1<<" уравнения: ";
            cin>>a[i][size];
        }
    }
 
    catch (char *msg)//если ошибка возникла
    {
        cout<<"ВОЗНИКЛА ОШИБКА"<<endl;
        cout<<msg<<endl;
        return false;
    }
    return true;//возврат результата функцией
}
//-----------------------------------------------
//Процедура вывода матрицы коефициентов на экран
void showMatrixCoef(double **a, int size)
{
    cout<<"Матрица коэффициентов СЛУ и соотв. свободные члены:"<<endl;
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size+1; j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
    }
}
//-----------------------------------------------
//Процедура вывода решения СЛУ на экран
void showResult(double *x, int size)
{
    cout<<"Решение СЛУ:"<<endl;
    for (int i = 0; i < size; i++)
            cout<<"X"<<i+1<<" = "<<x[i]<<endl;
}
//-----------------------------------------------
//Основное тело программы
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE, "Russian");//подключаем русскую кодировку
    cout<<"Введите колличество уровнений: ";//выводим сообщение на экран
    int size;
    cin>>size;//получаем количество уровнений введенное пользователем
    //определяем матрицу коэффициентов
    double **a = new double*[size];
    for (int i = 0; i < size; i++)
        a[i] = new double[size + 1];
    //определяем массив решений СЛУ
    double *x = new double[size];
    if (getMatrixCoef(a, size))//если получение прошло без ошибок
    {
        cout<<endl<<endl<<endl;//делаем отступ пустыми строками
        showMatrixCoef(a, size);//выводим матрицу коеф. и свободные члены
        if (gauss(a, size, x))//если система имеет решение
            showResult(x, size);//выводим решение
    }
    cout<<endl;
    system("pause");//выполенение системной команды "пауза"
    return 0;
}
0
Rapsod
Волшебник
63 / 62 / 4
Регистрация: 21.11.2009
Сообщений: 319
07.03.2016, 17:37 #14
Обработка всех ошибок...

C++
1
2
3
4
5
6
catch (...)
    {
        cout<<"ОШИБКА ИЛИ РЕШЕНИЙ НЕТ"<<endl;
        cout<<msg<<endl;
        return false;
    }
Добавлено через 4 минуты
Проверка является ли символ числом от 0 до 9:

C++
1
2
3
4
5
6
7
if (isdigit(str[i])){
 
// это число
} 
else {
// это не число
}
0
07.03.2016, 17:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2016, 17:37
Привет! Вот еще темы с ответами:

Try catch - C++
try { throw pDoc-&gt;C; } catch (City) { return; } есть динамический City* C, ему присвается значение другого такого...

try catch - C++
Здравствуйте. В c++ новичёк, с try catch никогда толком не работал, а тут пришлось. Нужно сделать защиту от ввода всего кроме цифр. вот...

try . catch - C++
можно ли провести данную операцию для функции erase у вектора??? пытался, что-то не получилось: #include &lt;vector&gt; #include &lt;algorithm&gt; ...

try-catch - C++
Какой тип проекта создавать в Visual Studio чтобы можно было сделать обработку исключений с try-catch? Или что сделать в Code Blocks с той...


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

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

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