• 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ą

Object Storage Arubacloud
0 głosów
786 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ź 506 wizyt
pytanie zadane 19 sierpnia 2017 w C i C++ przez Slav83 Nowicjusz (210 p.)
0 głosów
4 odpowiedzi 474 wizyt
pytanie zadane 17 listopada 2015 w C i C++ przez subterras Użytkownik (680 p.)
0 głosów
2 odpowiedzi 241 wizyt
pytanie zadane 8 lutego 2016 w C i C++ przez Noak Mądrala (5,900 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...