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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
VFJB
1 / 1 / 0
Регистрация: 14.12.2008
Сообщений: 26
#1

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

02.07.2009, 19:36. Просмотров 1767. Ответов 32
Метки нет (Все метки)

программа реализует проверку на двоичное число:
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
#include <iostream>
#include <string.h>
using namespace std;
 
//класс исключений
class error{
public:
    char str[100];
    //конструктор, который присваивает строке stri значение строки str
    error (char stri[100])
    {
        strcpy_s(str, stri);
    }
};
 
//функция, проверяющая корректногсть ввода данных
int IsBinary(char s[]){
    int count=0;//переменная-счетчик
    int points=0;//переменная-счетчик, отвечающая за количество точек
    int minuses=0;//переменная-счетчик, отвечающая за количество минусов
    int num = 0;//переменная-счетчик
    //проверка корректности ввода данных
    for (int i=0; i<(int)strlen(s); i++)
    {
        if (((int)s[i]>=48) && ((int)s[i]<=49) || ((int)s[i]==46) || ((int)s[0]==45))
        {
            //если s[0] - минус, увеличиваем счетчики
            if ((i==0)&&(int)s[i] == 45)
            {
                count++;
                minuses++;
            }
            //если s[i]-цифра, увеличиваем счетчики
            if (((int)s[i]>=48) && ((int)s[i]<=57)) 
            {
                num=num+1; 
                count = count+1;
            }
            //если s[i]-точка, увеличиваем счетчики
            if ((int)s[i] == 46) 
            {
                points=points+1;
                count = count+1;
            }
            //если s[i]-минус - исключение
            if (((int)s[i] == 45)&&(i!=0)) 
            {
                throw error("ne dvoicnoe\n");
                exit(0);
            }
        }
        else 
        {
            break;
        }
    }   
    //если нет цифр-исключение
    if ((num==0)&&((points=1)||(minuses=1))) 
    {
        throw error("ne dvoichnoe\n");
    }
    else
    //если есть лишние символы - исключение
    if ((strlen(s)!=num+points+minuses)||(points>1)||(minuses>1)) 
    {
        throw error("ne dvoichnoe\n");
    }
    else 
    {
        cout << "dvoichnoe" << endl;
    }
}
 
//главная функция программы
int main()
{
    //вывод на экран назначения программы
    cout << "programma opredeliaet dvoicnie chisla" << endl;
    char s[100];//
    cout << "vvedite chislo" << endl;//запрос на ввод пользователем некой строки
    cin >> s;
    //вызов функции проверки числа
    try 
    {
        IsBinary(s);
    }
    //перехватчик исключений
    catch(error ex)
    {
        cerr << ex.str;
    }
    return 0;
}
нужно задать тип исключения, не подскажите как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2009, 19:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос исключения (C++):

Исключения С++ - C++
С++. Перечитал уже много учебников, видел много примеров, но никак не пойму как пользоваться блоками try catch.. Может хоть кто-нибудь...

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

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

Исключения - C++
Как бросить исключение выхода за границы массива? Как его поймать? Что делать после отбрасывания? TItem &amp; TArray::operator (unsigned...

исключения - C++
пожалуйста, gомогите решить задачу на с++ , кoтoрая пoкaзывaет, чтo функция co cвoим блoкoм try не дoлжна пeрeхватывaть кaждую вoзмoжную...

исключения - C++
Есть тестовое задание. Реализовать класс. Есть метод. * @note The function does not validate the index, if the index is out ...

32
Evg
Эксперт CАвтор FAQ
18258 / 6383 / 440
Регистрация: 30.03.2009
Сообщений: 17,665
Записей в блоге: 28
02.07.2009, 21:19 #16
А что делает этот метод? И, собственно, на кой он нам нужен в данном случае, если здесь кроме факта случившегося исключения больше ничего и не нужно? Т.е. вообще достаточно кинуть неинициализированный объект нашего класса error
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.07.2009, 21:19 #17
Evg, но мое исключени через int ты поймать не сможешь, так как они не связаны. Так что, ты не совсем прав.
0
Evg
Эксперт CАвтор FAQ
18258 / 6383 / 440
Регистрация: 30.03.2009
Сообщений: 17,665
Записей в блоге: 28
02.07.2009, 21:20 #18
Цитата Сообщение от Vourhey Посмотреть сообщение
Но мне в голову ничего больше о типах не приходит, кроме этого. Предлагай, если есть что-то лучше )
Я ж говорю, я проблему-то не пойму, а потому и предложить ничего не могу
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.07.2009, 21:20 #19
Evg, блин, если это код рассматривать, то тут вообще исключения не нужны полноценные
0
Evg
Эксперт CАвтор FAQ
18258 / 6383 / 440
Регистрация: 30.03.2009
Сообщений: 17,665
Записей в блоге: 28
02.07.2009, 21:21 #20
Цитата Сообщение от Vourhey Посмотреть сообщение
Evg, блин, если это код рассматривать, то тут вообще исключения не нужны
Ну это понятно. Просто я так понимаю, большинство сказанного тобой в первую очередь относилось к общему случаю, а не к конкретно данному примеру?
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.07.2009, 21:23 #21
what() возвращает указатель на строку с описанием ошибки

Добавлено через 1 минуту 14 секунд
да, это было к общему случаю. Вот я и жду, когда аффтар расскажет о том, что нужно. Ладно, подождем.
0
Evg
Эксперт CАвтор FAQ
18258 / 6383 / 440
Регистрация: 30.03.2009
Сообщений: 17,665
Записей в блоге: 28
02.07.2009, 21:24 #22
Цитата Сообщение от Vourhey Посмотреть сообщение
what() возвращает указатель на строку с описанием ошибки
Теперь по крайней мере понял, о чём вы тут до меня говорили
0
VFJB
1 / 1 / 0
Регистрация: 14.12.2008
Сообщений: 26
02.07.2009, 21:27  [ТС] #23
Vourhey, а еще что может под иметься ввиду под типом?
0
Evg
Эксперт CАвтор FAQ
18258 / 6383 / 440
Регистрация: 30.03.2009
Сообщений: 17,665
Записей в блоге: 28
02.07.2009, 21:30 #24
А тебе для чего нужно? Если это задание в институте, то лучше напиши дословно
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.07.2009, 21:33 #25
VFJB, понятия не имею ) Подойди к преподу с сигаретой в зубах и спроси, чем ему от тебя вообще надо
0
VFJB
1 / 1 / 0
Регистрация: 14.12.2008
Сообщений: 26
02.07.2009, 21:35  [ТС] #26
хм.. тогда только завтра смогу задание написать(
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.07.2009, 21:36 #27
VFJB, у нас вся жизнь впереди...
1
VFJB
1 / 1 / 0
Регистрация: 14.12.2008
Сообщений: 26
02.07.2009, 21:54  [ТС] #28
извините за тормознутость, да тип должен быть exeption и отлавливаться catch'ом))
0
Evg
Эксперт CАвтор FAQ
18258 / 6383 / 440
Регистрация: 30.03.2009
Сообщений: 17,665
Записей в блоге: 28
02.07.2009, 21:59 #29
Цитата Сообщение от VFJB Посмотреть сообщение
извините за тормознутость, да тип должен быть exeption и отлавливаться catch'ом))
Тогда вместо своего типа используй std::exception.а там, где печатаешь строку внутри catch'а - дёргай what
1
VFJB
1 / 1 / 0
Регистрация: 14.12.2008
Сообщений: 26
02.07.2009, 22:02  [ТС] #30
Evg, а можешь показать как это примерно выглядит?
0
02.07.2009, 22:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2009, 22:02
Привет! Вот еще темы с ответами:

Исключения - C++
У Эккеля, во втором томе, в главе про исключения, встретил конструкцию такого вида: T&amp; operator(int i) throw(RangeError) { if(i...

исключения - C++
скажите пожалуйстокак написать через исключение if(n&lt;=0 || n&gt;=100000000) { fclose(f); f=fopen(&quot;output.txt&quot;, &quot;w&quot;); ...

Исключения - C++
Упражняюсь в программировании. Написал абстрактный класс Shape, от которого наследуются Quadr и Treyg. Создал класс исключения Exeption,...

Исключения - C++
можно ли возвращаться к выполнению кода после обработки исключения, например try{ func1();//обе ф-и могут вызывать исключение...


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

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

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