C++ Zadanie z ksiazki
Ostatnio zmodyfikowano 2017-11-07 15:03
peter1616 Temat założony przez niniejszego użytkownika |
C++ Zadanie z ksiazki » 2017-11-06 21:41:30 Witam W książce Alexa Allaina "Przewodnik dla początkujących" w 4 rozdziale mam do napisania zadanie którego treść brzmi następująco: 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. Mógłby mi ktoś podpowiedzieć jak przerobić tą pętle aby program wychodził z niej dopiero jak otrzyma poprawne dane. #include "stdafx.h" #include <iostream> #include <string> using namespace std;
int main() { string nazwa; string haslo; do { cout << "Podaj nazwe uzytkownika: " << "\n"; getline( cin, nazwa, '\n' ); cout << "Podaj haslo: " << "\n"; getline( cin, haslo, '\n' ); if( nazwa == "admin" && haslo == "xyzzy" ) { cout << "Dostep przyznany" << "\n"; } else if( nazwa == "adam" && haslo == "pera" ) { cout << "Dostep przyznany" << "\n"; } else if( nazwa == "1234" && haslo == "xyz" ) { cout << "Dostep przyznany" << "\n"; } else { cout << "Niepoprawna nazwa lub haslo uzytkownika. Odmowa dostepu!" << "\n"; } } while( nazwa != "admin" && haslo != "xyzzy" || nazwa != "adam" && haslo != "pera" || nazwa != "1234" && haslo != "xyz" ); cin.get(); }
|
|
latajacaryba |
» 2017-11-06 22:23:32 while( !(( nazwa != "admin" && haslo != "xyzzy" ) ||( nazwa != "adam" && haslo != "pera" ) ||( nazwa != "1234" && haslo != "xyz" ) ) ) Powinno działać, ale nie jestem pewien |
|
peter1616 Temat założony przez niniejszego użytkownika |
» 2017-11-06 22:32:04 Wiesz co zmieniłem warunek na taki: while( !( nazwa == "admin" && haslo == "xyzzy" || nazwa == "adam" && haslo == "pera" || nazwa == "1234" && haslo == "xyz" ) );
i zadziałało. Dziwne bo poprzedni zapis był chyba równoważny temu. |
|
Luq |
» 2017-11-06 22:41:52 Nie, nie był równoważny. |
|
latajacaryba |
» 2017-11-06 22:54:06 @up Objaśniłbyś? Sam jestem ciekaw, bo && ma wyższy priorytet niż || więc wydawało mi się, że opuszczenie nawiasów nic nie zmieni. |
|
Luq |
» 2017-11-06 22:59:54 Bo && ma wyższy priorytet niż ||. Nie chodzi mi o nawiasy, tylko o te dwa zapisy, które nie są równoważne: while( nazwa != "admin" && haslo != "xyzzy" || nazwa != "adam" && haslo != "pera" || nazwa != "1234" && haslo != "xyz" ) while( !( nazwa == "admin" && haslo == "xyzzy" || nazwa == "adam" && haslo == "pera" || nazwa == "1234" && haslo == "xyz" ) ) |
|
peter1616 Temat założony przez niniejszego użytkownika |
» 2017-11-06 23:11:15 @up A mógłbyś mi objaśnić różnice pomiędzy tymi zapisami ? |
|
pekfos |
» 2017-11-06 23:12:53 |
|
« 1 » 2 |