Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 30.10.2016
Сообщений: 17
1

Проверить соответствие программы заданию

01.07.2017, 16:07. Показов 1164. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Я еще не очень разбираюсь в классах С++. Я даже не уверен в том, что правильно понял задание. Посмотрите пожалуйта, на мою програму, верна ли она? (задание снизу).
И как можно реализовать часть 3 ?

Вот мой код:
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#include <iostream>
#include <string.h>
#include <ctype.h>
 
using namespace std;
 
class StringValidator
{
public:
    virtual ~StringValidator() {}; 
    virtual bool isValid(string input) = 0; 
};
 
 
/**********************************************************/
class DummyValidator : public StringValidator {
public:
 
    bool isValid(std::string input);
};
 
bool DummyValidator::isValid(std::string input) 
{
    return true;
}
 
/**********************************************************/
class ExactValidator : public StringValidator {
public:
    ExactValidator(string pattern);
    bool isValid(std::string input);
 
private:
    string pattern;
};
 
 
ExactValidator:: ExactValidator(string pattern){
    this -> pattern = pattern;
}
 
bool ExactValidator::isValid(std::string input)
{
    if ( this -> pattern == input ) return true;
    else return false;
}
 
/**********************************************************/
void printValid(StringValidator &validator, string input)
{
    cout << "The string '" << input << "' is "<< (validator.isValid(input) ? "valid" : "invalid") << endl;
}
 
 
/**********************************************************/
 
class MinLengthValidator : public StringValidator {
public:
    bool isValid ( string input );
    MinLengthValidator(string pattern);
 
private:
    string pattern;
};
 
bool MinLengthValidator::isValid ( string input ) {
        if ( input.length () < 3) return false;
        else return true;
    }
 
MinLengthValidator::MinLengthValidator(string pattern){
    this -> pattern = pattern;
}
/**********************************************************/
class MaxLengthValidator : public StringValidator {
public:
    bool isValid ( string input );
    MaxLengthValidator(string pattern);
 
private:
    string pattern;
};
 
bool MaxLengthValidator::isValid ( string input ) {
        if ( input.length () > 10) return false;
        else return true;
    }
 
MaxLengthValidator::MaxLengthValidator ( string pattern ){
    this -> pattern = pattern;
}
/**********************************************************/
 
class LowCaseValidator : public StringValidator {
public:
    bool isValid ( string input );
    LowCaseValidator ( string pattern );
 
private:
    string pattern;
};
 
LowCaseValidator::LowCaseValidator ( string pattern ) {
    this -> pattern = pattern;
}
 
bool LowCaseValidator::isValid ( string input ) {
    for ( int i = 0; i < input.length(); i++ ) {
        if ( islower ( input [i] ) ) {
            return true;
            break;
        }
        else return false;
    }
}
 
/**********************************************************/
 
class UpCaseValidator : public StringValidator {
    bool isValid ( string input );
    UpCaseValidator ( string pattern );
 
private:
    string pattern;
};
 
bool UpCaseValidator::isValid ( string input ){
    for ( int i = 0; i < input.length(); i++ ) {
        if ( isupper ( input [i] ) ) {
            return true;
            break;
        }
        else return false;
    }
}
 
UpCaseValidator::UpCaseValidator ( string pattern ) {
    this -> pattern = pattern;
}
/**********************************************************/
 
class SymbolValidator : public StringValidator {
    bool isValid ( string input );
    SymbolCaseValidator ( string pattern );
 
private:
    string pattern;
};
 
bool SymbolValidator::isValid ( string input ) {
    for ( int i = 0; i < input.length(); i++ ) {
        if ( ispunct ( input [i] ) ) {
            return true;
            break;
        }
        else return false;
    }
}
 
SymbolValidator::SymbolCaseValidator ( string pattern ) {
    this -> pattern = pattern;
}
/**********************************************************/
 
int main()
{
    DummyValidator dummy;
    printValid(dummy, "hello");
 
    ExactValidator exact("secret");
    printValid(exact, "hello");
    printValid(exact, "secret");
 
    return 0;
}


Вот задание:

Подтверждение: часть 1

В данном задании необходимо использовать (чистые) виртуальные функции для создания желаемого интерфеса, реализованного объектами классов-потомков.
Первая часть задачи должна выполнять проверку пароля.
Мы создадим общий интерфейс в абстрактном классе StringValidator для проверки парольной фразы введенного текста с помощью функции isValid.
Используйте код программы, приведенный ниже, и организуйте для класса ExactValidator конструктор, инициализуватиме поле pattern для хранения пароля, а также переопределите функцию isValid, которая принимает в качестве параметра входная строка input и проверяет соответствует пароля, сохраненном в pattern.

Код программы:
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
#include <iostream>
#include <string>
using namespace std;
 
class StringValidator
{
***public:
virtual ~ StringValidator () {}; // виртуальный конструктор
virtual bool isValid (string input) = 0; // чистая виртуальная функция для проверки пароля
};
 
class DummyValidator: public StringValidator {
***public:
bool isValid (std :: string input)
};
 
bool DummyValidator :: isValid (std :: string input) // принимать любой пароль
{
return true;
}
 
class ExactValidator: public StringValidator {
****public:
ExactValidator (string pattern)
bool isValid (std :: string input)
****private:
string pattern;
};
 
ExactValidator :: ExactValidator (string pattern) {
// Добавьте код
}
 
bool ExactValidator :: isValid (std :: string input)
{
// добавьте код
}
void printValid (StringValidator & validator, string input)
// выводит результат проверки в зависимости от того, объект какого класса используется
{
cout << "The string '" << input << "' is" << (validator.isValid (input)? "valid": "invalid")
}
int main ()
{
DummyValidator dummy;
printValid (dummy, "hello")
cout << endl;
ExactValidator exact ( "secret")
printValid (exact, "hello")
printValid (exact, "secret")
return 0;
}
Результат выполнения:
The string 'hello' is valid
The string 'hello' is invalid
The string 'secret' is valid

3.2. Подтверждение: часть 2

На основе предыдущего задания реализуйте проверку пароля согласно следующим правилам:
- Пароль должен иметь определенную минимальную и максимальную длину
- содержать хотя бы одну маленькую и одну букву
- Одну цифру
- И одну специальную отметку
Дополните программу такими классами, в каждом определите свою функцию isValid, которая будет возвращать true false в зависимости от выполнения определенных условий:

MinLengthValidator и MaxLengthValidator для проверки, в соответствии минимально и максимально допустимой длины пароля.
LowCaseValidator и UpCaseValidator - соответственно строчных и прописных букв.
SymbolValidator - для проверки наличия специальных символов.

Выведите результат проверки на экран с помощью функции printValid.

3.3. Подтверждение: часть 3 (дополнительное задание)

Добавьте к созданному набору класс PatternValidator который бы считал введенную строку соответствующим, если хотя бы его часть совпадает с некоторым заданным шаблоном поиска.
В частности, при создании шаблона используются следующие обозначения:

- Шаблон не содержит пробелов
- Буква 'D' соответствует десятичной цифре, например шаблона "DDDD" ответят строки "1234", "2309" и т.д.
- Буква 'A' заменяет любую букву латинского алфавита (большую или малую), так шаблон "AAA" подойдет для строк "CAT", "dog", "ToC" и т.д.
- Малые буквы в шаблоне отвечать большим буквам, так "cat" будет отвечать строкам "Cat", "cat" "CAT", и т.д.
- Символ '?' Обозначает любой символ, включая пробел, поэтому шаблона "a? B" будет отвечать строку "A + B", "a0b", "Acb", "a B" и т.д. ..
- Любой знак пунктуации кроме '?' обозначать соответствующий символ строки, поэтому шаблон "AA-DDD" подойдет для строк "NE-785", "am-236", etc.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2017, 16:07
Ответы с готовыми решениями:

Не могу проверить переменную класса на соответствие NULL
Здравствуйте. Есть переменная класса private char *pGetQuery; В конструкторе ей присваивается...

Проверить введённое пользователем число на соответствие условию
Напишите программу, которая позволяет вводить данные, использует вложенный условный оператор, и...

Проверить файл на соответствие числа открывающих и закрывающих скобок
Помогите решить задачу по теме текстовых файлов, пожалуйстаааа Дан текстовый файл f,...

Напишите пожалуйста код программы по фото заданию!
П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом....

1
79 / 67 / 28
Регистрация: 22.04.2016
Сообщений: 384
02.07.2017, 01:27 2
vortex_, Для начала - это виртуальный деструктор, а не конструктор
C++
1
virtual ~ StringValidator () {}; // виртуальный конструктор
C++
1
virtual ~ StringValidator () {}; // виртуальный деструктор
0
02.07.2017, 01:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2017, 01:27
Помогаю со студенческими работами здесь

Проверить программу на соответствие числа открывающихся и закрывающихся круглых и фигурных скобок
Дан текстовый файл, содержащий программу на языке С++. Проверить эту программу на соответствие...

Проверить текст программы на соответствие числа открывающих и закрывающих круглых скобок
Дан текстовый файл F, содержащий программу на языке Паскаль. Проверить эту программу на...

Проверить файл программы на соответствие числа открывающих и закрывающих операторных скобок (begin и end)
Дан текстовый файл F,содержащий программа на языке паскаль.проверить эту программу на...

Прошу проверить на соответствие
Здорово всем.Если не трудно то проверьте подходят ли комплектующие. Комп для Инет+фильмы+игры(на...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru