![]() |
|
Модераторы: bsa |
![]()
|
|
| Alix36 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 6.11.2006 Репутация: нет Всего: 3 |
Какими способами можно ограничить ввод символов букв в программу.
теми проверками что есть, ограничиваем исполнение при отрицательном или не целом числе..... Из идей: 1) Проверять коды вводимых символов через getch(). Не вышло. Если начинаем ввод(cin) проверка уже не работает... что логично... 2) "стирать" все не цифры, при попытке ввода. Не могу придумать алгоритм... 3) проверять при вводе(isdigit) Функция всегда возвращает 0, независимо от того что ввели.... -------------------- Наши лица как дым, И никто не узнает как мы победим. (С)Пикник. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
||||
|
||||
| Alix36 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 6.11.2006 Репутация: нет Всего: 3 |
а как тогда? пример в студию...
Самое простое оказалось под носом. переменная то float.... Все буквы и буквенные выражения =0.0000 -------------------- Наши лица как дым, И никто не узнает как мы победим. (С)Пикник. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
А где щелчок пальцами? "Официант! Кальмаров и пример в студию!" как-то так:
Это так - набросок. |
|||
|
||||
| bsa |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
У тебя ошибка в самом начале программы - функция main() определена неверно:
Хочу обратить внимание, что функция getch() не входит ни в один стандарт. Поэтому собираться программа с ее использованием будет далеко не на всех платформах. |
||||||
|
|||||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Честно говоря не встречал компилятора, в котором нет conio.h, но соглашусь, что можно использовать что-нибудь аналогичное (например из stdio.h типа getc/putc), которое включено в стандарт. Суть не меняется. Не думаю, что данный код претендует на гениальность и повсеместное применение. На самом деле я так редко пользуюсь этими функциями, что уже все позабывал - что там есть, чего нет. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Anikmar, getc работает только после ввода всей строки (т.е. после нажатия клавиши Enter). Это означает, что пользователь может ввести левые символы, а ты с этим поделать ничего не сможешь. Имхо, проще считать просто строку, проверить на допустимые символы, если есть недопустимые - потребовать повторного ввода.
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Да я же просто навскидку пример привел
Там предел фантазий неограничен, но так некрасиво. Прикольнее просто запретить вводить по ходу пьесы, а заодно топикстартер может потренироваться на строках типа --0.998.000 или -56.89+9 и т.п. |
|||
|
||||
| Alix36 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 6.11.2006 Репутация: нет Всего: 3 |
1) void main(void) ничем не хуже int main(void)
программа не работает с внешними праметрами. И зачем ей что-то возвращать? 2) платформа у меня определенная, программа узконаправленная Anikmar, Пожалуйста, Спасибо!!! "Имхо, проще считать просто строку, проверить на допустимые символы, если есть недопустимые - потребовать повторного ввода. " ну... если строку оставить float, тогда все "нехорошие символы" будут нулями, и как их тогдаотличать от действительных нулей?. если вводить в char, то в итоге получаем тот-же цикл. -------------------- Наши лица как дым, И никто не узнает как мы победим. (С)Пикник. |
|||
|
||||
| Kanes |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 11.3.2005 Репутация: нет Всего: нет |
Коллега, не путайте Си и С++, в стандрате С++ строго оговорено что функция main() может иметь только два вида, которые привел bsa. --------------------
Big gun - big future |
|||
|
||||
| Alix36 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 6.11.2006 Репутация: нет Всего: 3 |
хм... честно говоря не читал саму документацию... в книгах были и такие и такие конструкции.
По факту работает и то и то. но все таки буду знать. вот переделанный рабочий код
do-while не верно работает ибо прерывание по пробелу происходит после того как i может превысить лимит массива, соответственно теряем нулевой. Либо можно просто добавить if(Cur==13) break;, но 2 проверки на пробел не круто. -------------------- Наши лица как дым, И никто не узнает как мы победим. (С)Пикник. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
||||
|
||||
| Alix36 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 6.11.2006 Репутация: нет Всего: 3 |
а разве 19 не меньше 20 ? на последнем и срабатывает.
Я решил еще подумать....! и сделал без массива... но чую сделал лишний switch, подскажите, можно ли от него избавиться?
-------------------- Наши лица как дым, И никто не узнает как мы победим. (С)Пикник. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Можно ли избавиться? Вы сами внимательно посмотрите на то, что написали. Может проще так: Cur-=48; Вот и избавились. Это сообщение отредактировал(а) Anikmar - 13.9.2009, 21:35 |
|||
|
||||
| Alix36 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 6.11.2006 Репутация: нет Всего: 3 |
ну я же говорю что я лишнее что-то сделал ))
-------------------- Наши лица как дым, И никто не узнает как мы победим. (С)Пикник. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |