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

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

Войти
Регистрация
Восстановить пароль
 
Snowyda
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 2
#1

Проверка введенных данных в С++ - C++

10.11.2013, 22:45. Просмотров 357. Ответов 5
Метки нет (Все метки)

Задача такова:
Имеется программа для работы с числами (пусть это будет, например, поднесение числа в квадрат, не суть)
Соответственно, от пользователя требуется ввести число.
Но пользователь иногда не очень сообразителен и вводит букву.
Итог: программа выдает ошибку и закрывается, пользователь в ужасе, программист получил по башке.

Как предупредить это?
Например, если пользователь вводит букву, то пусть программа, вместо того, чтобы выводить ошибку или еще чего похуже, говорит ему, что "Это, дескать, не число, попробуй еще раз" и снова просит пользователя ввести данные.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2013, 22:45     Проверка введенных данных в С++
Посмотрите здесь:

C++ Каким образом организовывать ввод данных для поддержки программной обработка неправильно введенных данных?
Проверка введенных данных: число/не число C++
C++ Проверка введенных данных cin на корректность
C++ Проверка введенных символов
Проверка введенных данных C++
C++ Проверка введенных данных
C++ Отслеживание введенных данных
C++ Проверка введенных данных; выполнение кода по условию
Проверка на корректность введенных данных C++
Проверка корректности введенных строк C++
C++ Проверка введенных данных (как ограничить?)
C++ Запрос логина и пароля и проверка правильности введенных значений

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
10.11.2013, 22:47     Проверка введенных данных в С++ #2
проверяй isdigit число это или нет и делай соответствующие действия
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.11.2013, 22:52     Проверка введенных данных в С++ #3
C++
1
2
3
4
5
6
while (!(cin >> a) || (cin.peek() != '\n'))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Error!" << endl;
}
Snowyda
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 2
10.11.2013, 22:53  [ТС]     Проверка введенных данных в С++ #4
Цитата Сообщение от newbie666 Посмотреть сообщение
проверяй isdigit число это или нет и делай соответствующие действия
Если я правильно понял то, что было написано в литературе на эту тему, то вначале придется вводить данные в виде char. Или это не так? Если нет и если вам не трудно, приведите пример использования этой функции в простенькой программе, пожалуйста.
newbie666
Заблокирован
10.11.2013, 22:57     Проверка введенных данных в С++ #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <ctype.h>
#include <stdio.h>
 
int main(void)
{
  char ch;
 
  for(;;) {
    ch = getchar();
    if(ch == '.') break;
    if(isdigit(ch)) printf("%c является цифрой\n", ch);
  }
 
  return 0;
}
rome098
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 46
10.11.2013, 23:02     Проверка введенных данных в С++ #6
Цитата Сообщение от Snowyda Посмотреть сообщение
Если я правильно понял то, что было написано в литературе на эту тему, то вначале придется вводить данные в виде char. Или это не так? Если нет и если вам не трудно, приведите пример использования этой функции в простенькой программе, пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
char str[N], *p=str;//временная переменная для проверки знака сравнения и числа, где N- максимальное кол-во букв
start://маркер
cin >> str;//записываем в строку для проверки
 while(*p)
                if(!isdigit(*p++))
                {
                  if_num=false;
                  break;
                         }
            if(if_num){a=atoi(str);}
            else{cout << "Это не число!"; goto start;}
я описал все, что мог... дальше я сам не очень понимаю, но пример работает.
Yandex
Объявления
10.11.2013, 23:02     Проверка введенных данных в С++
Ответ Создать тему
Опции темы

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