Блог им. 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:
Фото
Базис: как отчет за 2 кв поменял взгляд на компанию?
Базис отчитался ожидаемо. Выручка +30%, гайденс на 2026 год сохранен: рост выручки 2026 ожидается на уровне 30-40%, рентабельность OIBDA 60%....
Обновление кредитных рейтингов в ВДО и розничных облигациях (АПРИ подтвержден на уровне BBB-.ru от НКР / АО РОЛЬФ понижен до А-(RU) / Элит Строй присвоен на уровне BBB.ru)
🟢ПАО АПРИ НКР подтвердило кредитный рейтинг на уровне BBB-.ru  ПАО АПРИ – основная компания группы АПРИ, выполняющая функции девелопера...
Фото
Индикатор SuperTrend в OsEngine: сигналы, формулы расчёта и бесплатный робот.
В этом выпуске разберём индикатор SuperTrend для OsEngine — инструмент, который определяет направление тренда через текущую цену и рыночную...
Фото
Спреды рублевых облигаций: какой стратегии можно придерживаться в текущих условиях
Отслеживание G-спредов (корпоративных облигаций к ОФЗ) важно для понимания общей динамики доходностей долговых инструментов, отражающей текущую...

теги блога therollingstones

....все тэги



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