- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
#include <stdio.h>
#include <iostream>
#include <regex>
using namespace std;
int cube(int);
int main()
{
char number;
label:
cout << " Введите число " << endl;
cin >> number;
regex txt_regex("/^\d+$/");
if (!regex_match(number, txt_regex))
{
cout << "Вводить можно только цифры!" << endl;
goto label;
}
int value = atoi(number);
int result = cube(value);
cout << "Куб числа " << number << " равен " << result;
return 0;
}
int cube(int number)
{
return number * number * number;
}
1. Слёзно просим пользователя ввести число
2. Если это не число - возвращаемся к п.1
3. Преобразуем число
Ввели, проверили, в случае чего вернулись - всё очевидно.
Позитивный подход: если только не получится, вернёмся.
В случае с циклом:
1. В цикле, пока не ввели число (почему в цикле, нам же нужно ровно одно число, не?)
1.1. Слёзно просим пользователя ввести число
2. Преобразуем число
Зачем-то создали цикл, чтоб ввести одно(!) число - бред какой-то.
Негативный подход: никто не вводил число с первого раза, поэтому давайте сразу цикл.
Кстати, есть написанные на C++ регулярные выражения, уже готовые на этапе компиляции (литералы)?
Т.е. как я делал вызовы цепочек функций, только для регулярок: https://gist.github.com/1024--/d7ac863b94622228beff
Посмотри Boost.Xpressive, Static Regexes
нененене, Андрей Александреску, нененене
этим недоразумением и правда кто-то пользуется в продакшне?
У нас в коде видел код пары упоротых людей, которые использовали spirit для парсинга двух чиселок из строки, но я бы это выкинул и заменил на scanf.
ага
парсят html там всякий или что попросят
> spirit для парсинга двух чиселок из строки, но я бы это выкинул и заменил на scanf.
но ведь перформанс!
он уж перестал увеличивать время компиляции простейшей грамматики до десятков секунд?
парсер-комбинаторы в виде DSL нужны и важны, но C++ отчаянно сосёт по части DSL, поэтому я не понимаю героев, которым не лень упарывать спиритус, вместо того, чтобы взять Bison/Antlr/Haskell
о каком языке мы вообще говорим?
зато он летает когда работает!!1одинодин
за год непрерывной работы можно влёгкую сэкономить до нескольких минут!
на самом деле один раз хорошо написанная грамматика отлично экономит потом время на разборе, доработке и сопровождении кода
а вопросы компиляции ортогональны
Ты в говно, или ты - говно?
Раньше я был никем, а теперь я очень важный человек. И всё благодаря этому сайту.
Научиться хреново кодить на 5+ языках и давать всем советы