0 / 0 / 0
Регистрация: 11.01.2015
Сообщений: 8
1

Проверка пароля введенного с клавиатуры

07.09.2018, 22:39. Показов 17188. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа должна проверять пароль, введенный с клавиатуры и если он не верный запрашивать его ввод еще раз, но функция не перезаписывает свое значение после неверного ввода
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
#include <iostream>
#include <string>
 
using namespace std;
 
int check_pass(string password)
{
    setlocale(0, "");
    bool t = false;
    string valid_pass = "qwerty123";
    if (password == valid_pass) {
        cout << "Доступ разрешен." << endl;
    }
    else {
        cout << "Неверный пароль!" << endl;
    }
    if (password == valid_pass) {t = true;}
    return t;
}
int pause()
{
    int a;
    cin >> a;
    return 0;
}
 
int main()
{
    setlocale(0, "");
    string user_pass;
    int x = 0;
    cout << "Введите пароль: ";
    getline(cin, user_pass);
    check_pass(user_pass);
    bool y = check_pass(user_pass);
    if (y == false) {
        while (y != true) {
            getline(cin, user_pass);
            check_pass(user_pass);
        }
    }
    else {
        cout << "Доступ к файлам получен. Сейчас фото-";
        printf("i",x);
    }
    pause(); 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2018, 22:39
Ответы с готовыми решениями:

Проверка введенного пароля
Пользователь вводит пароль 2 раза. Программа сравнивает данные и проверяет - есть ли в пасс-фразе...

Проверка введённого пароля
Срочно нужен код вот к этой задачке: Написать программу на языке C++ c применением оператора for...

Проверка правильности введенного пароля
Как написать программу, которая будет проверять верность введенного пароля. Известно что в пароле...

Ввод и проверка правильности введенного пароля
Код не мой взят из учебника. #include &lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;cstring&gt; using...

8
7428 / 5022 / 2891
Регистрация: 18.12.2017
Сообщений: 15,694
07.09.2018, 23:15 2
Цитата Сообщение от dimassturbo Посмотреть сообщение
Программа должна проверять пароль, введенный с клавиатуры и если он не верный запрашивать его ввод еще раз
под это условие:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string password;   
    do
    {
    cout << "Password:\n";  getline(cin, password);
    if (password!="qwerty123") cout <<"Incorrect password. Repeat please..."<<endl;
    }
    while (password!="qwerty123");
    cout <<"Password accepted\n";
system("pause");
return 0;
}
или нужен код под другое условие ?
0
0 / 0 / 0
Регистрация: 11.01.2015
Сообщений: 8
07.09.2018, 23:32  [ТС] 3
Да. Изучаю сейчас функции и не могу понять почему функция меин не получает нормально значение из функции чек пасс
0
Модератор
Эксперт С++
13410 / 10520 / 6285
Регистрация: 18.12.2011
Сообщений: 28,092
08.09.2018, 07:25 4
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
#include <iostream>
#include <string>
 
using namespace std;
 
bool check_pass(string password)
{
    string valid_pass = "qwerty123";
    if (password == valid_pass) {
        cout << "Доступ разрешен." << endl;
        return true;
    }
    cout << "Неверный пароль!" << endl;
    return false;
}
void pause()
{
    cout << "\nНажмите Enter для продолжения" << endl;
    cin.get(); 
}
 
int main()
{
    setlocale(LC_ALL, "Rus");
    string user_pass;
    do
    { 
        cout << "Введите пароль: ";
        getline(cin, user_pass);
    } while (!check_pass(user_pass));
    cout << "Доступ к файлам получен. Сейчас фото-";
    int x = 0;
    cout<<x;
    pause();
    return 0;
}
0
15 / 13 / 4
Регистрация: 16.08.2018
Сообщений: 125
08.09.2018, 15:36 5
На, продвинутый ввод пароля в одной функцией с использованием векторов.
Если нужно получение пароля из файла, то это дело другое, здесь должно быть шифрование(могу сделать без него) я могу напаять канифолью под названием fstream получение пароля(или пароля с Username) из файла.
Мжт шифровку сделаю.
Но вот прототип настоящего времени:
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
//#include "pch.h" //Для нового VS
//#include "stdafx"//Для старого VS
#include <windows.h>
#include <iostream>
#include <vector>
#include <conio.h>
 
int main()
{
    setlocale(LC_ALL, "rus");
    using namespace std;
    vector<char> password;
    vector<char> input;
    int bufer = 0;
    cout << "Зарегистрируйте пароль:";
    for (size_t i = 0; i != 666; i++)
    {
        bufer = _getch();
        if (bufer == 13)
        break;
        password.insert(password.end(), bufer);
        cout << static_cast<char>(bufer);
    }
    system("cls");
    //Говорят, что изпользование goto - бессмысленно и есть другие решения. Но знаете? Мне пофиг, Я ЧСВ кодер и мне пофиг.
    Reply: //Повторная проверка пароля
    cout << "Введите пароль:";
    for (size_t i = 0; i != 666; i++)
    {
        bufer = _getch();
        if (bufer == 13)
            break;
        input.insert(input.end(), bufer);
    }
    input.erase(input.begin());
    if (input == password)
    {
        cout << "Доступ разрешён\n";
        Sleep(1200);
        while (true)
        {
            cout << "LOL ";
        }
    }
    else
 
    {
        system("color 4");
        cout << "Н Е П Р А В И Л Ь Н О";
        system("pause");
        system("color 7");
        goto Reply;
    }
 
    return 0;
}

Добавлено через 13 минут
ОЙ! простите, ошибся.
Забыл написать очистку вектора в случае неправильного пароля.
Вот правильно:
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
//#include "pch.h" //Для нового VS
//#include "stdafx"//Для старого VS
#include <windows.h>
#include <iostream>
#include <vector>
#include <conio.h>
 
int main()
{
    setlocale(LC_ALL, "rus");
    using namespace std;
    vector<char> password;
    vector<char> input;
    int bufer = 0;
    cout << "Зарегистрируйте пароль:";
    for (size_t i = 0; i != 666; i++)
    {
        bufer = _getch();
        if (bufer == 13)
        break;
        password.insert(password.end(), bufer);
        cout << static_cast<char>(bufer);
    }
    system("cls");
    //Говорят, что изпользование goto - бессмысленно и есть другие решения. Но знаете? Мне пофиг, Я ЧСВ кодер и мне пофиг.
    Reply: //Повторная проверка пароля
    cout << "Введите пароль:";
    for (size_t i = 0; i != 666; i++)
    {
        bufer = _getch();
        if (bufer == 13)
            break;
        input.insert(input.end(), bufer);
    }
    input.erase(input.begin());
    if (input == password)
    {
        cout << "Доступ разрешён\n";
        Sleep(1200);
        while (true)
        {
            cout << "LOL ";
        }
    }
    else
 
    {
        system("color 4");
        cout << "Н Е П Р А В И Л Ь Н О\n";
        system("pause");
        system("color 7");
        input.clear(); //Эта строчка и очищает вектор
        goto Reply;
    }
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 11.01.2015
Сообщений: 8
08.09.2018, 19:26  [ТС] 6
Спасибо, только начал изучать c++ и взял это задание только чтобы с функциями разобраться, не понимаю в чем ошибка именно в моей программе. Когда ввожу неверный пароль, а потом верный значение функции не передается и сообщение с доступом к файлу не высвечивается.
0
Модератор
Эксперт С++
13410 / 10520 / 6285
Регистрация: 18.12.2011
Сообщений: 28,092
08.09.2018, 19:35 7
Цитата Сообщение от dimassturbo Посмотреть сообщение
Когда ввожу неверный пароль
Смотрите:
Цитата Сообщение от dimassturbo Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
check_pass(user_pass); // лишняя строка, результат никуда не записывается
bool y = check_pass(user_pass); 
if (y == false) // 1. надо писать [B]if(!y)[/B] 2. далее идет эта проверка еще раз
{ 
     while (y != true)   // while(!y)
     { 
           getline(cin, user_pass); 
           check_pass(user_pass); // y не меняется, надо: y = check_pass(user_pass);
     } 
}
0
0 / 0 / 0
Регистрация: 11.01.2015
Сообщений: 8
08.09.2018, 21:09  [ТС] 8
Все равно при вводе неверного пароля высвечивается две надписи "Неверный пароль", а затем при вводе верного строка с доступом данных не выводится и программа идет по циклу будто пароль был введен неверный

Добавлено через 8 минут
Упс, с двумя надписями "Неверный пароль" я щас лажанул, но строка с данными все равно не выводится

Добавлено через 26 минут
kcalbCube, Выглядит то круто, но почему не работает backspace в твоей программе?)
0
15 / 13 / 4
Регистрация: 16.08.2018
Сообщений: 125
09.09.2018, 02:33 9
Цитата Сообщение от dimassturbo Посмотреть сообщение
kcalbCube, Выглядит то круто, но почему не работает backspace в твоей программе?)
Для работы BackSpace нужна подкрутить небольшое ветвление.

Ща попробую.

Цитата Сообщение от dimassturbo Посмотреть сообщение
Упс, с двумя надписями "Неверный пароль" я щас лажанул, но строка с данными все равно не выводится
Пароль при регистрации выводиться, а при вводе пароля - нет. (Или я не правильно понял?)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2018, 02:33
Помогаю со студенческими работами здесь

Проверка корректности введенного пароля - Ошибка strcmp
Решил воспользоваться strcmp, чтобы проверить правильность введенного пароля, но вместо этого код...

Проверка адреса файла, введенного с клавиатуры
Мне нужно ввести адрес файла с клавиатуры и что бы проверяло, есть он или нет!!! Если есть, что бы...

Проверка сортировки введенного с клавиатуры массива
Написать программу, которая проверяет, представляют ли элементы введенного с клавиатуры массива...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru