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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
#1

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

09.03.2013, 20:04. Просмотров 1397. Ответов 24
Метки нет (Все метки)

Нужно написать программу, которая бы проверяла строку на корректность. Допустимый формат вот такой +7 (233) 555-11-22. Как это сделать? В голову ничего толкового не лезет. Написал вот такое, но оно почему-то не работает, в конце рушится и выдает вот такую ​​ошибку: Run-Time Check Failure #2 - Stack around the variable 'phone' was corrupted.
Самой функции проверки не реализовано, думаю что вы поможете
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
#include <iostream>
 
using namespace std;
 
class Phone
{
    friend ostream &operator<<(ostream &,const Phone&);
    friend istream &operator>>(istream &,Phone &);
private:
    char phon[15];
};
 
ostream &operator<<(ostream & out,const Phone &Obj)
{
    out<<Obj.phon;
 
    return out;
}
 
istream &operator>>(istream &inp,Phone &Obj)
{
    inp>>Obj.phon;
 
    return inp;
}
 
int main()
{
    Phone phone;
    cin>>phone;
    cout<<phone;
    system("pause>0");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2013, 20:04     Проверка на корректность входных данных
Посмотрите здесь:

Проверка на корректность ввода года C++
Проверка на корректность операции C++
Портирование кода на С++ (проверка вводимых данных пользователем на корректность) C++
C++ Проверка введенных данных cin на корректность
C++ Проверка на корректность логического выражения
C++ Проверка входных данных: вызов и обработка исключения
Проверка правильности входных параметров конструктора C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5411 / 4807 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.03.2013, 13:31     Проверка на корректность входных данных #21
Цитата Сообщение от The_bolT Посмотреть сообщение
И почему нужно использовать именно двухмерный массив, почему нельзя обойтись простым массивом?
Потому что номер делится на слова, которые по отдельности проверяются на правильность.

Цитата Сообщение от The_bolT Посмотреть сообщение
зачем там эта проверка?
Проверка на количество слов в номере (должно быть три). Проверка на количество символов в этих словах.

Добавлено через 2 минуты
Если результат нужно записать в поле класса (char phon), то, после успешного ввода, из массива последовательно извлечь три слова и записать через пробел (или как нужно).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
10.03.2013, 13:34  [ТС]     Проверка на корректность входных данных #22
alsav22, Спасибо, теперь понял что к чему!
alsav22
5411 / 4807 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.03.2013, 13:38     Проверка на корректность входных данных #23
Самое рациональное - первый вариант. Остальное - извращения (это уже не C++, а что-то непонятное).
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
10.03.2013, 13:41  [ТС]     Проверка на корректность входных данных #24
Я бы с радостью принял первый вариант, но нам нельзя использовать vector ни string, из STL ничего нельзя использовать!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2013, 13:45     Проверка на корректность входных данных
Еще ссылки по теме:

Проверка введенного url адреса на корректность C++
Проверка на корректность введенных данных C++
C++ Проверка на корректность ввода числа
C++ Проверка указателя на корректность
Проверка строки на корректность C++

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

Или воспользуйтесь поиском по форуму:
alsav22
10.03.2013, 13:45     Проверка на корректность входных данных
  #25

Не по теме:

Я это понял.

Yandex
Объявления
10.03.2013, 13:45     Проверка на корректность входных данных
Ответ Создать тему
Опции темы

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