• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ Utożsamienie zmiennej z wylosowaną liczbą

Aruba Cloud - Virtual Private Server VPS
0 głosów
1,025 wizyt
pytanie zadane 6 lipca 2016 w C i C++ przez czujek22 Dyskutant (7,670 p.)
#include <iostream>
#include <windows.h>
#include <time.h>

using namespace std;

int pierwsza, druga, trzecia, czwarta, piata, szosta, liczba;

int main()
{
    cout << "Witaj w LOTTO. Za chwile podasz 6 swoich liczb od 1 do 49." << endl;
    Sleep(4000);
    cout<<"Podaj pierwsza liczbe: ";
    cin>>pierwsza;
    cout<<"Podaj druga liczbe: ";
    cin>>druga;
    cout<<"Podaj trzecia liczbe: ";
    cin>>trzecia;
    cout<<"Podaj czwarta liczbe: ";
    cin>>czwarta;
    cout<<"Podaj piata liczbe: ";
    cin>>piata;
    cout<<"Podaj szosta liczbe: ";
    cin>>szosta;
    cout<<"Podales swoje liczby. Zaczekaj na losowanie"<<endl;
    Sleep(3000);

    cout << "Witaj w losowaniu. Za 3 sekundy nastapi zwolnienie blokady!" << endl;
    Sleep(3000);
    srand(time(NULL));

    for(int i=1; i<=6; i++)
    {
     liczba=rand()%49+1;
     Sleep(1000);
    cout<<liczba<<"\a"<<endl;
    }


    return 0;
}

Jestem po 4 odcinkach nauki w C++. Ostatnio były liczby pseudolosowe i stworzenie maszyny losującej 'lotto'. Chciałem się sprawdzić z dotychczasową nauką i zrobić pełną symulację obstawiania lotto. W programie trzeba podać 6 liczb, następnie losuje 6 liczb i juz można sobie porównać czy się trafiło, jednak ja chcę aby program na końcu mówił mi ile liczb trafiłem, ew. jaką trafiłem. Tylko nie mam pojęcia jak utożsamić podane przeze mnie liczby z tymi wylosowanymi. Domyślam się, że będzie to przez instrukcje if jednak nie wiem co dalej.

Ps. Zbędne komentarze o tym, czy kod napisałem nieestetycznie czy nieprzyzwoicie bo dopiero zaczynam :)

3 odpowiedzi

+3 głosów
odpowiedź 6 lipca 2016 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Pierwsza rzecz - zamiast stosować tyle zmiennych o swoich nazwach, poznaj tablice. Kod będzie krótszy i łatwiejszy do zmiany (jeśli będziesz chciał na przykład zrobić z tego inną wersję lotto, jakąś zagraniczną)

Druga rzecz - w Lotto jest wykorzystywany algorytm losowania bez powtórzeń. Warto go u siebie zaimplementować, bo może się zdarzyć, że "lotek" wylosuje Ci dwie lub więcej takich samych liczb.
+2 głosów
odpowiedź 6 lipca 2016 przez Avernis Nałogowiec (27,400 p.)

zrób tablicę zamiast liczb pierwsza, druga itd... to samo z wylosowanymi i sprawdź tak:

int traf = 0;

for (int i = 0; i < 6; i++)
{
	for (int j = 0; j < 6; i++)
	{
		if (wpisaneLiczby[i] == wylosowaneLiczby[j])
		{
			traf++;
		}
	}
}
std::cout << traf;

skoro jesteś po 4 kursach to szybko przerób 5, tablice na prawdę bardzo się przydają ;)

+1 głos
odpowiedź 6 lipca 2016 przez CzikaCarry Szeryf (75,340 p.)

No to tak: jak już wczytałeś cinami te liczby do zmiennych pierwsza - szosta to aby sprawdzić, czy zmienna liczba jest równa zmiennej pierwsza - szosta musisz zrobić kilka ifów:

int ilosc_trafionych_liczb=0;
if(pierwsza==liczba) ilosc_trafionych_liczb++;
if(druga==liczba) ilosc_trafionych_liczb++;
if(trzecia==liczba) ilosc_trafionych_liczb++;
if(czwarta==liczba) ilosc_trafionych_liczb++;
if(piata==liczba) ilosc_trafionych_liczb++;
if(szosta==liczba) ilosc_trafionych_liczb++;

Po wykonaniu tych sześciu ifów w zmiennej ilosc_trafionych_liczb będziesz miał ilość trafionych liczb. I pamiętaj - to tylko początek twojej nauki - nie zrażaj się jeśli coś pójdzie Ci nie tak. To, co Ci wypisałem można zrobić o wiele łatwiej, ale jeszcze nie doszedłeś do tablic czy switchów. Oczywiście te ify musisz zamieścić w pętli zaraz za przypisaniem wartości do zmiennej liczba. Warunek zmienna==druga_zmienna porównuje dwie zmienne. Jeśli są takie same - if zwraca true. Jeśli nie - zwraca false.

komentarz 6 lipca 2016 przez Avernis Nałogowiec (27,400 p.)
w ten sposób będzie miał losowanie tylko dla 1 liczby, a on chciał zrobić dokładniejszą symulację lotka
komentarz 6 lipca 2016 przez CzikaCarry Szeryf (75,340 p.)
ale spójrz na jego kod, on ma tylko jedną zmienną na wylosowaną liczbę, więc te ify daje w tej pętli w której losuje liczby zaraz za przypisaniem wartości do zmiennej liczba.
komentarz 6 lipca 2016 przez Avernis Nałogowiec (27,400 p.)
W tym przypadku twój sposób jest w 100% wystarczający, ale jak by chciał zrobić tak jak pisał, prawdziwe losowanie lotto, to musiałby użyć mojego sposobu
komentarz 6 lipca 2016 przez CzikaCarry Szeryf (75,340 p.)
prawdziwe losowanie lotto trudno zrobić nie znając tablic.. xd
komentarz 6 lipca 2016 przez Avernis Nałogowiec (27,400 p.)
Dlatego poleciłem, ja i Eryk aby najpierw je poznał.

Podobne pytania

0 głosów
1 odpowiedź 580 wizyt
pytanie zadane 19 sierpnia 2017 w C i C++ przez Slav83 Nowicjusz (210 p.)
0 głosów
4 odpowiedzi 799 wizyt
pytanie zadane 17 listopada 2015 w C i C++ przez subterras Użytkownik (680 p.)
0 głosów
2 odpowiedzi 310 wizyt
pytanie zadane 8 lutego 2016 w C i C++ przez Noak Mądrala (5,900 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,663 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...