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

Losowanie bez powtarzania

Ostatnio zmodyfikowano 2014-01-09 23:01
Autor Wiadomość
Ginterhauser
Temat założony przez niniejszego użytkownika
Losowanie bez powtarzania
» 2014-01-09 21:49:54
Witam!
Prosiłbym o znalezienie błędu w moim kodzie. Zależy mi na znalezieniu odpowiedzi co jest w nim nie tak, ponieważ zauważyłem teraz że ten sam błąd robię nagminnie, ale nie umiem go zlokalizować
Po uruchomieniu, program "ma humory" - czasami działa jak powinien, czasami nie.
Jeżeli działa, to działa, jeżeli nie - wyrzuca losową liczbę
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int enter()
{
    int number;
   
    cout << "Proszę podać liczbę:" << endl;
    cin >> number;
    return number;
}

bool check( int number, int array[] )
{
    int i = 0;
    if( i = 0 )
         return false;
    else
    {
        do
        {
            if( array[ i ] == number )
                 return true;
           
            i++;
        } while( i < 3 );
       
    }
    return false;
}

int randomize( int array[] )
{
    return array[( rand() % 3 ) ];
}
int main()
{
    srand( time( NULL ) );
    int array[ 3 ];
    int i = 0;
    int used[ 2 ];
   
    do
    {
        int liczba = enter();
        array[ i ] = liczba;
        i++;
    } while( i < 3 );
   
    i = 0;
    do
    {
        int wololo = randomize( array );
        if( !check( wololo, used ) )
             used[ i ] = wololo;
       
        cout << used[ i ];
        i++;
    } while( i < 2 );
   
}
P-101718
alixir
» 2014-01-09 23:01:21
C/C++
int i = 0;
if( i = 0 )

Po 1. Przypisanie zamiast porównania.
Po 2. Nawet po zmianie na == warunek zawsze jest spełniony

C/C++
if( !check( wololo, used ) )
     used[ i ] = wololo;

cout << used[ i ];

Po 3. W przypadku gdyby funkcja check zwróciła true (u ciebie zawsze false), wyświetlasz niezainicjalizowana zmienną
P-101727
« 1 »
  Strona 1 z 1