Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ Zadanie z ksiazki

Ostatnio zmodyfikowano 2017-11-07 15:03
Autor Wiadomość
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.

C/C++
#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();
}
P-166527
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
P-166530
peter1616
Temat założony przez niniejszego użytkownika
» 2017-11-06 22:32:04
Wiesz co zmieniłem warunek na taki:

C/C++
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.
P-166531
Luq
» 2017-11-06 22:41:52
Nie, nie był równoważny.
P-166532
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.
P-166534
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" ) )
P-166536
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 ?
P-166538
pekfos
» 2017-11-06 23:12:53
» Kurs C++ / FAQJaki warunek wpisać do pętli? pytanie/odpowiedź
Ostatni punkt.
P-166539
« 1 » 2
  Strona 1 z 2 Następna strona