Dubler Temat założony przez niniejszego użytkownika |
Przypisywanie liczb do liczb bez powtórzeń » 2011-03-02 20:42:10 Elo, mam problem z przypisywaniem liczb do liczb bez powtórzeń.
Chce napisać program który teoretycznie już powinienem umieć napisać ale nie wiem jak zacząć, że masz
11 cyfr i zrobic tak zeby do nich przypisywalo losowo 11 innych cyfr, ale tak zeby sie nie powtarzały we wcześniejszych wyborach.
Umiał bym to zrobić z użyciem rand() i tablic dwuwymiarowych z tym że potrzebuje jakiejś funkcji żeby przypisywanie zawsze było poprawne bo jeśli pozostawić to losowi to:
zakładając że mamy 3 cyfry i 3 cyfry do przypisania im to:
[1.] 1-2, 3-4,5-6
[2.]1-3, 4-2, fail... //jak się przed tym zabezpieczyć?
liczby to:
3,5,7,13,14,15,16,17,18,19,21
i dopasowywanie do nich liczb z:
1,2,4,6,8,9,10,11,12,20,22.
najprościej by było po prostu zamieniać je +1 tyle że niestety już zostały pomieszane i teraz tylko taki program może mnie uratować, ktoś ma pomysł jak to napisać? |
|
pekfos |
» 2011-03-02 20:53:14 składuj wybory w jakiejś tablicy i losuj sprawdzając czy już było. |
|
Dubler Temat założony przez niniejszego użytkownika |
» 2011-03-02 21:09:01 no tak.. tylko patrz:
[1.] 1-2, 3-4,5-6 // wszystko ok
[2.]1-3, 4-2,(do tej pory wszystko ok, a tu nagle) fail...
jak powinna wyglądać funkcja sprawdzająca czy już było? mógłby ktoś podpowiedzieć? |
|
McAffey |
» 2011-03-02 22:01:37 Przecież pekfos Ci napisał, po prostu jak wylosujesz liczbę to sprawdzaj czy nie jest taka sama jak któraś z już wcześniej wylosowanych (po kolei za każdym razem od początku zbioru) i jeśli jest taka sama - powtarzaj losowanie, taki sposób chyba będzie najprostszy - szczególnie dla początkującego. Oczywiście można też np zmieniać zakres wyszukiwań uwzględniając wcześniejsze liczby ale tak chyba Ci będzie trudniej. Powodzenia ;) |
|
piotrwalkusz1 |
» 2011-03-08 18:16:46 Spróbuj tak :
char tablica1[11]={/* wszystkie liczby z pierwszej grupy */} char tablica2[11]={/* wszystkie liczby z drugiej grupy */} bool tablica3[11]={0,0,0,0,0,0,0,0,0,0,0} int licznik=0;
while(licznik<11) { // teraz losujemy jakąś liczbę od 0 do 10 i dajemy ją do zmiennej liczba
if(!tablica3[liczba]) { tablica1[licznik]=tablica2[liczba]; licznik++; tablica3[licznik]=true; } }
//teraz możemy wyświetlić te wartości
Dałam tu tylko przykład jak można to rozwiązać. Jak czegoś nie rozumiesz, bo na tym etapie ostatecznie może się to zdarzyć choć myślę, że wszystko co tu napisałem jest jasne. |
|
« 1 » |