Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Злобный
2 / 2 / 0
Регистрация: 18.09.2010
Сообщений: 43
#1

Запрет ввода числа с точкой - C++

27.09.2010, 19:54. Просмотров 1573. Ответов 14
Метки нет (Все метки)

Как запретить ввод десятичных чисел? Напрягает, из-за этого прога падает. Плюс, не нашел вариантов проверки на наличие у числа десятичной части. Спасайте
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2010, 19:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запрет ввода числа с точкой (C++):

Запрет ввода букв - C++
Вчера пробовал написать калькулятор. Но в нем можно вводить и буквы и цифры. Что надо допасать в коде чтобы буквы не вводились на экран? А...

Очередной запрет ввода - C++
Можно ли сделать так, чтобы при вводе (cin) программа никак не реагировала на нажатие кнопок? Например игнорировала определенные символы...

Запрет ввода чисел - C++
необходимо в калькуляторе сделать запрет ввода числа, через кеу не получается.вот полный код #include "stdafx.h" #include <iostream> ...

Запрет ввода в консоли - C++
Ребят, привет. Сейчас пишу змейку в консоли. Написано относительно мало. Тут столкнулся с проблемой, что во время игры, когда игрок...

Запрет ввода символов в консоли - C++
моя консольная программа имеет очень много вводов от пользователя, через контекстное меню (нажмите 1 для того, 2 для другого) чтоб не...

Запрет ввода в консольном приложении - C++
Здравствуйте! Мне необходимо осуществить следующую задачу: 1) Запретить пользователю ввод положительных чисел. 2) Запретить ввод...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gGrn-7DA
мну довольно <(-__-)l
203 / 192 / 1
Регистрация: 17.01.2010
Сообщений: 2,392
Завершенные тесты: 1
27.09.2010, 19:59 #2
парси(ищи) точку, что правее(вместе с точкой) отрезай и все...
Злобный
2 / 2 / 0
Регистрация: 18.09.2010
Сообщений: 43
27.09.2010, 20:20  [ТС] #3
Нельзя, нужно ИМЕННО проверить число на целостность, и если !=, то запретить его ввод
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,885
Завершенные тесты: 1
27.09.2010, 20:26 #4
Злобный, а зачем?
берем помещаем простую конвертацию в конструкцию try catch и с удовольствием материм пользака за идиотизм... и прога падать перестанет... ну или обработчик нажатия кнопки созадем и пишем там:
C++
1
2
3
4
if (Key == '.'){
  Key = 0x00;
  ShowMessage("только целые числа принимаем!");
}
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.09.2010, 20:29 #5
Вам надо, чтобы в режиме реального времени отслеживалась и не вводилась точка? Т.е. не после, а во время ввода числа?
Злобный
2 / 2 / 0
Регистрация: 18.09.2010
Сообщений: 43
27.09.2010, 20:59  [ТС] #6
Цитата Сообщение от silent_1991 Посмотреть сообщение
Вам надо, чтобы в режиме реального времени отслеживалась и не вводилась точка? Т.е. не после, а во время ввода числа?
Нет, после ввода.

Добавлено через 2 минуты
Lord_Voodoo, а пример с try-catch можно? Просто я человек в этом деле новый, а препод грозился расстреливать за плагиат или если усомнится в том, что студент сам это сделал
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,885
Завершенные тесты: 1
27.09.2010, 21:05 #7
Злобный, а хелпом он тоже запретил пользоваться?

C++
1
2
3
4
5
6
7
8
int i = 0;
//....
try{
  i = StrToInt(Edit1->Text);
}catch(...){
  i = 0;
  ShowMessage("Yеправильный формат данных!");
}
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
27.09.2010, 21:09 #8
Lord_Voodoo, вот за try...catch его точно расстреляют.

Злобный, а строки уже изучали?

Добавлено через 1 минуту
И напишите, какое приложение консольное или оконное.
gGrn-7DA
мну довольно <(-__-)l
203 / 192 / 1
Регистрация: 17.01.2010
Сообщений: 2,392
Завершенные тесты: 1
27.09.2010, 21:13 #9
C++
1
2
3
4
5
i = StrToDouble(Edit1->Text);
if((i - (int)i) != 0){
    ShowMessage("Yеправильный формат данных!");
    //...
}
а если так?
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,885
Завершенные тесты: 1
27.09.2010, 21:16 #10
.::.DIMA.::., да что за глупость... а если кто-то использует тпп данных int - никому больше нельзя его юзать?
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.09.2010, 21:18 #11
По-моему проще всего считывать число в строку, искать в ней точку, при нахождении послать пользователя, иначе загнать строку в int с помощью соответствующей функции и продолжать работу...
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
27.09.2010, 21:37 #12
Lord_Voodoo, я в том смысле, что автор ещё не проходил исключения, и try...catch вызовет у преподавателя определённые вопросы.
gGrn-7DA
мну довольно <(-__-)l
203 / 192 / 1
Регистрация: 17.01.2010
Сообщений: 2,392
Завершенные тесты: 1
27.09.2010, 21:43 #13
Ладно никто regex не предложил=)
Злобный
2 / 2 / 0
Регистрация: 18.09.2010
Сообщений: 43
28.09.2010, 00:28  [ТС] #14
1. На лекциях проходим что-то... Непонятно вообще, как всё устроено там... В общем-то, упор на самообразование или что-то типа того
2. вот кусок:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
          int n;
          int m;
          cout << "Введи начало интервала: ";   
          cin >> n;
while (!cin.good()) 
                {
                cin.clear ();
                cin.ignore (256, '\n');
                cout << "Ещё раз: "; 
                cin >> n;
                }
          cout << "Введи конец интервала: ";
          cin >> m;
          while (!cin.good(), m<n) 
                {
                cin.clear ();
                cin.ignore (256, '\n');
                cout << "Ещё раз: "; 
                cin >> m;
                }
Конкретно здесь есть возможность поставить эту... Проверку? Или как её ещё назвать...
З.Ы.
У Страуструпа про трай-кэтч слишком мудрёно написано, у Пратта - практически в конце книги(то есть, по идее, расчитано как на конец курса), более понятно, но все равно много неясного [чтоб не было язвительно-дебильных замечаний типа "иди читай-учись-убейся" ]
easybudda
Модератор
Эксперт CЭксперт С++
9532 / 5525 / 932
Регистрация: 25.07.2009
Сообщений: 10,611
28.09.2010, 10:04 #15
Злобный, вот было уже: Re: ошибка при вводе в неправильном формате
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2010, 10:04
Привет! Вот еще темы с ответами:

Запрет ввода русских букв.... - C++
Ребят подскажите как сделать запрет на использование русских букв в консоли, т.е если вводишь русские буквы жмешь enter и программа выдает...

Запрет ввода символов в поле Edit - C++
Как запретить нажатие и вставку из буфера всех символов, кроме нужных мне, к примеру разрешить вводить в поле только цифры? И еще 2-ой...

Запрет ввода символов, отличных от цифр - C++
Нужно заполнить двумерный массив только числами. Как это реализовать?

Конструирование значения целого числа или числа с плавающей точкой по его дампу - C++
Как сконструировать значения целого числа(char, short int, long int) или числа с плавающей точкой(float,double) по его дампу(bin,oct,hex)??


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.09.2010, 10:04
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru