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

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

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












Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
20 | ★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:
Фото
Инвестиции без спешки: торгуем в выходные
Дмитрий Пучкарёв Клиенты Альфа-Инвестиций могут совершать сделки в выходные . Торги в эти дни не отличаются волатильностью, но если всё-таки...
Фото
Сектора в алго №5: запуск комплекта роботов целиком
Заключительная статья цикла «Сектора в алго». Мы разобрали базу (девять секторов, 39 бумаг) и двух роботов для торговли секторов по отдельности. В...
Фото
Запуски новых проектов жилья за 9 месяцев 2026 года выросли на 5%
В сентябре застройщики дополнительно вывели на рынок 3,8 млн м² жилья. Это на 42% больше, чем в августе, но на 5% меньше, чем годом ранее....
Фото
Бюджет-2027: баланс рисков смещён в сторону ухудшения относительно плана.
Представлен проект бюджета на 2027 год. Риски для дефицита смещены в сторону превышения плановых 5,44 трлн руб. Главный риск – расходы. Проект...

теги блога therollingstones

....все тэги



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