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

Lekcja 21- losowanie bez powtórzen

Ostatnio zmodyfikowano 2014-02-11 00:07
Autor Wiadomość
Lvkaz
Temat założony przez niniejszego użytkownika
Lekcja 21- losowanie bez powtórzen
» 2014-02-10 23:58:17
Witam. Próbowałem zrobić zadanie z kursu (z treści, nie domowe): Program ma nam wylosować 5 liczb bez powtórzeń. Liczby wylosowane mają być z przedziału od 1 do 10.

Zrobiłem je w ten sposób, ale gdzieś się program zapętla...
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

bool czyBylaWylosowana( int iLiczba, int tab[], int ile );
int wylosuj();
void wypisz( int tab[], int ile );

int main()
{
    int wylosowane[ 5 ];
    int ile = 0;
    int a = 0;
    do
    {
        a = wylosuj();
        if( czyBylaWylosowana( a, wylosowane, ile ) == false )
        {
            wylosowane[ ile ] = a;
            ile++;
        } //if
    } while( ile < 5 );
   
    wypisz( wylosowane, ile );
   
    return 0;
}

void wypisz( int tab[], int ile ) {
    cout << "Wylosowane liczby:" << endl;
    for( int i = 0; i < ile; i++ ) {
        cout << tab[ i ] << ", ";
    }
}

bool czyBylaWylosowana( int iLiczba, int tab[], int ile ) {
    if( ile <= 0 ) return false;
   
    for( int i = 0; i < ile; i++ ) {
        if( tab[ i ] = iLiczba ) return true;
       
    }
    return false;
}

int wylosuj() {
    return( rand() % 10 ) + 1;
}

Wydaje mi się, że chodzi o funkcję czyBylaWylosowana(int, int*, int), bo tam za każdym razem podawany parametr "ile" będzie równy zero i przez to ciągle zwraca false. Jednakże w rozwiązaniu podanym w kursie (do while, zamiast for) wydaje mi się, że dzieje się to samo, ale jednak działa. O co chodzi?

pozdr
P-104408
Monika90
» 2014-02-11 00:07:25
Operator porównania to ==, a nie =
P-104409
« 1 »
  Strona 1 z 1