Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Losowanie bez powtórzeń zadanie 2

Ostatnio zmodyfikowano 2014-08-29 23:48
Autor Wiadomość
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 :/


C/C++
#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 );
   
   
   
   
   
}
P-116369
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;
C/C++
case 1:
return tablica[ 1 ];
break;
itd.
P-116370
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 :/
P-116371
1aam2am1
» 2014-08-29 21:26:38
C/C++
tablica_wyjsciowa[ nr_liczby_tablicy_wyjsciowej ] = wylosowana_liczba;
? Nie ta kolejność u ciebie
P-116372
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
P-116373
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.
P-116377
« 1 »
  Strona 1 z 1