![]() |
Модераторы: 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. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |