Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Prosty programik losujący - totolotek

Greebqmaster 26 Sty 2011 20:14 4434 13
  • #1 26 Sty 2011 20:14
    Greebqmaster
    Poziom 12  

    Witam.
    Żeby nie wyjść na kompletnego lesera pomyślałem, ze napiszę mały wstęp.. Otóż trafiłem na studia, na których mam programowanie w C, którego uczymy się.. Dość szybko, a moja informatyka w liceum/gimnazjum polegała na excelu, wordzie, power poincie i zalążkach html, więc o programowaniu wiem tyle co nic.
    Znaczy się.. No czegoś tam się nauczyłem, ale pod nawałem innych przedmiotów na pierwszym roku po prostu nie wyrabiam i mam pewien problem, ponieważ muszę napisać projekt na infę- Program losujący 6 liczb z przedziału <0,49> i sprawdza (po uprzednim wpisaniu przeze mnie jakiś 6ciu liczb z rpzedziału 0,49) ile z nich zgadza się z tymi które ja wpisałem (totolotek ;) )

    Jak na razie mam tyle

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Ale średnio mi to idzie i czy ktoś mógłby mi pomóc? Nie oczekuję gotowca, raczej wskazówki, co miałbym wykorzsytać itp...

    nie wiem też jak zrobić niepseudolosowe liczby i jak określić ten przedział 0,49...

    Dzięki za jakąkolwiek pomoc i pozdrawiam

    PS Program musi być jak najprostrzy - tak powiedział prowadzący. Jeśli będize coś nowego to pewno będize się czepiał, zwłaszcza że wie, że mi nie idzie :x

    0 13
  • #2 26 Sty 2011 20:25
    marcin497
    Poziom 2  

    W swoim kodzie określiłeś już przedział z jakiego mają być losowane liczby:

    "j=rand()%200" zamiast 200 wstaw 49

    musisz dla każdej zmiennej a,b,c... wylosować liczbę oddzielnie

    i potem najlepiej w pętli sprawdzasz ile wylosowanych liczb zgadza się z tymi podanymi przez ciebie

    jeśli naprawdę nie będzie ci wychodzić poszukaj w google jest dużo takich gotowym programów z kodem na inny forach

    w razie problemów pisz :)

    0
  • #3 26 Sty 2011 20:31
    Greebqmaster
    Poziom 12  

    No właśnie nie da siętak, że podaje 6 i losuje 6, a nie losuje po każdej liczbie?

    Udało mi się wykrzesać coś takiego:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Aczkolwiek nie mam pojęcia jak poradzić sobie z faktem, że randomy mogą się np powtórzyć i tym, że nie wiem co zrobić, żeby program coś zrobił jak podam dwa razy tą samą liczbę

    Pozdrawiam

    0
  • #4 26 Sty 2011 20:43
    marcin497
    Poziom 2  

    to że randomy mogą się powtórzyć to musisz sprawdzać czy już taka liczba nie została wylosowana

    j=1+rand()%49; losujesz tylko jedna liczbę i porównujesz ją ze wszystkimi,
    zrób 6 takich zmiennych i losuj im liczby

    czy nie podałeś 2 liczb takich samych też musisz sprawdzić, rób to w pętli najlepiej

    0
  • #5 26 Sty 2011 20:49
    Greebqmaster
    Poziom 12  

    Em.. Właśnie chodzi o to, że nie mam pojęcia jak to sprawdzić.. Nie wiem jak ma wyglądać kod : |

    0
  • #6 26 Sty 2011 21:47
    walek33
    Poziom 28  

    A może dla ułatwienia (?) użyć dwuwymiarowej tablicy? W pierwszej wrzucasz liczby wpisane a w drugiej wylosowane.

    0
  • #7 26 Sty 2011 22:09
    Greebqmaster
    Poziom 12  

    Znalazłem fajny kod i go przeredagowałem trochę i nawet działa i nawet rozumiem. Nie jestem pewny czy umiałbym ogarnąć dwuwymiarową tablicę :x

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Teraz nie wiem jak przyrównać wylosowane elementy do tych podanych :|

    0
  • #8 26 Sty 2011 22:45
    walek33
    Poziom 28  

    Cytat:
    Nie jestem pewny czy umiałbym ogarnąć dwuwymiarową tablicę
    Jednowymiarową już ogarniasz. :D
    Na Twoim miejscu zmienne a ÷ f zastąpiłbym drugą tablicą. Sprawdzenie można zrealizować za pomocą dwóch pętli for zagnieżdżając je.

    0
  • #9 26 Sty 2011 22:58
    mariush'ek
    Poziom 17  

    To tylko wersja najprostsza. Poczytaj o funkcjach. Kilka razy następuje sprawdzanie czy dana liczba jest już w tablicy, więc niepotrzebne powielanie kodu. Za tego minigotowca spróbuj napisać funkcje sprawdzającą czy dana liczba jest w tablicy :) i dołącz ją do swojego programu.

    Jeśli nie bardzo rozumiesz for w "forze" napisz program który wypisuje tabliczkę mnożenia :)

    int czyLiczbaJestWtablicy(tablica[], sprawdzanaLiczba){
    /*
    return 0 - jest juz
    return 1 - nie ma
    */
    }

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • #10 02 Lut 2011 22:09
    Clubber
    Poziom 15  

    Zaciekawił mnie ten programik. Oto moja wersja lotto ;)

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    Trochę kuleje brak wcięć i do zmiany parę komunikatów, no ale działa i buczy ;)
    Mam nadzieję, że się komuś przyda.

    0
  • #11 03 Lut 2011 17:02
    azra
    Poziom 16  

    Co do kodu dwa posty wyżej, nie ma czegoś takiego jak "void main()" - main zawsze zwraca int. ;)

    Jeśli o C++ mówimy, to tam bardzo łatwo zrobić takie losowanie używając kontenerów. Widać to w metodzie Maszyna::losuj, oto kod:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • #12 04 Lut 2011 13:12
    kolokat
    Poziom 26  

    Ale natrzaskaliście tych bibliotek :D

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Jeśli chcesz poznać zasadę działania tego poszukaj w Google jako: Generator liczb pseudolosowych, lub generator liczb pseudoprzypadkowych.

    0
  • #13 05 Lut 2011 14:44
    Xitami
    Poziom 29  

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    f(c,z,b,n,k)
    funkcja pokazujaca K-elementowa kombinacje ze zbioru N elementowego, kombinacja ta jest Z-ta z kolei, N-elementowy zbiór to kolejne liczby naturalne poczynając od C. Pomocnicze B sluzy do obliczania symbolu Newtona.

    0
  • #14 07 Lut 2011 22:29
    Clubber
    Poziom 15  

    Miał być prosty, a obiektowość się zagnieździła ;>

    0