было дано целое число? Нужно обработать моменты, типа 1.23, abc12, 12abc, abc итд.
Использовать можно только stdio. Уже всю голову сломал...
И как читаешь? Как строку?
Ну моё решение принимать строку и проверять, переводя через ascii таблицу (для целых канает, с точкой могут быть проблемы). Но я приму любую другую идею, могу принимать хоть что, если это поможет решить проблему)
Ну if ( str[i] < '0' && str[i] > '9') throw except;
Да! А не строку можно принимать? Или решений не через строку вообще нет?
Можно и не строку)
А как?) Просто если в сканф принимать %d, то при вводе юзером 12хптв, все будет окей, нам скажут, что он ввел 12, а это не подходит...
Тебе вроде сканф должен вернуть при таком чтении код ошибки ТК по шаблону не будет подходить
Неа, гугл говорит, что он работает так, что читает, пока не увидит "не диджит", останавливается, забирает в переменную все, что прочитал, остальное отбрасывает
Просто писать свой парсер и всё
Писали что-то похожее. Там почти регулярное выражение получилось ) Зачем такие сложности? Типо должно единичку вернуть. Но он отбросит дробную часть и вернёт единицу. Можно в сканы засунуть ещё чар %d%c и этот чар сделать равным ‘\n’ Остановились на простой проверки на digit int check = scanf(“%d”, d);
Обсуждают сегодня