Блог им. Therollingstones

Как сделать колесо заново!

Топик из цикла финпрограммирование ...
Как вы знаете, я хочу сделать индекс и для этого начал учить C++
Индекс должен будет выполнять простейшие вычисления ...
Я шизофреник и многому не доверяю, также я не доверяю стандартным алгоритмам, пока не пойму как они работают... 
Профессионалы тоже советуют построить колесо заново.

Из простейшей ситуации я получил большой опыт ...

Стандартная ситуация 

Программа просит ввести числовое значение, 
затем выделяет память под запрашиваемое значение,
затем производит попытку считывания значения в память

cout << «Enter the number (and press Enter): »;
string number = " ";
cin >> number;

Я выделил память типа string, т.е. какую последовательность символов вы бы не ввели, она сохранится.
А если в последовательности символов один символ не будет цифрой, как это проверить?

А дальше очень простой алгоритм, если хотя бы один символ последовательности не равен цифре от 0 до 9
сразу ошибка. Это намного быстрее если я бы считывал целое число и сравнивал со всем возможным диапазоном чисел int или double 
сравнить символ в 9 — ю ячейками или с несколькими миллионами ячеек), разница по времени очень большая.

for(int i = 0; i < number.size(); ++i;)
{
    (number != «0») &&
    (number != «1») &&
    (number != «2») &&
    (number != «3») &&
    (number != «4») &&
    (number != «5») &&
    (number != «6») &&
    (number != «7») &&
    (number != «8») &&
    (number != «9»)))
}
{
   simple_error(«Input Error!!!»);
}

Данный принцип применим к любой входящей информации в программу.

Еще я понял очень важный, наверное фундаментальный принцип. 
Я все никак не мог понять, зачем нужны исключения если можно использовать возвращаемые значения функции.
А в итоге, ведь действительно, эти два типа развития функции абсолютно противоположны.
Ошибочные, отрицательные значения (исключения), завершают программу.
Возвращаемое значение же используется для продолжения работы и активации чего либо еще...
Через возвращаемое значение функции должно возвращаться только какое либо значение, которое будет активировать рабочий вариант.
Если через возвращаемое значение возвращать ошибку, это приводит у путанице в принимающем коде.
Так что исключения нужны априори ...












Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
18 | ★2
3 комментария
одна строчка на R:  is.numeric(x)
avatar
vito2000, if (!cin) {}: на C++, но практика то какая!
avatar
а как быть, если число записано в научном формате? 3.14159E+0, например. Тут на помощь приходит С++:

#include <sstream>

char s[] = "  3.14159E+0 ";

std::stringstream ss;
ss.clear();
ss << s;

double num;
if( !(ss >> num) )
    std::cout << «not a number» << endl;
else
    std::cout << «number is read: » << num << endl;

Исключения нужны в больших «непотопляемых» проектах. Но они неудобны при отладке. Когда ставишь брейкпоинт на код исключения, ты не можешь двигаться вглубь стека вызовов чтобы проинспектировать код, который вызвал исключение. Так что сначала ошибку через значение, все там вылизать, а потом уже наваять исключение, по коду которого чтобы можно было точно знать что там произошло.

avatar

Читайте на SMART-LAB:
Фото
Инарктика: тот случай, когда сильный рост выручки еще ничего не значит
10 августа Инарктика опубликовала свои операционные результаты. Акции AQUA почему-то бурно выросли, и я на следующий день написал в наш...
Фото
EUR/USD: цена определилась с направлением?
Европейская валюта последнюю неделю активно тестирует ранее пробитую линию нисходящего тренда. Пятничную сессию пара стремится закрыть «бычьим...
Фото
С 1 сентября в России заработает новый налоговый вычет по страхованию жизни
С 1 сентября 2026 года россияне смогут оформить налоговый вычет по долгосрочным договорам добровольного страхования жизни, заключённым с 1 января...
Фото
Т-Технологии МСФО 2 кв. 2026 г. - консервативный прогноз остался без изменений
Компания Т-Технологии опубликовала финансовые результаты за 2 кв. 2026 г. Чистая прибыль составила 39,5 млрд руб., -15% к прошлому году. Без...

теги блога therollingstones

....все тэги



UPDONW
Новый дизайн