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

losowanie bez powtórzeń, większa ilość liczb

Ostatnio zmodyfikowano 2017-02-18 17:42
Autor Wiadomość
Signore_Ercole
Temat założony przez niniejszego użytkownika
losowanie bez powtórzeń, większa ilość liczb
» 2017-02-17 15:26:40
Cześć.
Długo się nie będę rozpisywał. Napisałem program do zadań z lekcji 21 i pojawia mi sie problem przy losowaniu większej ilości liczb z wcześniej podanych. Kod działa dla małych liczb tylko. Prosze o pomoc jak go zmodyfikować bo nie daje mi to spokoju niby wszystko chodzi ale chciałbym żeby działał w 100%. Jakby się wam nie chciało kompilować to takie rzeczy wyskakują w konsoli:

4
56
789
1
48
7
5
9
10
12
Podaj ile liczb chcesz wylosowac z wczesniej podanych
8
 once 001F0D80 is 729081125
 once 001F0D80 is 729081125
 once 001F0D80 is 729081125
 once 001F0D80 is 729081125
 once 001F0D80 is 150994953

Process returned 255 (0xFF)   execution time : 59.401 s
Press any key to continue.
a oto kod

C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

void wczytaj( int tab[], int ile )
{
    bool juz_byla;
    int losowana = 0;
    cout << "Podaj " << ile << " liczby" << endl;
    for( int i = 1; i <= ile; i++ )
    {
       
        do
        {
            int liczba;
            cin >> liczba;
            juz_byla = false;
            for( int i = 1; i <= losowana; i++ )
            {
                if( tab[ i ] == liczba )
                {
                    juz_byla = true;
                    cout << "Taka liczba juz podano!" << endl;
                }
            }
            if( juz_byla == false )
            {
                losowana++;
                tab[ losowana ] = liczba;
            }
           
        }
        while( juz_byla == true );
       
    }
}

void pokaz( int tab[], int ile )
{
    for( int i = 1; i <= ile; i++ )
    {
        cout << tab[ i ] << endl;
    }
}

void tab_a_z_tab_b( int tab_a[], int ile_a, int tab_b[], int ile_b )
{
    bool juz_byla;
   
    int losowana = 0;
    for( int i = 1; i <= ile_a; i++ )
    {
        do
        {
            int liczba = tab_b[ rand() % ile_b ];
            juz_byla = false;
            for( int i = 1; i <= losowana; i++ )
            {
                if( tab_a[ i ] == liczba ) juz_byla = true;
               
            }
            if( juz_byla == false )
            {
                losowana++;
                tab_a[ losowana ] = liczba;
            }
        }
        while( juz_byla == true );
       
    }
}

int main()
{
    int ile_liczb_a, ile_liczb_b;
   
    cout << "Podaj ile liczb chcesz podac" << endl;
    cin >> ile_liczb_b;
    int * tablica_b = new int[ ile_liczb_b ];
    wczytaj( tablica_b, ile_liczb_b );
    cout << endl;
    pokaz( tablica_b, ile_liczb_b );
   
    cout << "Podaj ile liczb chcesz wylosowac z wczesniej podanych" << endl;
    cin >> ile_liczb_a;
    int * tablica_a = new int[ ile_liczb_a ];
    tab_a_z_tab_b( tablica_a, ile_liczb_a, tablica_b, ile_liczb_b );
    cout << endl;
    pokaz( tablica_a, ile_liczb_a );
   
    return 0;
}
P-157906
Signore_Ercole
Temat założony przez niniejszego użytkownika
» 2017-02-17 17:52:49
aa. Siedze, i patrze a zapomniałem dopisać tej funkcji w main:
srand( time( NULL ) )
. Lecz nie wiele to zmienia
P-157911
Signore_Ercole
Temat założony przez niniejszego użytkownika
» 2017-02-18 17:42:12
błąd był w iteracji -> do zamknięcia.
P-157965
« 1 »
  Strona 1 z 1