Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Dev C++] Tablica z Lotto

VincentDCI 11 Mar 2012 18:30 3025 1
  • #1 11 Mar 2012 18:30
    VincentDCI
    Poziom 10  

    EDIT:
    Problem już rozwiązałem.


    Siema

    Mam problem taki że pokazuje mi liczby: 17 0 33 0 22 0

    kod:

    Code:
    #include <cstdlib>
    
    #include <iostream>
    #include <cmath>

    using namespace std;

    const unsigned ILOSC_LICZB = 6;

    const int MAKSYMALNA_LICZBA = 49;

    int main(int argc, char *argv[])
    {
        unsigned aLiczby[ILOSC_LICZB];
        for(int i=0; i<ILOSC_LICZB; i++)
                aLiczby[i]=0;
        // losowanie liczb
        srand (static_cast <int> (time(NULL)));
        for(int i=0;  i<ILOSC_LICZB; i++)
        {
                //wylosowanie liczb
                aLiczby[i]=rand() % MAKSYMALNA_LICZBA+1;
               
                //sprawdzenie czy ona nie powtarza sie
                bool bPowtarzaSie = false;
                for(int j=1; j<i ; j++)
                {
                        if(aLiczby[j]==aLiczby[i])
                        {
                                                   bPowtarzaSie=true;
                                                   break;
                        }
                }
                //jezeli sie nie powatrza przechodzimy do nastepnej liczby
                if(!bPowtarzaSie) i++;
        }
        //wyswietlanie losowej liczby
        cout<<"Oto wynik losowania: "<<endl;
        for(int i=0; i<ILOSC_LICZB; i++)
        cout<<aLiczby[i]<<" ";
        cout<<endl;
       
        system("PAUSE");
        return EXIT_SUCCESS;
    }

    0 1
  • #2 11 Mar 2012 20:47
    lukagrom
    Poziom 15  

    W tym miejscu na mój gust jest lipa:

    Code:

    if(!bPowtarzaSie) i++;

    bo owe "i" jest przecież zmienną petli.
    W ogóle to bym przerobił losowanie na do-while:
    Code:

     int i;
        i=0;
        do
        {
                //wylosowanie liczb
                aLiczby[i]=rand() % MAKSYMALNA_LICZBA+1;
               
                //sprawdzenie czy ona nie powtarza sie
                bool bPowtarzaSie = false;
                for(int j=0; j<i ; j++)
                {
                        if(aLiczby[j]==aLiczby[i])
                        {
                                                   bPowtarzaSie=true;
                                                   break;
                        }
                }
                //jezeli sie nie powatrza przechodzimy do nastepnej liczby
                if(!bPowtarzaSie) i++;
        }while(i<ILOSC_LICZB);

    U mnie przynajmniej na linuksowym g++, taka konstrukcja śmiga bez zarzutów.

    -1