Witam,
program powinnien losować 8 liczb bez powtórzeń po wcześniejszym wpisaniu 10 liczb . Tylko , że nie zabardzo działa . Sprawdzanie czy liczba się powtórzyła nie działa a wcześniej jak miałem 2 liczby do losowania to wszystko normalnie działało a teraz jak zmieniłem na 8 liczb to losuje czasami 2 razy te same liczby . Co jest źle ?
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
//1. Napisz program, który wczyta 3 liczby podane przez użytkownika do tablicy,
//a następnie wylosuje 2 z nich bez powtórzeń.
//Wynik wypisz na ekran. Postaraj się napisać ten program w oparciu o funkcje.
const int rozmiar = 10;
const int rozmiar_temp_array = 8;
void wczytaj(int *tab)
{
for (int i = 0; i < rozmiar; i++)
{
std::cout << "Podaj " << i + 1 << " liczbe : ";
std::cin >> *(tab);
*(tab++);
}
}
int losuj()
{
return rand () % 11;
}
bool sprawdz(int *tab, int wylosowana_liczba)
{
for (int i = 0; i < rozmiar; i++)
{
if (tab[i] == wylosowana_liczba)
{
return true;
}
}
return false;
}
int main()
{
int tab[rozmiar];
wczytaj(tab);
srand(time(NULL));
int temp_array[rozmiar_temp_array];
for (int i = 0; i < 8;)
{
int wylosowana = losuj();
if (!(sprawdz(tab, wylosowana)))
{
std::cout << "Wylosowany indeks to : " << wylosowana << std::endl;
temp_array[i] = tab[wylosowana];
i++;
}
}
for (int i = 0; i < 8; i++)
{
std::cout << "Wylosowana liczba to : " << temp_array[i] << std::endl;
}
system("pause");
return 0;
}