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

Losowanie bez powtórzeń, pojawiają się powtórzenia

Ostatnio zmodyfikowano 2015-03-28 12:07
Autor Wiadomość
Mlorism
Temat założony przez niniejszego użytkownika
Losowanie bez powtórzeń, pojawiają się powtórzenia
» 2015-03-28 10:47:51
Środowisko C::B. Powinno losować 5 liczb bez powtórzeń, jednak losuje z w powtórzeniami. Nie rozumiem, w którym miejscu jest błąd. Byłbym wdzięczny za wskazanie go.

C/C++
#include <iostream>
#include <time.h>
#include <cstdlib>

using namespace std;

int posrednia;
int liczba[ 5 ];
int wylosowano = 0;
bool losowanie;

int main()
{
    srand( time( 0 ) );
   
   
    for( int j = 0; j < 5; j++ )
    {
        do
        {
            losowanie = true;
            posrednia = rand() % 10;
            for( int i = 1; i <= wylosowano; i++ )
            {
                if( posrednia == liczba[ i ] ) losowanie = false;
               
            }
            if( losowanie == true )
            {
                wylosowano++;
                liczba[ j ] = posrednia;
            }
           
           
        } while( losowanie = false );
       
    }
   
    for( int j = 0; j < 5; j++ )
   
    {
        cout << liczba[ j ] << " ";
    }
   
   
    return 0;
}
P-129299
pekfos
» 2015-03-28 11:24:00
C/C++
while( losowanie = false );

Zły warunek.
P-129303
Mlorism
Temat założony przez niniejszego użytkownika
» 2015-03-28 11:28:32
Spróbowałem, ale nie. Jeśli warunek będzie zmieniony z false na true, to program się nie wykona. Zawiesza się. Ja chcę by pętla powtarzała się tak długo, jak losowanie jest określone jako false (bo liczba się powtórzyła, z którąś z już wylosowanych).
P-129306
pekfos
» 2015-03-28 11:30:38
Operator.
P-129307
Mlorism
Temat założony przez niniejszego użytkownika
» 2015-03-28 11:45:17
Faktycznie tutaj brakowało i był błąd, jednak mimo poprawienia, losuje z powtórzeniami. :/
P-129309
pekfos
» 2015-03-28 12:07:59
C/C++
for( int i = 1; i <= wylosowano; i++ )
Tablice indeksuje się od zera. I zastanów się, czy użycie dwóch pętli wokół losowania ma sens.
P-129310
« 1 »
  Strona 1 z 1