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

Классы

06.06.2020, 09:11. Просмотров 292. Ответов 9


Помогите пожалуйста перетащить проверку пароля в класс. Пожаааалуйста. Я пробовала, но у меня не получалось.

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
#include <iostream>
#include <stdlib.h>
#include <string>
#include <fstream>
#include <windows.h>
#define _CRT_SECURE_NO_WARNINGS
 
using namespace std;
string A; //переменная для ввода и чтения текста
int x = 0; //для количества попыток
 
class parol
{
public:
    //функция шифрования
    string Caesar(string c)
    {
        char B[100];
        int C[100], i, j;
        j = c.length();
        cout << "Зашифрованный пароль:" << endl; //перевод сдвинутого кода в символы
        for (i = 0; i < j; i++)
        {
            C[i] = (int)(c[i]) + 5; //сдвиг на 5 символов
            int N = C[i]; 
            char M = static_cast<char>(N); //преобразование одного типа в другой
            c[i] = M;
            cout << M << ' ';
        }
        cout << endl << endl;
        return c;
    }
 
    //функция дешифрования
    string Caesarcipher(string c)
    {
        char B[100];
        int C[100], i, j;
        j = c.length();
        for (i = 0; i < j; i++)
        {
            B[i] = (int)(c[i]);
            cout << B[i] << ' ';
        }
        cout << endl;//выводим числа из файла
        cout << "Расшифрованный пароль:" << endl; //перевод сдвинутого кода в символы
        for (i = 0; i < j; i++)
        {
            C[i] = (int)(c[i]) - 5; //сдвиг на 5 символов
            int N = C[i];
            char M = static_cast<char>(N); //преобразование одного типа в другой
            c[i] = M;
            cout << M << ' ';
        }
        cout << endl << endl;
        return c;
    }
};
 
//создание и чтение файла
int writeride()
{
    parol Protecrion;
    setlocale(LC_ALL, "Russian");
    string a = "parol.txt"; //имя нашего файла
    fstream b; //поток для записи
    //1   П Р О Г Р А М М А
    cout << "Добро пожаловать" << endl << endl;
    b.open(a, fstream::in | fstream::out); //открытие файла для записи
    if (!b.is_open())
    {
        cout << "Файл не удалось открыть" << endl;
    }
    else
    {
        cout << "Файл удалось открыть" << endl;
        string c; //переменная для шифрования
        //запись в файл нашего пароля
        {
            {
                cout << "Задайте свой пароль" << endl;
                getline(cin, c);
                A = Protecrion.Caesar(c);
            }
            b << A << "\n";
        }
        b.close(); //закрытие файла
 
    //2   П Р О Г Р А М М А
        //открытие файла для чтения
        b.open(a, fstream::in | fstream::out); 
        if (!b.is_open())
        {
            cout << "Ошибка открытия файла!" << endl;
        }
        else
        {
            cout << "Файл удалось открыть" << endl;
            string c; //переменная для шифрования
            //на экране появляется наш пароль
            {
                cout << "Наш пароль: ";
                getline(b, c);
                A = Protecrion.Caesarcipher(c);
            }
 
            string n; //переменная для повторного ввода
            int x = 0; //для количества попыток
            while (x < 3) //3 попытки для открытия доступа
            {
                x += 1;
                cout << "Введите пароль ещё раз: ";
                cin >> n;
                if (n == A)
                {
                    cout << "Пароль верный! Доступ разрешен." << endl;
                    break;
                }
                else
                {
                    cout << "Неверный пароль! Доступ закрыт." << endl;
                }
                if (x == 3)
                {
                    cout << "Извините, но доступ закрыт.";
                }
            }
        }
        return 0;
    }
}
 
void enterpass() //проверка пароля
{
    setlocale(LC_ALL, "Russian");
    string n; //переменная для повторного ввода
    int x = 0; //для количества попыток
    while (x < 3) //3 попытки для открытия доступа
    {
        x += 1;
        cout << "Введите пароль ещё раз: ";
        cin >> n;
        if (n == A)
        {
            cout << "Пароль верный! Доступ разрешен." << endl;
            break;
        }
        else
        {
            cout << "Неверный пароль! Доступ закрыт." << endl;
        }
        if (x == 3)
        {
            cout << "Извините, но доступ закрыт.";
        }
    } 
    
}
 
int main()
{
    writeride(); //вызываем функцию создания и чтения файла
    enterpass(); //вызываем функцию проверки пароля
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2020, 09:11
Ответы с готовыми решениями:

Непонятна тема (Классы содержащие другие классы, как данные члены )
Изучаю книгу Джесс Либерти(в частности эту главу в данный момент) #include &lt;iostream&gt; class...

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

Как struct Queue и его операции превратить в классы, то есть нужно сделать тоже самое, но через классы
Как struct Queue и его операции превратить в классы, то есть нужно сделать тоже самое, но используя...

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

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
9
269 / 216 / 50
Регистрация: 14.10.2014
Сообщений: 972
06.06.2020, 10:21 2
Цитата Сообщение от LoloNana Посмотреть сообщение
перетащить проверку пароля в класс
Легко:

Кликните здесь для просмотра всего текста

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
#include <iostream>
#include <stdlib.h>
#include <string>
#include <fstream>
#include <windows.h>
#define _CRT_SECURE_NO_WARNINGS
 
using namespace std;
string A; //переменная для ввода и чтения текста
int x = 0; //для количества попыток
 
class parol
{
public:
    //функция шифрования
    string Caesar(string c)
    {
        char B[100];
        int C[100], i, j;
        j = c.length();
        cout << "Зашифрованный пароль:" << endl; //перевод сдвинутого кода в символы
        for (i = 0; i < j; i++)
        {
            C[i] = (int)(c[i]) + 5; //сдвиг на 5 символов
            int N = C[i];
            char M = static_cast<char>(N); //преобразование одного типа в другой
            c[i] = M;
            cout << M << ' ';
        }
        cout << endl << endl;
        return c;
    }
 
    //функция дешифрования
    string Caesarcipher(string c)
    {
        char B[100];
        int C[100], i, j;
        j = c.length();
        for (i = 0; i < j; i++)
        {
            B[i] = (int)(c[i]);
            cout << B[i] << ' ';
        }
        cout << endl;//выводим числа из файла
        cout << "Расшифрованный пароль:" << endl; //перевод сдвинутого кода в символы
        for (i = 0; i < j; i++)
        {
            C[i] = (int)(c[i]) - 5; //сдвиг на 5 символов
            int N = C[i];
            char M = static_cast<char>(N); //преобразование одного типа в другой
            c[i] = M;
            cout << M << ' ';
        }
        cout << endl << endl;
        return c;
    }
 
    void enterpass();  //проверка пароля
 
};
 
//создание и чтение файла
int writeride()
{
    parol Protecrion;
    setlocale(LC_ALL, "Russian");
    string a = "parol.txt"; //имя нашего файла
    fstream b; //поток для записи
               //1   П Р О Г Р А М М А
    cout << "Добро пожаловать" << endl << endl;
    b.open(a, fstream::in | fstream::out); //открытие файла для записи
    if (!b.is_open())
    {
        cout << "Файл не удалось открыть" << endl;
    }
    else
    {
        cout << "Файл удалось открыть" << endl;
        string c; //переменная для шифрования
                  //запись в файл нашего пароля
        {
            {
                cout << "Задайте свой пароль" << endl;
                getline(cin, c);
                A = Protecrion.Caesar(c);
            }
            b << A << "\n";
        }
        b.close(); //закрытие файла
 
                   //2   П Р О Г Р А М М А
                   //открытие файла для чтения
        b.open(a, fstream::in | fstream::out);
        if (!b.is_open())
        {
            cout << "Ошибка открытия файла!" << endl;
        }
        else
        {
            cout << "Файл удалось открыть" << endl;
            string c; //переменная для шифрования
                      //на экране появляется наш пароль
            {
                cout << "Наш пароль: ";
                getline(b, c);
                A = Protecrion.Caesarcipher(c);
            }
 
            string n; //переменная для повторного ввода
            int x = 0; //для количества попыток
            while (x < 3) //3 попытки для открытия доступа
            {
                x += 1;
                cout << "Введите пароль ещё раз: ";
                cin >> n;
                if (n == A)
                {
                    cout << "Пароль верный! Доступ разрешен." << endl;
                    break;
                }
                else
                {
                    cout << "Неверный пароль! Доступ закрыт." << endl;
                }
                if (x == 3)
                {
                    cout << "Извините, но доступ закрыт.";
                }
            }
        }
        return 0;
    }
}
 
void parol::enterpass() //проверка пароля
{
    //setlocale(LC_ALL, "Russian");
    string n; //переменная для повторного ввода
    int x = 0; //для количества попыток
    while (x < 3) //3 попытки для открытия доступа
    {
        x += 1;
        cout << "Введите пароль ещё раз: ";
        cin >> n;
        if (n == A)
        {
            cout << "Пароль верный! Доступ разрешен." << endl;
            break;
        }
        else
        {
            cout << "Неверный пароль! Доступ закрыт." << endl;
        }
        if (x == 3)
        {
            cout << "Извините, но доступ закрыт.";
        }
    }
 
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    parol p;
 
    writeride(); //вызываем функцию создания и чтения файла
    p.enterpass(); //вызываем функцию проверки пароля
    return 0;
}


Вот только, похоже, что простым переносом здесь не отделаться - прога всё равно (логически, а не синтаксически) нормально не работает
0
0 / 0 / 0
Регистрация: 09.05.2020
Сообщений: 24
06.06.2020, 10:35  [ТС] 3
Спасибо большое, остальное я постараюсь доработать
0
269 / 216 / 50
Регистрация: 14.10.2014
Сообщений: 972
06.06.2020, 10:41 4
Цитата Сообщение от LoloNana Посмотреть сообщение
остальное я постараюсь доработать
Там косяк с чтением файла - есть ofstream - для записи в файл, есть ifstream - для чтения из файла. fstream он как для чтения, так и для записи. Но почему то не создаёт файл - сейчас разбираюсь с этим.
0
0 / 0 / 0
Регистрация: 09.05.2020
Сообщений: 24
06.06.2020, 10:51  [ТС] 5
У меня он создаёт, с этим всё в порядке. Проблема с количеством попыток
0
Миниатюры
Классы   Классы  
269 / 216 / 50
Регистрация: 14.10.2014
Сообщений: 972
06.06.2020, 11:02 6
Цитата Сообщение от LoloNana Посмотреть сообщение
У меня он создаёт
c fstream никогда особо не работал - пробовал пару раз, но как то муторно с ним. ofstream - если файла нет - создаёт его, а fstream похоже что нет - его самому - "ручками" надо создавать. Хотя может я что-то не так делаю.
0
0 / 0 / 0
Регистрация: 09.05.2020
Сообщений: 24
06.06.2020, 11:04  [ТС] 7
Да, этот текстовый файл сама создавала
0
269 / 216 / 50
Регистрация: 14.10.2014
Сообщений: 972
06.06.2020, 11:08 8
Цитата Сообщение от LoloNana Посмотреть сообщение
Проблема с количеством попыток
что именно не так? Чтоб несколько раз не спрашивал вводить пароль?
0
0 / 0 / 0
Регистрация: 09.05.2020
Сообщений: 24
06.06.2020, 11:16  [ТС] 9
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Чтоб несколько раз не спрашивал вводить пароль?
ну да

Когда вводишь верный пароль, он просит 2 раза ввести, хотя нужно 1 попытки. Когда вводишь 3 раза неправильный пароль он выводит:

Введите пароль ещё раз: nmsd
Неверный пароль! Доступ закрыт.
Введите пароль ещё раз: dhgf
Неверный пароль! Доступ закрыт.
Введите пароль ещё раз: sjgdf
Неверный пароль! Доступ закрыт.
Извините, но доступ закрыт.Введите пароль ещё раз: sjhf
Неверный пароль! Доступ закрыт.
Введите пароль ещё раз: shfv
Неверный пароль! Доступ закрыт.
Введите пароль ещё раз: shgf
Неверный пароль! Доступ закрыт.
Извините, но доступ закрыт.

Хотя так по идее не должно быть. По итогу он 2 раза повторяет цикл проверки пароля.

Добавлено через 2 минуты
Цитата Сообщение от Recrut_rf Посмотреть сообщение
что именно не так?
уже исправила сама, глупая ошибка, ахахахах. Спасибо Вам большое за помощь
0
269 / 216 / 50
Регистрация: 14.10.2014
Сообщений: 972
06.06.2020, 11:19 10
Цитата Сообщение от LoloNana Посмотреть сообщение
уже исправила сама
Последняя функция, которую вы просили в класс добавить, ненужна в main достаточно функции и всё
C++
1
writeride();
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2020, 11:19

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

Классы и наследование (Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию вычисления объёма.)
Уважаевые, помогите написать прожку на экзамене: Создать класс 3D фигура, и производные классы...

Классы возможностей(Mixin классы)
Не могу понять смысла использования mixin классов( это класс в котором есть только методы и нет...

Классы, включающие другие классы
Столкнулся вот с таким кодом: #include &lt;iostream&gt; class Point { public: void SetX(int x) ...

классы/дочерние классы/методы
помогите пожалуйста! надо что выводились только учебеники. чтоб былo через GetTip. h файл...

Динамические массивы структур;Классы. Класс массивы структур;Классы. Класс динамического массива структур.
Здраствуйте.Помогите с практичкой мое задание 4.3. Строка таблицы данных содержит следующую...

КЛАССЫ
Очень нужна помощь!!! подскажите где ошибки: #include &lt;iostream&gt; #include &lt;windows.h&gt; char*...


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

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

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