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

Przypisywanie liczb do liczb bez powtórzeń

Ostatnio zmodyfikowano 2011-03-08 18:16
Autor Wiadomość
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ć?
P-28770
pekfos
» 2011-03-02 20:53:14
składuj wybory w jakiejś tablicy i losuj sprawdzając czy już było.
P-28771
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ć?
P-28772
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 ;)
P-28775
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.
P-29006
« 1 »
  Strona 1 z 1