|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|
Как сделать проверку на double в scanf, если ожидается int?05.12.2012, 23:45. Показов 4955. Ответов 11
Метки проверка ввода, проверка ввода c, проверка ввода в scanf, проверка ввода в scanf си, проверка ввода в scanf c, проверка ввода си (Все метки)
Возможно ли как-то средствами scanf отловить ввод десятичной точки, чтобы отловить ввод типа 5.8 или 5.0, то есть когда в числе присутствует десятичная точка, а scanf ожидает целое? Другие функции по условию задачи использовать нельзя, а дополнительную переменную double использовать не хочется. Есть варианты?
0
|
|
| 05.12.2012, 23:45 | |
|
Ответы с готовыми решениями:
11
Написать функцию int Search ( double A[], int n , double x), которая находит в массиве double A[n] элемент, значение которого равно x Как сделать так, чтобы TextBox принимал только типы double и int?
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 06.12.2012, 00:50 | |
|
#pragma, Да пошли ты этот scanf куда подальше! Это самое неудачное, что придумали великие K&R. Простите их. Они придумали так много и так много хорошего, они просто мир программистский с головы на ноги поставили. А со scanf-ом не дотянули чуток. Хотя старались. scanf - симметрия printf. То что выведенное printf-ом scanf замечательно поймет. А то, что вводит шальной пользователь руками - ну нет на него никакой надежды. Когда я начал что-то кропать на Си, scanf я использовал только один раз. И последний. Для серьезной работы надо читать строку и самому ее разбирать. Что ты ожидаешь от ввода? Какие могут несоответствия с твоими ожиданиями? У scanf своя политика ожиданий, годящаяся для простенького студенческого ввода. Для чего-нибудь хоть чуток более серьезного он совершенно не годен.
0
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
|||||||
| 06.12.2012, 18:36 | |||||||
|
#pragma, абсолютно не согласен с Байт, scanf - прекрасная функция, только её использовать надо по назначению и согласно с руководством.
Я бы не мудрствуя лукаво как-то так сделал
0
|
|||||||
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||||||
| 06.12.2012, 21:24 [ТС] | ||||||
|
Байт,
easybudda, Как я упомянул, у меня ограничение на использование вспомогательных функций (и заголовочных файлов тоже), такое задание. Список запрещённых идентификаторов (слов) в исходнике:
Про целесообразность речи не идёт, это специально упражнение такое, делаемое только средствами "изученных" функций
0
|
||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||
| 07.12.2012, 00:37 | |||
|
Добавлено через 6 минут
0
|
|||
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|
| 07.12.2012, 00:51 [ТС] | |
|
Решение оказалось простым: при вызове scanf %d читается целая часть числа, после чего в буфере остаётся точка. При следующем вызове scanf (с форматом %d) вернёт 0, а это уже можно поймать в программе.
0
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
||
| 07.12.2012, 02:31 | ||
|
0
|
||
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||
| 07.12.2012, 02:48 [ТС] | ||
Я проверил всякие случаи, всё работает.
0
|
||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
||||||||||||
| 07.12.2012, 02:59 | ||||||||||||
|
Вот ещё замысловатая конструкция:
0
|
||||||||||||
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||||||
| 07.12.2012, 04:37 [ТС] | ||||||
|
Вот, это кусок проверки ввода в упражнении
0
|
||||||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
|
| 07.12.2012, 11:33 | |
|
#pragma, ну и где здесь проверка, что пользователь не ввёл дробное число? Был такой старый советский мультик, там у одного нерадивого ученика ответом на задачу получилось полтора землекопа. Так вот, если ввести 1.5, количество игроков установится в 1, при этом пройдёт проверку, как допустимое значение, а .5 так и будет болтаться в потоке ввода, пока ещё какое-нибудь значение прочитать не понадобится. То есть поставленная в первом посте задача не выполняется.
0
|
|
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||||||
| 07.12.2012, 16:09 [ТС] | ||||||
|
Надо было просто весь код выложить
Единственный случай, который неправильно учитывается, это 0.* Надо ещё else добавить.
0
|
||||||
| 07.12.2012, 16:09 | |
|
Помогаю со студенческими работами здесь
12
Как сделать проверку, если такого значения нет в datagrid, то вывести ошибку? Размерность int или как из signed int сделать unsigned int? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|