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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Некорректно отображается содержимое файла http://www.cyberforum.ru/cpp-beginners/thread925062.html
Написал программку для чтения файла, файл считывается, но содержимое его отображается некорректно, например так: 0014FC. Подскажите метод корректного вывода. #include<iostream> #include<conio.h> #include<fstream> using namespace std; int main() { setlocale(0,"");
C++ Алгоритмы обработки изображений и видео Привет всем! Я только только начинаю изучать программирование - рекомендовали начать немного с турбо паскаля, а потом перейти на С - как вы считаете с какого С языка начать изучать программирование? И конкретный вопрос - меня интересуют методы построения алгоритмов для обработки видео (автоматический захват объекта и контроль его движения - то есть скорость, и прочие параметры) Как я понимаю... http://www.cyberforum.ru/cpp-beginners/thread925035.html
Битовые операции C++
Всем привет! Помогите решить интересную задачу! Нужно ниже указный код переписать без условных операторов используя только битовые операции т.е & | ^ ~ << >>. Дополнительных переменных добавлять нельзя, так же нельзя использовать массивы. /* значения a,value1,result1,result2 задаются пользователем */ if ( a == value1) { b = result1; } else { b = result2;
C++ Быстрый ввод и вывод
Добрый день. Прошу прощения за нубский вопрос, но все-таки... Хотелось бы узнать у гуру, какие операторы обеспечивают самый быстрой ввод и вывод в файл.
C++ Возможно ли работать с _CrtDumpMemoryLeaks() в MinGW? http://www.cyberforum.ru/cpp-beginners/thread924972.html
_CrtDumpMemoryLeaks() может работать в mingw или это только для студии?
C++ Шаблон функции, принимающей обычные массивы и объекты Нужно чтобы функция одинаково хорошо принимала массив long и объект vector <string>, чтобы затем удалить повторяющиеся элементы, отсортировать и вернуть количество элементов в новом массиве. Как лучше всего обеспечить приём аргументов, итераторами? Программа: #include <iostream> #include <algorithm> #include <set> #include <vector> #include <iterator> using std :: cout; using std :: cin;... подробнее

Показать сообщение отдельно
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
18.07.2013, 13:38     Программа проверяет корректность ввода данных
Вот тебе функция проверки почты. Для проверки телефона желательно указывать формат ввода.

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;
}
 
Текущее время: 11:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru