[Lekcja 21] 8 Liczb z 10
Ostatnio zmodyfikowano 2013-07-31 23:34
ciekawski Temat założony przez niniejszego użytkownika |
[Lekcja 21] 8 Liczb z 10 » 2013-07-31 17:25:46 Witam, zmagam się z pracą domową z lekcji 21. Napisałem kod przerabiając program "lotto" i z początku myślałem, że wszystko jest ok. Po wstawieniu pętli w celu porównania większej liczby wyników okazało się jednak, że co jakiś czas zdarza się wylosowanie 2 takich samych liczb. Lotto działało bez zastrzeżeń i dziwi mnie fakt powtórek po przerobieniu. Analizowałem kod kilka razy jednak nie potrafię wyłapać błędu. Dlatego prosiłbym o zerknięcie w moje wypociny i ewentualne wskazanie błędu. #include <ctime> #include <conio.h> #include <iostream>
using namespace std;
int main() { int a, b, c, d, e, f, g, h, i, j; cin >> a >> b >> c >> d >> e >> f >> g >> h >> i >> j; int q = 1; srand( static_cast < int >( time( NULL ) ) ); do { int Liczby[ 8 ]; for( int i = 0; i < 8; ) { Liczby[ i ] =( rand() % 10 + 1 ); bool PowtarzaSie = false; for( int j = 0; j < i; j++ ) { if( Liczby[ j ] == Liczby[ i ] ) { PowtarzaSie = true; break; } } if( !PowtarzaSie ) i++; } for( int i = 0; i < 8; i++ ) { switch( Liczby[ i ] ) { case 1: cout << a << " "; break; case 2: cout << b << " "; break; case 3: cout << c << " "; break; case 4: cout << d << " "; break; case 5: cout << e << " "; break; case 6: cout << f << " "; break; case 7: cout << g << " "; break; case 8: cout << h << " "; break; case 9: cout << i << " "; break; case 10: cout << j << " "; break; } } cout << endl; } while( q == 1 ); getch(); return 0; }
Z góry dzięki Pozdro |
|
jsc |
» 2013-07-31 17:32:49 Zastanów się nad sposobem działania pętli for. |
|
ciekawski Temat założony przez niniejszego użytkownika |
» 2013-07-31 18:49:23 Wydaje mi się, że wiem w jaki sposób ona działa.
Analizuje wciąż ów kod i dalej nie wiem co jest nie tak.
Wykonałem pewne doświadczenie: Porównując ze sobą kolejne wyniki możemy zauważyć, że powtórki są bardzo częste.
Zmieniłem zakres losowanych liczb z 1-10 na 1-8. Powinno to zwiększyć prawdopodobieństwo powtórzenia się liczb a co dziwne nie zauważyłem ani jednej powtórki.
Ale wiadomo że oko nie wszystko potrafi zobaczyć. Tak więc zmieniłem znowu zakres do 1-7. W tym przypadku program powinien wyświetlać wynik zawszę z co najmniej 2 powtarzającymi się liczbami, jednak po uruchomieniu nie wyświetla nic co oznacza, że wciąż stara się spełnić warunek aby liczby się nie powtarzały.
Podsumowując: zgłupiałem |
|
docentpp |
» 2013-07-31 22:21:16 Czy pierwsza pętla for jest dobrze skonstruowana ? :-) |
|
Monika90 |
» 2013-07-31 22:33:38 Czy pierwsza pętla for jest dobrze skonstruowana |
Oczywiście, że jest. Z tym że do takich celów lepiej używać pętli while . EDIT: Błąd jest w pętli drukujacej wynik. Zmienna i jest użyta do dwóch różnych celów. |
|
ciekawski Temat założony przez niniejszego użytkownika |
» 2013-07-31 23:34:17 o kurde, rzeczywiście nabroiłem z tymi zmiennymi.
Tak czy siak dzięki za pomoc.
Pozdrawiam |
|
« 1 » |