Problem z pętła w programie.
Ostatnio zmodyfikowano 2017-12-01 19:00
Zigor36 Temat założony przez niniejszego użytkownika |
Problem z pętła w programie. » 2017-12-01 17:47:00 Witam, tworze obecnie program losujący hasło. Pętla for w moim programie ma się wykonać 9 razy, lecz w moich danych wyjściowych widać, że jest nieskończona. Proszę o pomoc :) #include <iostream> #include <conio.h> #include <time.h> #include <windows.h> using namespace std; int to_czy_to, liczba; char litera; void losuje_liczbe() { liczba = rand() % 9 + 1; cout << liczba; }
void losuje_litere() { litera =( rand() % 24 ) + 97; cout << litera; }
int main() { srand( time( NULL ) ); for( int x = 0; x = 9; x++ ) { to_czy_to = rand() % 2 + 1; if( to_czy_to = 1 ) { losuje_liczbe(); } if( to_czy_to = 2 ) { losuje_litere(); } } getch(); }
|
|
Kinexity |
» 2017-12-01 17:55:16 Błąd w warunku pętli. |
|
orbit6 |
Błąd w warunkach pętli » 2017-12-01 18:47:39 Tak jak kolega napisał, pętla będzie wykonywała sie tak długo jak tylko drugi warunek będzie 1, a twój x = 9 no nie za bardzo ma co zwracać, musisz dać x <= 9, czyli pętla będzie sie wykonywać tak długo jak tylko x będzie mniejsze lub równe 9.
Źle! for( int x = 0; x = 9; x++ ) { to_czy_to = rand() % 2 + 1; if( to_czy_to = 1 ) { losuje_liczbe(); } if( to_czy_to = 2 ) { losuje_litere(); } } Dobrze: for( int x = 0; x <= 9; x++ ) { to_czy_to = rand() % 2 + 1; if( to_czy_to = 1 ) { losuje_liczbe(); } if( to_czy_to = 2 ) { losuje_litere(); } } |
|
SeaMonster131 |
» 2017-12-01 18:56:22 Jak ma się wykonać 9 razy, to warunek powinien być i < 9 . Od razu podpowiem, że = to operator przypisania, a == jest operatorem porównania. |
|
orbit6 |
» 2017-12-01 19:00:20 Faktycznie, ja wole europejski system dlatego zawsze robie for(int x = 1; x <= 9; x++) ale według tego co napisał kolega faktycznie trzeba użyć samego < |
|
« 1 » |