Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: 7-й класс
Рейтинг: 562
∙ повысить рейтинг >>
Micren
Статус: Практикант
Рейтинг: 333
∙ повысить рейтинг >>
AMV007
Статус: 3-й класс
Рейтинг: 139
∙ повысить рейтинг >>

∙ / КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1344 от 28.06.2009, 14:05
Администратор рассылки: Dr_Andrew, Модератор
В рассылке: подписчиков - 627, экспертов - 148
В номере: вопросов - 1, ответов - 1

Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
оценить выпуск >>

Вопрос № 169752: Помогите решить задачку!!! Написать функцию вычисления значения по заданной строке символов, являющихся записью этого числа в десятичной системе счисления. Предусмотреть случай выхода за границы диапазона определяемого типом int. Используйте механ...



Вопрос № 169752:

Помогите решить задачку!!!
Написать функцию вычисления значения по заданной строке символов, являющихся записью этого числа в десятичной системе счисления. Предусмотреть случай выхода за границы диапазона определяемого типом int. Используйте механизм исключений.

Отправлен: 22.06.2009, 20:30
Вопрос задал: Каминский Руслан Анатольевич, Посетитель
Всего ответов: 1
Страница вопроса >>


Отвечает Ross, Практикант :
Здравствуйте, Каминский Руслан Анатольевич.

Код:
#include <iostream>
#include <exception>
#include <limits>
using namespace std;

class OutOfRangeException : public exception
{
public:
OutOfRangeException()
:exception()
{}

public:
OutOfRangeException(const char* const & what)
:exception(what)
{}

public:
OutOfRangeException(const OutOfRangeException& rhs)
:exception(rhs)
{}
};

class FormatException : public exception
{
public:
FormatException()
:exception()
{}

public:
FormatException(const char* const & what)
:exception(what)
{}

public:
F ormatException(const FormatException& rhs)
:exception(rhs)
{}
};

int ParseInt(const char* str)
{
static const int BASE = 10;
int value = 0;
int sign = 1;

if (!*str) {
throw FormatException("Passed string is not in a valid format.");
}

for (const char* p = str; *p; ++p) {
switch (*p) {
case '+': case '-':
// check that we are at the beginning of the string
if (p != str) {
throw FormatException("Passed string is not in a valid format.");
}

if (*p == '-') {
sign = -1;
}

break;

case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': ca se '8': case '9':
// check range limits
if (value > numeric_limits<int>::max() / BASE) {
throw OutOfRangeException("Value range overflow.");
}

// add digit
value = value * BASE + (*p - '0');
break;

default:
throw FormatException("Passed string is not in a valid format.");
break;
}
}

return value * sign;
}

int main()
{
try {
cout << ParseInt("1") << endl;
}
catch (exception& ex) {
cout << ex.what() << endl;
}
}

-----
Good judgement comes from experience, and experience comes from bad judgement.

Ответ отправил: Ross, Практикант
Ответ отправлен: 23.06.2009, 01:50

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 251360 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!



    Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
    оценить выпуск >>

    подать вопрос экспертам этой рассылки >>

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.3 от 20.06.2009

    В избранное