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

Обработка overflow_error - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти сумму модулей отрицательных нечетных элементов в каждом столбце http://www.cyberforum.ru/cpp-beginners/thread1049144.html
Найти характеристику каждого ее столбца (сумму модулей отрицательных нечетных элементов в каждом столбце). Помогите сделать программу пожалуйста
C++ Добавление пробела в ввод for (int i=0; i<sch - 1; i++) for (int j=i+1; j<sch; j++) if (strcmp(l_arr.tovar, l_arr.tovar)>0) { t= l_arr; l_arr= l_arr; l_arr=t; } printf("\n\nRezultat: "); Часть из программы. Помогите добавить сюда возможность вводить текст с пробелами (пустым символом). Если вводить без него все работает, если с ним зацикливается. Добавлено через 36 минут Как добавить возможность... http://www.cyberforum.ru/cpp-beginners/thread1049139.html
C++ Организовать ввод, хранение в массиве, вывод на экран данных о студентах
Организовать ввод, хранение в массиве, вывод на экран данных о студентах: фамилия. имя, отчество, дата рождения(число, месяц, год), образование. Вывести на экран данные о служащих, которые имеют высшее образование. По данным сведениям определить количество служащих, родившихся в данном месяце (вводится с клавиатуры)
КАК ОБОЙТИ VIRTUAL? C++
Подскажите, возможно ли избежать в данной программе виртуальный метод? Если нет, то почему? Если да, то как? #include "stdafx.h" #include "CMeter1.h" #include "CMeter2.h" #include "CMeter3.h" #include "iostream" using namespace std; const int n=3;
C++ Не работает быстрая сортировка http://www.cyberforum.ru/cpp-beginners/thread1049125.html
Здравствуйте! У меня не выходит быстрая сортировка. Проблема в функции partition. #include <iostream> #include <ctime> #include <iomanip> using namespace std; const int n=25; struct INF
C++ Удаление за все даты, предшествующие заданной Здравствуйте:) Ребята, помогите пожалуйста. Описала удаление вроде бы как правильно, компилятор пропускает, но с реализацией проблемы. Программа зависает сразу же после ввода даты. #include "iostream" #include "stdio.h" #include "conio.h" #include "stdlib.h" #include "string.h" using namespace std; struct data { подробнее

Показать сообщение отдельно
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133

Обработка overflow_error - C++

20.12.2013, 01:28. Просмотров 475. Ответов 6
Метки (Все метки)

Занимаюсь решением задачи 6.23 из самоучителя Липпмана.
Задание:
функция to_ulong() класса bitset передает исключение типа overflow_error в случае, если размер набора битов превосходит размер типа unsigned long. Напишите программу, которая передает это исключение. Обработчик этого исключения должен отображать соответствующее сообщение.

Лично у меня родился такой код (см. ниже).
1. Как узнать максимальный размер ulong на своей машине, чтоб выбрать битсет функция to_ulong() которого была бы больше этого числа? Значение b(0x1F2BC895678767232) выбрано методом проб и ошибок, прибавляя каждый раз по одной проихвольной цифре в конец, пока не выскочила ошибка "слишком большая константа".
2. Передача overflow_error происходит неявно в данном случае или как тогда написать раздел throw?
3. Инициализировать overflow_error err("That") в разделе catch нельзя, а где тогда можно?
4. Кроме того, компилятор выдал ошибки и предупреждения. Как мне исправить данный код?

1>\test000.cpp(1) : warning C4305: аргумент: усечение из '__int64' к 'unsigned long'
1>\test000.cpp(1) : warning C4309: аргумент: усечение константного значения
1>\test000.cpp(7) : error C2059: синтаксическая ошибка: строка
1>c\test000.cpp(9) : error C2228: выражение слева от ".what" должно представлять класс, структуру или объединение
1> тип: std::overflow_error (__cdecl *)(void)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bitset<64> b(0x1F2BC895678767232);
int main()
{   
        try {
            cout << b.to_ulong() << endl;
            }
        catch  (overflow_error err("That number is too big"))
        {
            cout << err.what() << endl;
                        _getch();
            return -1;
        }
    _getch();
    return 0;
}
Заранее спасибо.

Добавлено через 2 часа 17 минут
upd.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru