x-kom hosting

Pomoc przy programie

bartox7777
utworzono
utworzono
#include <iostream>
#include <string>
#include <conio.h>
#include <cstdlib>
#include <time.h>

using namespace std;
int main()
{
    string nazwa;
    string haslo;
    int i;
    do
    {
    cout << "Wprowadz nazwe uzytkownika: ";
    cin >> nazwa;
    cout << "Wprowadz haslo: ";
    cin >> haslo;
    if ( nazwa == "hello" && haslo == "world")
    {
        cout << "\nPrzyznano dostep!";
    }
    else
    {
        cout << "\nNieprawidlowa nazwa uzytkownika lub haslo! Odmowa dostepu!\n\n";
        cout << "Odczekaj 10 sekund przed ponowna proba\n";
        for (i=10; i>0; i=i-1);
        {
            _sleep(1000);
            cout << i <<endl;
            system( "cls" );
        }
    }

    } while ( nazwa != "hello" && haslo != "world");

    return 0;
}

Od niedawna rozpocząłem naukę c++ i jest to jeden z moich pierwszych, samodzielnych "programów". Możecie mi powiedzieć jaki jest błąd w kodzie, że po wpisaniu błędnych danych program nie odlicza. Pewnie programistów mój kod będzie kuł w oczy, lecz proszę o wyrozumiałość ;)

Matematyk0
komentarz
komentarz
24 minuty temu, bartox7777 napisał:

Możecie mi powiedzieć jaki jest błąd w kodzie, że po wpisaniu błędnych danych program nie odlicza

 

Odlicza. Wszystko jest dobrze, tylko tego nie widzisz, bo od razu po wyświetleniu czyścisz okno konsoli:

_sleep(1000);
cout << i <<endl;
system( "cls" );

Zamień miejscami dowolne dwie linijki i będzie działać. Ale optymalnie będzie zamienić je tak:

cout << i <<endl;
_sleep(1000);
system( "cls" );

Wyświetlasz "czas", czekasz sekundę, czyścisz, zaczynasz od nowa.

 

No i z takich drobnostek - zamiast pisać w pętli (i gdziekolwiek indziej) i=i-1, możesz napisać i--. Tak samo dla i=i+1 możesz napisać i++. Mniej pisania, czytelniejszy dla wprawionego oka kod ;)

bartox7777
komentarz
komentarz
3 godziny temu, Matematyk0 napisał:

 

Odlicza. Wszystko jest dobrze, tylko tego nie widzisz, bo od razu po wyświetleniu czyścisz okno konsoli:


_sleep(1000);
cout << i <<endl;
system( "cls" );

Zamień miejscami dowolne dwie linijki i będzie działać. Ale optymalnie będzie zamienić je tak:


cout << i <<endl;
_sleep(1000);
system( "cls" );

Wyświetlasz "czas", czekasz sekundę, czyścisz, zaczynasz od nowa.

 

No i z takich drobnostek - zamiast pisać w pętli (i gdziekolwiek indziej) i=i-1, możesz napisać i--. Tak samo dla i=i+1 możesz napisać i++. Mniej pisania, czytelniejszy dla wprawionego oka kod ;)

#include <iostream>
#include <string>
//#include <conio.h>
//#include <cstdlib>
//#include <time.h>
#include <windows.h>

using namespace std;
int main()
{
    string nazwa;
    string haslo;
    int i;
    do
    {
    cout << "Wprowadz nazwe uzytkownika: ";
    cin >> nazwa;
    cout << "Wprowadz haslo: ";
    cin >> haslo;
    if ( nazwa == "hello" && haslo == "world")
    {
        cout << "\nPrzyznano dostep!";
    }
    else
    {
        cout << "\nNieprawidlowa nazwa uzytkownika lub haslo! Odmowa dostepu!\n\n";
        cout << "Odczekaj 10 sekund przed ponowna proba\n\n";
        for (i=10; i>0; i--);
        {
            cout << i <<endl;
            Sleep(1000);
            system("cls");

        }
    }

    } while ( nazwa != "hello" && haslo != "world");

    return 0;
}

 

Wypisuje cyfrę 0 i wychodzi z pętli :(

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.