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

losowanie bez powtórzeń, kurs c++ rodział 21

Ostatnio zmodyfikowano 2020-11-03 20:14
Autor Wiadomość
tsutsumu
Temat założony przez niniejszego użytkownika
losowanie bez powtórzeń, kurs c++ rodział 21
» 2020-11-03 14:06:12
wszystko sie kompiluje, ale mimo to zdarza sie jedno powtorzenie raz na jakis czas( moze i kilka ale nie zdarzylo mi sie wiecej niz jedno przy 20 probach ) moze po prostu ten kod nie ma sensu, ale moim zdaniem jakis to sens logiczny powinien miec, jesli to niewielki blad to prosze o wskazanie go a jesli cala czec kodu odpowiedzialna za "wykrywanie" czy liczba sie powtarza nie ma sensu, to wyjasnic dlaczego. bylbym bardzo wdzieczny ^^(mam nadzieje ze tym razem post zgodnie z regulaminem wstawiony)

C/C++
#include <iostream>
#include <windows.h> //Sleep, cls
#include <time.h> //time(null)
#include <cstdlib> //srand
using namespace std;
void losuj( int t[] );

int wynik[ 5 ];
int main()
{
    srand( time( NULL ) );
    losuj( wynik );
    for( int i = 0; i < 5; i++ )
    {
        cout << wynik[ i ] << endl;
        Sleep( 1000 );
    }
   
   
    return 0;
}
void losuj( int t[] )
{
    int bufor, i = 0;
    do
    {
       
       
        bufor = rand() % 10 + 1;
        if( i == 0 )
        {
            t[ i ] = bufor;
            i++;
        } //if
       
       
        else
        {
            for( int j = 0; j <= i; j++ )
            {
                if( t[ j ] == bufor )
                {
                    bufor = rand() % 10 + 1;
                    j--;
                } //if
                else
               
                     t[ j + 1 ] = bufor;
               
            } //for
            i++;
        } //else
       
    } while( i < 5 );
   
   
} //void


jeszcze probowalem z taka wariacja ale tez lipa

C/C++
for( int j = 0; j <= i; j++ )
{
   
    if( t[ j ] != bufor )
         t[ j + 1 ] = bufor;
    else
    {
        bufor = rand() % 10 + 1;
        j--;
    }
   
} //for
i++;
} //else
P-177663
pekfos
» 2020-11-03 18:18:35
Nawet nie wywołujesz funkcji losuj(). Po wykryciu powtórzenia musisz powtórzyć cały test. Obecnie sprawdzasz tylko czy wylosowałeś inną liczbę i nadpisujesz poprzednio wylosowane liczby z jakiegoś powodu. Powinieneś rozgraniczyć losowanie liczby od sprawdzania czy liczba jest w tablicy.
P-177666
tsutsumu
Temat założony przez niniejszego użytkownika
» 2020-11-03 20:14:04
Faktycznie, jak wycinalem zbedna czesc kodu to przez przypadek ciachnalem te funkcje, juz edytowalem post, rozwniez tez napisalem inny kod z uwzglednieniem oddzielonych funkcji, losujacych i sprawdzajacych i faktycznie dziala ale jestem bardzo ciekawy czemu nie mozna tego inaczej napisac :P
P-177670
« 1 »
  Strona 1 z 1