Problem z zadaniem

0

Witam. Jestem samoukiem (dosyć początkującym) i uczę się samodzielnie. Znalazłam sobie takie zadanie:
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 (albo trudno) można zrealizować taką funkcjonalność w przypadku dużej liczby użytkowników i haseł.

I powiem szczerze, że główkuję nad tym już od 2 dni. Próbowałam jakoś z tablicą i typem wyliczeniowym enum i cały czas nie wychodzi. Proszę podpowiedzcie jak to zrobić bo ręce już mi odpadają :(

0

#include <iostream>
#include <string>
using namespace std;
int main ()
{
string nazwa;
string haslo;
cout << "Podaj nazwę użytkownika: " << "\n";
getline( cin, nazwa, '\n' );
cout << "Podaj hasło: " << "\n";
getline( cin, haslo, '\n' );
if ( nazwa == "admin" && haslo == "xyzzy" )
{
cout << "Dostęp przyznany" << "\n";
}
else
{
cout << "Niepoprawna nazwa użytkownika lub hasło. Odmowa dostępu!" << "\n";
// Zwrócenie wartości to wygodny sposób na zatrzymanie programu
return 0;
}
// Pracujemy dalej!
}

0

Użyj pętli while -> dopóki wszyscy twoi użytkownicy się nie zalogują, wrzucaj sobie na listę/kolejkę (taka struktura danych) niepowodzenie zalogowania i wyciągaj z niej tych którzy są jeszcze niezalogowani, a jeśli próba się powiodła usuń usera z listy ;)
Trudniejsza wersja to wątki, ale skoro to początki to wybierz pierwszą ;)

0
static const struct { string nazwa,haslo; } tb[]=
{
	{"admin", "xyzzy"},
	{"adam", "1234"},
	{"test", "atest"},
};

bool ok=false;
for(int rep=0;;++rep)
{
	if(rep>=3) exit(1|(cout<<"Za dużo nieudanych prób"<<endl));
	if(rep) cout<<"Proba nr: "<<rep<<endl;
	string nazwa,haslo;
	cin>>nazwa>>haslo;
	for(const auto &rec:tb) if((nazwa==rec.nazwa)&&(haslo==rec.haslo)) { ok=true; break; }
	if(ok) break;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1