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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
karnel1
7 / 0 / 1
Регистрация: 15.09.2012
Сообщений: 8
#1

Консольное приложение. Имитация входа в систему. - C++

26.11.2012, 22:57. Просмотров 1193. Ответов 8
Метки нет (Все метки)

Требуется написать программу для имитации входа в систему, которая будет запрашивать пароль и выдавать приглашение только в случае совпадения введенного пароля с заранее определенным в программе, а в случае ошибки выдавать сообщение об ошибке и просьбе повторить ввод. После 3 ошибок программа должна выдать сообщение о попытке несанкционированного доступа и завершить работу.

Пока что сделал простой набросок где программа должна сравнивать правильный ли введен логик,но не могу понять где допустил ошибки ибо всегда выводиться failed.Вот собственно сам код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <iostream.h>
 
int main()
    {
        char c[5];
        char b[]="Denis";
        cout<<"Login:";
        cin>>c;
        cout<<c<<"\n";
        if (c==b) 
                {cout<<"Complete"<<"\n";}
                else
                
                                {cout<<"failed"<<"\n";}
                
                            
        system("pause");
        return 0;
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1743 / 1086 / 71
Регистрация: 13.09.2011
Сообщений: 3,109
26.11.2012, 23:00     Консольное приложение. Имитация входа в систему. #2
Сравниваются указатели, а не строки(man strcmp). А ещё у вас программа может попортить данные и/или упасть, если пользователь введёт больше от пяти символов.
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
26.11.2012, 23:11     Консольное приложение. Имитация входа в систему. #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
#include <iostream>
#include <string>
 
int main (void)
{
    using namespace std;
    string pass = "Password", bufPas;
    for (int i=0; i<=3; i++)
    {
        cout<<"Enter password:";
        cin>>bufPas;
        if (bufPas==pass)
        {
            system("CLS");
            cout<<"True";
            system("pause>>void");
            return 0; 
        } else
            cout<<"No!"<<endl;
    }
    cout<<"Error 3 false!";
    system("pause>>void");
    return 0;
}
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
26.11.2012, 23:29     Консольное приложение. Имитация входа в систему. #4
это довольно глупо так писать, если хоть немного позаботьться о безопастности, то предложил бы хранить пароль в md5 и подумать об эксепшенах, и получить что-то вроде этого...)
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
#include <iostream>
#include <limits>
#include <string>
#include "md5.h"
using namespace std;
 
int main(){
    const int PASSWORD_LENGTH=10;
    const char * CORRECT_PASSWORD="130f1a8e9e102707f3f91b010f151b0b";
    char *md5buf;
 
    char buf[PASSWORD_LENGTH];
    setlocale( LC_ALL,"Russian" );
 
    cin.exceptions(istream::failbit | istream::badbit);
    
    do {
        try {
            cout << "Введите пароль: ";
            cin.getline(buf, PASSWORD_LENGTH);
            md5buf=new char[md5(buf).size()+1];
            strcpy (md5buf, md5(buf).c_str());
        }
        catch ( istream::failure e ) 
    {
            system("cls");
            cerr << "Пароль должен быть короче, нажмите Enter, чтобы попробывать еще раз..." << endl;
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');    
            getchar();
    }
        system("cls");
    } while ( strcmp(md5buf, CORRECT_PASSWORD) );
    delete[] md5buf;
     /*что-то делаем, если пароль верный*/
     getchar();
     return 0;
}
останется только счетчик прикрутить...если в лом искать, я могу класс md5 дать
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
26.11.2012, 23:36     Консольное приложение. Имитация входа в систему. #5
Согласен если заботиться о безопасности и тд и тп, то да) а я предложил самый короткий самый простой и понятный вариант)) просили то - "Имитация входа в систему" я такое то и написал))
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
26.11.2012, 23:50     Консольное приложение. Имитация входа в систему. #6
я бы вошел в твою систему спустя 1 минуту...)
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
26.11.2012, 23:55     Консольное приложение. Имитация входа в систему. #7
Я знаю)) так передо мной и не ставили задачу сделать систему с защитой)) Лично я бы это ещё всё ООПэшно сделал) да и проверку через сервер, чтобы проверка шла на серверной части)) =)
Venzo
27.11.2012, 00:03
  #8

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2012, 00:55     Консольное приложение. Имитация входа в систему.
Еще ссылки по теме:

Зависат консольное приложение C++
Консольное приложение. sizeof; C++
C++ Консольное приложение и MFC
C++ Графическое приложение: имитация движения самолёта
Закрывается консольное приложение C++

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

Или воспользуйтесь поиском по форуму:
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
27.11.2012, 00:55     Консольное приложение. Имитация входа в систему. #9
а по сути ошибка вот в чем...)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <iostream.h>
 using namespace std;
int main()
    {
        char c[6];
        char b[]="Denis\0";
        cout<<"Login:";
        cin>>c;
        cout<<c<<"\n";
        if (!strcmp(c, b)) 
                {cout<<"Complete"<<"\n";}
                else
                
                                {cout<<"failed"<<"\n";}
                
                            
        system("pause");
        return 0;
    }
Yandex
Объявления
27.11.2012, 00:55     Консольное приложение. Имитация входа в систему.
Ответ Создать тему
Опции темы

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