Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
1

Программа проверяет корректность ввода данных

18.07.2013, 12:42. Просмотров 3074. Ответов 9
Метки нет (Все метки)

1) Пользователь вводит телефон и электронную почту. Программа проверяет корректность ввода данных.
(Работа со строками и массивами.)

Просто дайте подсказку как реализовать, я сам хочу сделать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2013, 12:42
Ответы с готовыми решениями:

Зацикливается программа при проверке корректность ввода
Добавил в программу проверку на корректный ввод: flag=scanf("%d",&l.num); while (1>flag) ...

Проверка на корректность ввода данных
Имеется 23 текстовых поля textBox. В каждом нужно отследить корректность ввода данных, т.е. в поле...

Проверка на корректность ввода числовых данных
Помогите доделать программу, нужно сделать проверку на букву, при вводе размерности и при вводе...

Проверка текстового поля email на корректность ввода данных
браузер html5 поддерживает, но эта строчка пропускает любой шаблон без @ <input name="e-mail"...

9
4 / 4 / 0
Регистрация: 04.07.2013
Сообщений: 52
18.07.2013, 12:50 2
Цитата Сообщение от MasterYo Посмотреть сообщение
Пользователь вводит телефон
Функция проверяет числа на корректность
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
std::string symbol;
    do
    {
        std::cin >> number;
        if ( std::cin.fail () )
        {
            std::cin.clear ();
            std::cin >> symbol;
            printf ( " %s\n ", " Это не число! Повторите ввод данных " ); continue;
        }
        else break;
    }
    while ( true );
0
Эксперт С++
1889 / 1237 / 354
Регистрация: 16.05.2013
Сообщений: 3,239
Записей в блоге: 6
18.07.2013, 12:52 3
Используй ф-ю getche() - считывание одного символа. Инлайд - #include<conio.h>:
C++
1
2
3
4
5
while (ch != '\r')
{
    ch = getche()
    ....
}
Helo,
Пользователь вводит телефон и электронную почту.
Мне кажется здесь без посимвольной проверки трудно обойтись. И телефон может быть с кодом города.
0
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
18.07.2013, 12:55  [ТС] 4
Цитата Сообщение от Ilot Посмотреть сообщение
Мне кажется здесь без посимвольной проверки трудно обойтись.
а как это сделать?
0
Эксперт С++
1889 / 1237 / 354
Регистрация: 16.05.2013
Сообщений: 3,239
Записей в блоге: 6
18.07.2013, 12:57 5
Ну так я же написал:
C++
1
2
3
4
5
while (ch != '\r')
{
    ch = getche() //переменная будет хранить один символ
    ....//здесь проверяешь символы
}
0
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
18.07.2013, 13:38 6
Вот тебе функция проверки почты. Для проверки телефона желательно указывать формат ввода.

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
bool isValidMail(const char *mail)
{
    int i, j;
    
    //проверяем наличие @
    for(i = 0; mail[i] && mail[i] != '@' && !isspace(mail[i]); i++)
        ;
 
    if(isspace(mail[i]) || !mail[i] || i == 0) return false;
    else if(mail[i] == '@') i++;
 
    //проверяем наличие точки
    for(j = i; mail[j] && mail[j] != '.'; j++)
        ;
 
    if(i == j || !mail[j]) return false;
    else if(mail[j] == '.') j++;
 
    //проверяем наличие текста после точки ru и т.п.
    for(i = j; mail[i]; i++)
        ;
 
    return i != j;
}
Добавлено через 27 минут
Предполагает формат ввода телефона: 123-45-54, почты vasya@mail.ru

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <iostream>
#include <cstring>
using namespace std;
 
#define SIZE_BUF 256
 
int main(void)
{
     char number[SIZE_BUF] = {0};
     char mail[SIZE_BUF] = {0};
     bool isValidMail(const char *);
     bool isValidNumber(const char *);
     int CountDigits(const char *);
     
INPUT_NUMBER:
         cout << "Enter your number: ";
         cin.getline(number, SIZE_BUF);
         if(!isValidNumber(number)){
            cout << "Error number. Please try again." << endl;
            goto INPUT_NUMBER;
         }
     
INPUT_MAIL:
         cout << "Enter your mail: ";
         cin.getline(mail, SIZE_BUF);
         if(!isValidMail(mail)){
            cout << "Error number. Please try again." << endl;
            goto INPUT_MAIL;
         }
    
     system("pause");
     
     return 0;
}
 
bool isValidMail(const char *mail)
{
    int i, j;
    
    for(i = 0; mail[i] && mail[i] != '@' && !isspace(mail[i]); i++)
        ;
 
    if(isspace(mail[i]) || !mail[i] || i == 0) return false;
    else if(mail[i] == '@') i++;
 
    for(j = i; mail[j] && mail[j] != '.'; j++)
        ;
 
    if(i == j || !mail[j]) return false;
    else if(mail[j] == '.') j++;
 
    for(i = j; mail[i]; i++)
        ;
 
    return i != j;
}
 
int CountDigits(const char *num)
{
    int count = 0;
 
    while(isdigit(*num)){
        count++; num++;
    }
    
    if(*num) return 0;
    else return count;
}
 
bool isValidNumber(const char *number)
{
    char buf[SIZE_BUF] = {0};
    char *ptr = buf;
 
    strcpy(buf, number);
    ptr = strtok(buf, "-");
    if(CountDigits(ptr) != 3) return false;
 
    while(ptr = strtok(NULL, "-"))
        if(CountDigits(ptr) != 2) return false;
    
    return true;
}
0
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
18.07.2013, 16:16  [ТС] 7
Блин не догоняю я вы чет заумно объясняете, можно попроще?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    char number[8],email[30];
    
    
    cout<<"Enter your number: ";
    cin.getline(number,8);
    cout<<"Enter your E-mail: ";
    cin.getline(email,30);
    
    getch();
}
Добавлено через 25 минут


Добавлено через 1 час 43 минуты
0
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
18.07.2013, 16:47 8
Что не понятно?
0
Заблокирован
Автор FAQ
18.07.2013, 19:02 9
MasterYo, Безопасный ввод через функцию-шаблон
1
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
19.07.2013, 13:07  [ТС] 10
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    char phone[50], mail[20];
    bool isphone, issobak, ispoint;
    //-------Vvod i proverka telefona
    do
    {
    cout<<"Insert your phone number: ";
    cin.getline(phone,50);
    isphone=true;
    
    if (strlen(phone)!=7)
       isphone=false;
       
    for (int i=0; i<7; i++)
        if (phone[i]<'0' || phone[i]>'9')
           isphone=false;
           
           } while (!isphone);
           
    //-------Vvod i proverka pochti
    do
    {
    cout<<"Insert your mail: ";
    cin.getline(mail,30);
    int sobakpos;
    
    ispoint=issobak=false;
    
    for (int i=0; i<strlen(mail);i++)
    if (mail[i]=='@')
    {
       issobak=true;
       sobakpos=i;
       break;
    }
    if(issobak)
     for (int i=sobakpos; i<strlen(mail); i++)
     {
         if (mail[i]=='.')
         ispoint=true;
         if (mail[i+1]=='@')
         issobak=false;
         }
         } while(!issobak || !ispoint);
           cout<<endl<<phone;
           cout<<endl<<mail;
           getch();
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2013, 13:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Не удаётся проверить корректность ввода данных в текстовое поле
Всем привет есть вин форма нужно сделать следующие что бы рандомно генирировалась буква, затем...

Сделать метод, который проверяет корректность личного кода (isikukood)
Сделать метод, который проверяет корректность личного кода (isikukood) – длина 11 символов. Должна...

Создайте форму ввода данных о пользователе (ФИО, e-mail, телефон). Напишите скрипт, который проверяет правильность заполнения полей формы
Здравствуйте. У меня есть несколько задач, но вроде как в одной теме нельзя размещать несколько...

Напишите программу умножения матриц. Программа должна проверять корректность вводимых данных
№1 Напишите программу умножения матриц. Программа должна проверять корректность вводимых данных. ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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