Koledzy wyjaśnili Ci już jak napisać ten program szybko, elegancko i wydajnie. Uważam jednak, że pisanie swojej funkcji sortującej na początkowym etapie nauki jest bardzo dobrym ćwiczeniem i nie przesadzałbym ze stosowaniem do wszystkiego biblioteki standardowej. Postaram się zatem wyjaśnić dlaczego ta wersja programu, jaką zamieściłeś w pytaniu nie działała i podpowiedzieć w rozwiązaniu kolejnego problemu jaki opisałeś w komentarzach, a więc jak sprawdzić ile liczb trafił użytkownik.
Dlaczego nie działało?
W warunku pętli while napisałeś coś takiego, jakbyś chciał sprawdzić, czy wszystkie liczby mają taką samą wartość. Tak jakby losowanie 1, 1, 1, 1, 1, 2 Ci odpowiadało :) Oczywiście tak nie jest. To sprawdzenie jest niepoprawne jeszcze z paru powodów. Po pierwsze gdy wykonywać się ono będzie po wylosowaniu pierwszej liczby, to w tablicy mogą być dowolne wartości (np. 12325, -125, 9999999 itd.). Odpalamy program, jesteśmy po losowaniu pierwszej liczby, wypadło 3. Sprawdzamy czy w tablicy wszystkie liczby są różne (zawartość tablicy to teraz: 3, -125, 9999999 itd.). Powiedzmy, że są różne, więc losowanie się kończy, ale to nie jesteśmy usatysfakcjonowani wynikami, prawda? :D A ostatnim powodem, przez który program nie działał jest to, że w C++ porównanie: a == b == c. Działa trochę inaczej niż sobie wyobrażałeś. Taki zapis nie oznacza "czy a i b i c są równe?". To jest wykonywane tak, że najpierw jest sprawdzane, czy a == b. To nam zwraca jakiś wynik, np. true i wyrażanie teraz wygląda tak: true == c. Zupełnie nie o to chodziło Ci przy pisaniu Twojego warunku :) Ufff... no to wiemy co było źle. Teraz zajmiemy się tym...
Jak zrobić, żeby działało?
Możesz delikatnie przerobić swoją pętlę i napisać ją mniej więcej tak:
for (int i = 0; i < 6; i++)
{
int wylosowanyNumer;
do
{
wylosowanyNumer = rand() % 49 + 1;
} while (tablicaZawieraLiczbe(wylosowaneNumery, i, wylosowanyNumer));
wylosowaneNumery[i] = wylosowanyNumer;
}
quicksort(wylosowaneNumery, 0, 5);
wypiszZawartoscTablicy(wylosowaneNumery, 6);
Żeby powyższy kod zadziałał musisz napisać wcześniej funkcje:
bool tablicaZawieraLiczbe(int tablica[], int rozmiar, int liczba);
void wypiszZawartoscTablicy(int tablica[], int rozmiar);
ale to już pozostawię jako ćwiczenie :) Funkcja tablicaZawieraLIczbe zwraca true, gdy... tablica zawiera podaną liczbę :) Co robi wypiszZawartoscTablicy chyba nie muszę tłumaczyć? :)
Aha! No i zmieniłem nazwę zmiennej tablica w Twoim kodzie na wylosowaneNumery, żeby mi się go łatwiej czytało. Musisz zwrócić na to uwagę przy wklejeniu powyższej pętli do swojego kodu.
Jak napisać sprawdzenie ile liczb trafił użytkownik?
Wiesz już jak to zrobić z wykorzystaniem std::find, ale możesz spróbować zastosować w to miejsce już zaimplementowaną funkcję własnego autorstwa: tablicaZawieraLiczbe.
Powodzenia! :)