LEKCJA 21 ZADANIE DOMOWE
Ostatnio zmodyfikowano 2012-08-11 13:34
Adam3423 Temat założony przez niniejszego użytkownika |
LEKCJA 21 ZADANIE DOMOWE » 2012-08-10 19:08:25 Witam, zrobilem zadania domowe z tego rozdziału, ale postanowiłem troszke zmodyfikować program i pojawił się problem z którym sobie nie radzę.
Program ma wczytać do tablicy podaną przez użytkownika ilość liczb i wylosować bez powtórzeń podaną przez użytkownika ilość liczb. Problem jest taki, że gdy wprowadzam 10 liczb i chcę wylosować również 10 to program się zawiesza. Dziwi mnie , że tylko przy tych liczbach gdyż np 9 z 9 wylosuje, albo 20 z 20 również, a akurat przy tych 10 jest problem. Jakby ktoś miał jakiś pomysł to proszę o radę co zmienić.
#include<iostream> #include<cstdlib> #include<ctime> using namespace std;
void wczytaj( int * tablica, int ile ) { int i = 0; do { cin >> tablica[ i ]; i++; } while( i < ile ); }
int losuj( int ile ) { return( rand() % ile ) + 0; }
bool CzyByla( int iLiczba, int * tablica, int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( iLiczba == tablica[ i ] ) return true; else ++i; } while( i < ile ); return false; } void wypisz( int * tablica, int ile ) { int i = 0; do { cout << tablica[ i ] << ","; i++; } while( i < ile ); }
int main() { srand( time( NULL ) ); bool b, bb; int ileLiczb; do { cout << "Ile liczb wczytac?" << endl; cin.clear(); cin.sync(); cin >> ileLiczb; b = cin.good(); } while( b == 0 ); int ileLosowac; do { cout << "Ile liczb wylosowac?" << endl; cin.clear(); cin.sync(); cin >> ileLosowac; bb = cin.good(); if( bb ) if( ileLosowac > ileLiczb ) cout << "Za duzo liczb, nie mozliwe wylosowanie" << endl; } while( ileLosowac > ileLiczb ); int t[ 50 ]; wczytaj( t, ileLiczb ); int liczba; int ta[ 50 ]; int i = 0; do { liczba = losuj( ileLiczb ); if( CzyByla( liczba, ta, ileLiczb ) == 0 ) { ta[ i ] = liczba; i++; } } while( i < ileLosowac ); i = 0; do { ta[ i ] = t[ ta[ i ] ]; i++; } while( i < ileLosowac ); cout << "Wylosowane liczby to: "; wypisz( ta, ileLosowac ); return 0; }
|
|
Mufas |
» 2012-08-11 12:25:09 mi wszystko dziala dobrze, nawet przy 10 |
|
Adam3423 Temat założony przez niniejszego użytkownika |
» 2012-08-11 13:34:48 to dziwne, bo sprawdzałem na 2 komputerach i na obu przy podaniu dwóch dziesiątek się zawiesza. |
|
« 1 » |