Блог им. 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!!!»);
}

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

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













Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.

13 | ★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:
Фото
Итоги первичных размещений ВДО и некоторых розничных выпусков на 7 мая 2026 г.
Следите за нашими новостями в удобном формате:  Telegram ,  Youtube ,  RuTube,   Smart-lab ,  ВКонтакте ,  Сайт
Переток между депозитами и рынком капитала – какой механизм его запускает?
Переток средств между банковскими депозитами и рынком капитала в российской экономике – это не просто следствие изменения ставок. Это отражение...
Фото
Идея от аналитиков БКС: облигации Полипласта с доходом до 23% за год
Полипласт в среду, 20 мая, будет собирать книгу заявок на биржевые рублевые облигации серии П02-БО-16 со сроком обращения три года (1080 дней)....
Фото
Сети. Кто сейчас самый дешевый? Сводный пост по сетевым компаниям по отчетам РСБУ за Q1 26г.
Введение Россети Центр Россети Ленэнерго Россети Московский регион Россети Волга Сводные таблицы Введение Все...

теги блога therollingstones

....все тэги



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