Losowanie bez powtórzeń zadanie 2
Ostatnio zmodyfikowano 2014-08-29 23:48
mlOOdy Temat założony przez niniejszego użytkownika  | 
Losowanie bez powtórzeń zadanie 2 » 2014-08-29 19:38:13 Cześć, może mi ktoś powiedzieć co w tym programie jest źle ? bo źle działa :/ #include <iostream> #include <cstdlib> #include <ctime> int losujemy( int tablica[] ) {     int liczba;     liczba =( rand() % 10 ) + 1;     switch( liczba ) { case 1:         return tablica[ 0 ];     case 2:         return tablica[ 1 ];     case 3:         return tablica[ 2 ];     case 4:         return tablica[ 3 ];     case 5:         return tablica[ 4 ];     case 6:         return tablica[ 5 ];     case 7:         return tablica[ 6 ];     case 8:         return tablica[ 7 ];     case 9:         return tablica[ 8 ];     case 10:         return tablica[ 9 ];     }           } bool sprawdzanie_poprawnosci( int tablica_wyjsciowa[], int nr_liczby_tablicy_wyjsciowej, int wylosowana_liczba ) {     if( nr_liczby_tablicy_wyjsciowej == 0 )          return true;          int i = 0;     do {         if( tablica_wyjsciowa[ i ] == wylosowana_liczba )              return false;                  i++;              } while( i < nr_liczby_tablicy_wyjsciowej );          return true; }
 
 
  int main() {     srand( time( NULL ) );     int tablica_do_wprowadzania[ 10 ];     int nr_liczby_tablicy_do_wprowadzania = 0;     int wylosowana_liczba;     int tablica_wyjsciowa[ 8 ];     int nr_liczby_tablicy_wyjsciowej = 0;     std::cout << "Podaj 10 liczb z ktorych 8 bedzie wylosowanych bez powtorzen: " << std::endl;     do {         std::cin >> tablica_do_wprowadzania[ nr_liczby_tablicy_do_wprowadzania ];         nr_liczby_tablicy_do_wprowadzania++;     } while( nr_liczby_tablicy_do_wprowadzania < 10 );          do {         wylosowana_liczba = losujemy( tablica_do_wprowadzania );         if( sprawdzanie_poprawnosci( tablica_wyjsciowa, nr_liczby_tablicy_wyjsciowej, wylosowana_liczba ) == true )         {             wylosowana_liczba = tablica_wyjsciowa[ nr_liczby_tablicy_wyjsciowej ];             nr_liczby_tablicy_wyjsciowej++;         }     } while( nr_liczby_tablicy_wyjsciowej < 8 );          nr_liczby_tablicy_wyjsciowej = 0;     std::cout << "8 wylosowanych liczb z Twoich 10 to: " << std::endl;     do {         std::cout << tablica_wyjsciowa[ nr_liczby_tablicy_wyjsciowej ] << std::endl;         nr_liczby_tablicy_wyjsciowej++;     } while( nr_liczby_tablicy_wyjsciowej < 8 );                          }  | 
 | 
Jacob99  | 
» 2014-08-29 19:40:03 A konkretniej to co źle robi? Bo jeśli wypisuje wszystkie liczby po kolei, to wstaw po każdym case  break; case 1: return tablica[ 1 ]; break;
  itd.  | 
 | 
mlOOdy Temat założony przez niniejszego użytkownika  | 
» 2014-08-29 20:27:51 nie wiadomo skąd wypisuje 8 bardzo dużych i małych liczby których nie podawałem    z tym breakiem nie działa dalej :/  | 
 | 
1aam2am1  | 
» 2014-08-29 21:26:38 tablica_wyjsciowa[ nr_liczby_tablicy_wyjsciowej ] = wylosowana_liczba;
  ? Nie ta kolejność u ciebie  | 
 | 
Monika90  | 
» 2014-08-29 21:36:11 | z tym breakiem nie działa dalej :/ |  
 break po return nie ma wpływu na działanie programu  | 
 | 
mlOOdy Temat założony przez niniejszego użytkownika  | 
» 2014-08-29 23:48:57 Dzięki 1aam2am1 to było to :D teraz działa.  | 
 | 
|  « 1 »  |