Losuje mi z 2 ostatnich liczb a nie z wszystkich 3

0

Otóż program powinien losować 2 liczby z 3 podanych, lecz losuje 2 z dwóch ostatnich podanych, pierwszą liczbę pomija. Mógłby ktoś dokładnie wytłumaczyć gdzie tkwi błąd w kodzie?

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int losuj()
{
return (rand() % 2) + 1;
}

bool czybylawylosowana(int liczba, int tablica[], int ile)
{
if(ile <= 0)
return false;

int i = 0;
do
{
    if(tablica[i] == liczba)
    return true;
    i++;
}while(i < ile);
return false;

}

int main()
{
srand(time(NULL));
int wylosowane[2];
int wylosowanych = 0;
int liczby[3];
int i = 0;
do
{
cin >> liczby[i];
i++;
}while(i < 3);

int liczba = 0;
do
{
    liczba = losuj();
    if(czybylawylosowana(liczba, wylosowane, wylosowanych) == false)
    {
        wylosowane[wylosowanych] = liczba;
        wylosowanych++;
    }
}while(wylosowanych < 2);

int a = 0;
do
{

    cout << "Liczby" << liczby[wylosowane[a]] << endl;
    a++;
}while(a < 2);
return 0;

}

0

Losuj tak:

int losuj() {
    return (rand() % 3) ;
}
0

dziękuję bardzo ;) zrobiłem wcześniej tak jak napisałeś, ale nie byłem pewny rozwiązania. Wyjaśniłbyś mi jeszcze to: liczby[wylosowane[a]] ? dawno ten program napisałem i teraz gdy wracam nie wiem jak to się dzieje że gdy wylosowane[a] = np 5 to liczby[5] = 5 a nie wyskakuje blad że wyszło poza tablicę.

0

Pogmatwany ten program strasznie ale z tego co widzę to nie wychodzisz poza zakres. Nie możesz mieć tam liczby 5 bo losujesz z przedziału <0, 2>.

0

dzięki wielkie właśnie tym przedziałem mnie naprowadziłeś!

1 użytkowników online, w tym zalogowanych: 0, gości: 1