• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Weryfikacja Haseł || Sprawdzenie kodu || Kilka pytań.

Object Storage Arubacloud
+1 głos
2,231 wizyt
pytanie zadane 8 stycznia 2016 w C i C++ przez Krzychu Użytkownik (640 p.)

Wykonuje zadania z książki "Przewodnik dla początkujących C++". Wykonuje zadania z rozdziału instrukcje warunkowe.

Zad 4. Rozszerz program kontrolujący hasła, który został zamieszczony w tym rozdziale, w taki sposób, aby akceptował wielu użytkowników, z których każdy ma swoje hasło. Zagwarantuj,aby właściwe hasła były przypisane właściwym użytkownikom. Udostępnij możliwość ponownego zalogowania użytkownika, jeśli pierwsza próba nie powiodła się. Zastanów się jak łatwo lub trudno można zrealizować taka funkcjonalność w przypadku dużej liczby użytkowników.

  1. Mając wiedzę z rozdziału instrukcje warunkowe, skleciłem taki kod.
#include <iostream>
#include <string>

using namespace std;

int main ()
{
    string login, pass;
    cout<<"Podaj login: ";
    getline(cin,login,'\n');
    cout<<"Podaj pass: ";
    getline(cin,pass,'\n');

    if(login=="Krzychu"&& pass=="edytor")//||(login=="Marek"&& pass=="pass"))
    {
        cout<<"Poprawne dane logowania";
    }

    if(login=="Marek"&& pass=="edytor")
    {
        cout<<"Poprawne dane logowania";
    }

    else
    {
        cout<<"Wprowadziles niepoprawne dane";
    }

    return 0;
}

Problemy: Zasadniczy nie wiem w jaki sposób dać ponowną możliwość zalogowania.

Gdy już poznałem dział pętle, zrobiłem to w następujący sposób.

#include <iostream>
#include <string>

using namespace std;

int main ()
{
    string login, pass;
    for (int i=0; i<2; i++)
    {
        cout<<"Podaj login: ";
        getline(cin,login,'\n');
        cout<<"Podaj pass: ";
        getline(cin,pass,'\n');

        if((login=="Krzychu"&& pass=="edytor")||(login=="Marek"&& pass=="ide"))
        {
        cout<<"Zalogowales sie pomyslnie";
        break;
        }
        else
        {
        cout<<"Niepoprawne dane, sprobuj ponownie"<<endl;
        }

    }

return 0;
}

Tutaj chciałbym jeszcze poprawić czytelność informacji i wprowadzić opcję "Pozostałych prób np. 2". Zastanawiam się czy wykonałem to poprawnie. Specjalnie na start przypisałem zmiennej i wartość 1.

Liczę na waszą pomoc i mam nadzieję że nie zawracam wam głowy tymi pytaniami.
 

2 odpowiedzi

+1 głos
odpowiedź 8 stycznia 2016 przez Avernis Nałogowiec (27,400 p.)

możesz użyć pętli 

for(;;)

///lub

while(true)

I wtedy będziesz miał nieskończoną liczbe zalogować

A żeby zrobić z próbami to musisz sobie to tak:

 

int loggining = 3;

if(login != "wlasciwyLogin" || password != "wlasciweHaslo")
{
    loggining--;
}
else if(loggining <= 0)
{
    std::cout << "wykozystales wszystkie proby!" << std::endl;
}

 

komentarz 8 stycznia 2016 przez Patrycjerz Mędrzec (192,320 p.)

A jak niby użytkownik miałby wyjść z tego programu? Warto dodać instrukcję break, np:

if(koniec_programu)
	break;

 

komentarz 8 stycznia 2016 przez Avernis Nałogowiec (27,400 p.)

Mniejsza z tym, ja tylko podałem taki pomocniczy pseudo kod, a nie lepiej można by zorbić tak: 

if(loggining <= 0)
{
    return 1;
}

 

komentarz 8 stycznia 2016 przez Krzychu Użytkownik (640 p.)
Jeśli chodzi o próby rozumiem. Zaraz wprowadzę to w życie. Czy mój sposób był żałosny czy też jeśli chodzi o początki ujdzie w tłumie ?.
0 głosów
odpowiedź 3 listopada 2018 przez Anya Nowicjusz (210 p.)

Czesc,

Tez przerabiam te cwiczenie. Z tego co widze pisze kod w taki sam sposob tylko...jest pewien problem.Skopiowalam Twoj kod i  jesli wpisuje poprawne  pierwsze haslo i login to na koncu wyswietla mi sie "Poprawne dane logowania" oraz "Wprowadziles niepoprawne dane".  Czemu dwa na raz jak sa dane poprawne? Gdzie jest blad? A moze cos innego na to wplywa?

Podaj login: Krzychu
Podaj pass: edytor
Poprawne dane logowaniaWprowadziles niepoprawne dane
Process returned 0 (0x0)   execution time : 7.529 s
Press any key to continue.

 

Podobne pytania

0 głosów
3 odpowiedzi 373 wizyt
0 głosów
1 odpowiedź 118 wizyt
pytanie zadane 3 stycznia 2020 w Java przez maciejkus Początkujący (280 p.)
+1 głos
0 odpowiedzi 258 wizyt

92,579 zapytań

141,428 odpowiedzi

319,654 komentarzy

61,962 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...