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

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

93,023 zapytań

141,986 odpowiedzi

321,288 komentarzy

62,368 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 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...