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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
BF_KARATEL
11 / 11 / 0
Регистрация: 01.06.2012
Сообщений: 114
#1

Защита ввода - C++

06.06.2012, 15:44. Просмотров 2548. Ответов 5
Метки нет (Все метки)

Подскажите как осуществить защиту от неправильного ввода то есть если переменная типа int как сделать так что бы пользователь не мог вводить ничего кроме цифр?

Добавлено через 59 секунд
может через директиву #define?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2012, 15:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Защита ввода (C++):

Защита ввода. - C++
Как защитить размер матрицы от набора букв или символов?

Защита от ввода символов - C++
есть код в котором я ввожу цифры нужно сделать что бы через консоль я не могу вводить больше ничего другого кроме цифр возможно такое...

Защита от некорректного ввода - C++
Помогите сделать так, что при вводе букв программа продолжала работать: запрещала ввод букв(только цифры) или просто не учитывала их. Как...

Защита от некорректного ввода - C++
Помогите, пожалуйста, с защитой от некорректного ввода! Программа выполняет задания с помощью рекурсии. Хотел написать защиту на ввод...

Защита от некорректного ввода - C++
Подскажите пожалуйста как доработать защиту от некорректного ввода: // ConsoleApplication4.cpp : Defines the entry point for the console...

Защита от неправильного ввода - C++
Приветствую, делаю контрольную работу по программированию, основное задание сделал, но вот решил добавить защиту от неправильного ввода, но...

5
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
06.06.2012, 19:19 #2
Вот тебе программа, кот. проверяет символы введенного числа(или не-числа), не забудь потом вычислить само число
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//====================================================
// Автор:       programina
// Описание:    программа проверяет какие символы 
//              были введены: цифры или не-цифры
//====================================================
 
#include <stdio.h>
 
int main()
{
    char c[4];  // максимум 4 цифры в числе
    int i;
    int b[4] = {0};
 
    scanf ("%c%c%c%c",&c[0],&c[1],&c[2],&c[3]);
 
    for(i=0;i<4;i++)
    {
        switch (c[i])
        {
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                b[i] = 1;
                break;
                
            default:
                b[i] = 0;
        }
    }
    // если один из символов не является цифрой просим ввести число :)
    if (b[0] == 0 || b[1] == 0 || b[2] == 0 || b[3] == 0)
        printf("%Vvedite chislo\n");
 
    return 0;
}
Добавлено через 43 минуты
Вот дописала в конец превращение 4-х введенных символов в число:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//====================================================
// Автор:       programina
// Описание:    программа проверяет какие символы
//              были введены: цифры или не-цифры
//====================================================
 
#include <stdio.h>
 
int main()
{
    char c[4];  // максимум 4 цифры в числе
    int i;
    int b[4] = {0};
    int x[4] = {0};
 
    scanf ("%c%c%c%c",&c[0],&c[1],&c[2],&c[3]);
 
    for(i=0;i<4;i++)
    {
        switch (c[i])
        {
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                b[i] = 1;
                break;
 
            default:
                b[i] = 0;
        }
    }
 
    // если один из символов не является цифрой просим ввести число :)
    if (b[0] == 0 || b[1] == 0 || b[2] == 0 || b[3] == 0)
        printf("%Vvedite chislo\n");
 
    // превращает символы в цифры
    for (i=0;i<4;i++)
    {
        if      (c[i] == '0')   { x[i] = 0; }
        else if (c[i] == '1')   { x[i] = 1; }
        else if (c[i] == '2')   { x[i] = 2; }
        else if (c[i] == '3')   { x[i] = 3; }
        else if (c[i] == '4')   { x[i] = 4; }
        else if (c[i] == '5')   { x[i] = 5; }
        else if (c[i] == '6')   { x[i] = 6; }
        else if (c[i] == '7')   { x[i] = 7; }
        else if (c[i] == '8')   { x[i] = 8; }
        else if (c[i] == '9')   { x[i] = 9; }
    }
 
    // вычисление числа
    int chislo = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
 
    // вот оно:))
    printf("%d\n", chislo);
 
    return 0;
}
Добавлено через 2 минуты
То есть если пользователь введет например что-то вроде 0012, то на выходе будет целое число типа int равное 12
1
BF_KARATEL
11 / 11 / 0
Регистрация: 01.06.2012
Сообщений: 114
06.06.2012, 19:24  [ТС] #3
мене надо сделать так что бы пользователь не мог вводить так d454 то есть букв не было во введенном
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
06.06.2012, 19:31 #4
Цитата Сообщение от BF_KARATEL Посмотреть сообщение
мене надо сделать так что бы пользователь не мог вводить так d454 то есть букв не было во введенном
А где надо вводить? В консоли? Наверно такое не возможно сделать, чтобы консоль не отображала символ, кот. вводится...
0
BF_KARATEL
11 / 11 / 0
Регистрация: 01.06.2012
Сообщений: 114
06.06.2012, 19:42  [ТС] #5
допустим пусть вот эта левая программа
допустим пользователь набирал 5665 а невзначай набрал 566yt5 и нажал интер мне надо сделать запрет на ввод букв.

если в этой проге набрать 566yt5 он выдаст566 а надо 5665

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main()
{
int A;  clrscr();
cout<<"\n vvedite A: ";
cin>>A;
 
cout<<"\n\n AAAAAAAAA"<<A;
 
getch();
}
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
06.06.2012, 19:42 #6
Вот товарищ fasked писал по поводу ввода данных на Си, будет полезно к ознакомлению.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 19:42
Привет! Вот еще темы с ответами:

Защита от ввода букв - C++
Нужно в программу вставить защиту от ввода букв. Что то у меня не получается. (В программе вводится только цифра) #include...

Защита от некорректного ввода - C++
Здравствуйте! Нужно осуществить контроль при заполнении матрицы, если введены не корректные данные, вывести сообщение, и переспросить...

Защита от ввода букв - C++
Всем привет. Необходимо сделать защиту от ввода букв. числа не больше 40. int size; do { printf(&quot;\nВведите размер массива...

Защита от некорректного ввода - C++
Будьте добры, помогите написать защиту от дурака на ввод массива элементы которого тип float Буду очень благодарен.


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

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

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