bartox7777 utworzono 6 marca 2017 utworzono 6 marca 2017 #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 6 marca 2017 komentarz 6 marca 2017 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 6 marca 2017 Autor komentarz 6 marca 2017 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.