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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
BF_KARATEL
 Аватар для BF_KARATEL
11 / 11 / 0
Регистрация: 01.06.2012
Сообщений: 114
06.06.2012, 15:44     Защита ввода #1
Подскажите как осуществить защиту от неправильного ввода то есть если переменная типа int как сделать так что бы пользователь не мог вводить ничего кроме цифр?

Добавлено через 59 секунд
может через директиву #define?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2012, 15:44     Защита ввода
Посмотрите здесь:

C++ Защита ввода.
Защита от некорректного ввода C++
Защита от ввода букв C++
защита от ввода символов C++
Защита от ввода букв C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
 Аватар для programina
1912 / 597 / 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
BF_KARATEL
 Аватар для BF_KARATEL
11 / 11 / 0
Регистрация: 01.06.2012
Сообщений: 114
06.06.2012, 19:24  [ТС]     Защита ввода #3
мене надо сделать так что бы пользователь не мог вводить так d454 то есть букв не было во введенном
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
06.06.2012, 19:31     Защита ввода #4
Цитата Сообщение от BF_KARATEL Посмотреть сообщение
мене надо сделать так что бы пользователь не мог вводить так d454 то есть букв не было во введенном
А где надо вводить? В консоли? Наверно такое не возможно сделать, чтобы консоль не отображала символ, кот. вводится...
BF_KARATEL
 Аватар для 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();
}
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
06.06.2012, 19:42     Защита ввода #6
Вот товарищ fasked писал по поводу ввода данных на Си, будет полезно к ознакомлению.
Yandex
Объявления
06.06.2012, 19:42     Защита ввода
Ответ Создать тему
Опции темы

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