[C++] Wyświetlaj ile razy przeszła pętla 'for' dopóki hasło jest złe.
Ostatnio zmodyfikowano 2016-01-03 00:54
Green_Arrow Temat założony przez niniejszego użytkownika |
[C++] Wyświetlaj ile razy przeszła pętla 'for' dopóki hasło jest złe. » 2016-01-02 20:32:16 Witam. Napisałem prosty program, ale chcę dodać do niego zadanie. Mianowicie chcę aby program po wpisaniu złego hasła wyświetlił w pętli informację który raz próbujemy wpisać hasło, a następnie wrócił do poprzedniej funkcji programu - pobierającej hasło. Jeżeli napisałem niezrozumiale, spójrzcie na kod a załapiecie o co chodzi :D #include <iostream>
using namespace std;
void logowanie(); void odrzucanie(); void pobierz_pin();
int main() { cout << "######################### ZGADNIJ HASŁO #########################" << endl << endl; pobierz_pin(); cout << endl << "############################# KONIEC #############################" << endl << endl << endl; }
void pobierz_pin() { int pin; cout << "Podaj 4 cyfrowe haslo: "; cin >> pin; if( pin == 1234 ) logowanie(); else { std::cin.clear(); std::cin.ignore( 1000, '\n' ); odrzucanie(); } }
void logowanie() { cout << "Laczenie z baza danych.." << " [OK]" << endl; cout << "Dopasowywanie kryteriow hasla.." << " [OK]" << endl << "Weryfikacja: "; for( int i = 1; i < 101; i = i + 1 ) { cout << " " << i << "%"; } cout << " [OK]" << endl; cout << endl << "Zalogowano poprawnie !" << " [OK]" << endl; }
void odrzucanie() { for(;; ) { cout << "[ERROR] Wpisales bledne haslo po raz: " << i << endl << endl; } pobierz_pin(); } Pozdrawiam. |
|
carlosmay |
» 2016-01-02 20:38:50 Zadeklaruj zmienną, którą będziesz przekazywać między funkcjami przez referencje i w razie potrzeby powiększał. |
|
Razner |
» 2016-01-02 21:18:47 Przydała by się pętla do..while W miejscu sprawdzania poprawności pinu. |
|
Green_Arrow Temat założony przez niniejszego użytkownika |
» 2016-01-02 21:30:09 Coś nie mogę z tą referencją. Kompilator cały czas pluje błędami #include <iostream>
using namespace std;
void logowanie(); void odrzucanie(); void pobierz_pin();
int main() { cout << "######################### ZŁAM HASŁO #########################" << endl << endl; pobierz_pin(); cout << endl << "############################# KONIEC #############################" << endl << endl << endl; }
void pobierz_pin( int y ) { int y = 0; int pin; cout << "Podaj 4 cyfrowe haslo: "; cin >> pin; if( pin == 1234 ) logowanie(); else { std::cin.clear(); std::cin.ignore( 1000, '\n' ); odrzucanie( y ); } }
void logowanie() { cout << "Laczenie z baza danych.." << " [OK]" << endl; cout << "Dopasowywanie kryteriow hasla.." << " [OK]" << endl << "Weryfikacja: "; for( int i = 1; i < 101; i = i + 1 ) { cout << " " << i << "%"; } cout << " [OK]" << endl; cout << endl << "Zalogowano poprawnie !" << " [OK]" << endl; }
void odrzucanie( int c ) { cout << "[ERROR] Wpisales bledne haslo po raz: " << c << endl << endl; c = c++; pobierz_pin( c ); } |
|
Razner |
» 2016-01-02 21:33:13 void odrzucanie( int & c ) - to jest referencja :) i na górze w deklaracji funkcji void odrzucanie dodaj int & w nawiasie :) Plus do tego musisz jeszcze zadeklarować globalnie lub w main y :) |
|
Green_Arrow Temat założony przez niniejszego użytkownika |
» 2016-01-02 22:16:24 Po godzinnym boju z kodem udało mi się wyskrobać coś takiego: Kod kompiluje się, lecz nie wiem w którym miejscu dać inkrementacje więc ciągle wyświetla 0 zamiast dodawać +1. Możesz pomóc? :) #include <iostream>
using namespace std;
void logowanie(); void odrzucanie( int & y ); void pobierz_pin();
int main() { cout << "######################### ZGADNIJ HASŁO #########################" << endl << endl; pobierz_pin(); cout << endl << "############################# KONIEC #############################" << endl << endl << endl; }
void pobierz_pin() { int pin, x = 0; x = x++; cout << "Podaj 4 cyfrowe haslo: "; cin >> pin; if( pin == 1234 ) logowanie(); else { std::cin.clear(); std::cin.ignore( 1000, '\n' ); odrzucanie( x ); } }
void logowanie() { cout << "Laczenie z baza danych.." << " [OK]" << endl; cout << "Dopasowywanie kryteriow hasla.." << " [OK]" << endl << "Weryfikacja: "; for( int i = 1; i < 101; i = i + 1 ) { cout << " " << i << "%"; } cout << " [OK]" << endl; cout << endl << "Zalogowano poprawnie !" << " [OK]" << endl; }
void odrzucanie( int & y ) { cout << "[ERROR] Wpisales bledne haslo po raz: " << y << endl << endl; pobierz_pin(); }
|
|
Razner |
» 2016-01-02 22:23:05 Inkrementacja musi być w odrzucanie ale samą zmienna zadeklaruj w funkcji main bo za każdym razem jak wywołujesz funkcje w której zadeklarowałeś X liczba na nowo przybiera wartość 0. Nie zapomnij o referencji. |
|
Green_Arrow Temat założony przez niniejszego użytkownika |
» 2016-01-02 22:39:05 Kiedy umieszcze zmienną int x = 0; w main() kompilator sypie błędami że nie jest zadeklarowana w funkcji pobierz_pin() haslo.cpp: In function ‘void pobierz_pin()’: haslo.cpp:26:13: error: ‘x’ was not declared in this scope odrzucanie(x);
|
|
« 1 » 2 |