Lekcja 21- losowanie bez powtórzen
Ostatnio zmodyfikowano 2014-02-11 00:07
Lvkaz Temat założony przez niniejszego użytkownika |
Lekcja 21- losowanie bez powtórzen » 2014-02-10 23:58:17 Witam. Próbowałem zrobić zadanie z kursu (z treści, nie domowe): Program ma nam wylosować 5 liczb bez powtórzeń. Liczby wylosowane mają być z przedziału od 1 do 10. Zrobiłem je w ten sposób, ale gdzieś się program zapętla... #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
bool czyBylaWylosowana( int iLiczba, int tab[], int ile ); int wylosuj(); void wypisz( int tab[], int ile );
int main() { int wylosowane[ 5 ]; int ile = 0; int a = 0; do { a = wylosuj(); if( czyBylaWylosowana( a, wylosowane, ile ) == false ) { wylosowane[ ile ] = a; ile++; } } while( ile < 5 ); wypisz( wylosowane, ile ); return 0; }
void wypisz( int tab[], int ile ) { cout << "Wylosowane liczby:" << endl; for( int i = 0; i < ile; i++ ) { cout << tab[ i ] << ", "; } }
bool czyBylaWylosowana( int iLiczba, int tab[], int ile ) { if( ile <= 0 ) return false; for( int i = 0; i < ile; i++ ) { if( tab[ i ] = iLiczba ) return true; } return false; }
int wylosuj() { return( rand() % 10 ) + 1; }
Wydaje mi się, że chodzi o funkcję czyBylaWylosowana(int, int*, int), bo tam za każdym razem podawany parametr "ile" będzie równy zero i przez to ciągle zwraca false. Jednakże w rozwiązaniu podanym w kursie (do while, zamiast for) wydaje mi się, że dzieje się to samo, ale jednak działa. O co chodzi? pozdr |
|
Monika90 |
» 2014-02-11 00:07:25 Operator porównania to ==, a nie = |
|
« 1 » |