Program realizujący grę LOTTO – potrzebne objaśnienie

0

Witam, jestem początkującym programistą i pierwszy program do zaliczenia brzmi następująco.

Napisz program realizujący grę LOTTO (duży lotek) na tzw. chybi-trafił. Kupon składa się z 1 zakładu (tablica dwuwymiarowa liczb całkowitych lub wartości logicznych o rozmiarze 7x7), w którym program wybiera (zakreśla) losowo 6 różnych liczb z przedziału [1,49]. Otrzymujemy w ten sposób określony zakład.

Następnie maszyna losująca (dalsza część programu) wyznacza 6 niepowtarzających się liczb (tablica jednowymiarowa) równie z przedziału [1,49].

Program sprawdza rezultat losowania i generuje raport na ekran który zawiera:

  • automatycznie wypełniony zakład z widocznymi skreśleniami (znak ‘X’ przy skreślonej liczbie),
  • aktualny wynik losowania (z maszyny losującej),
  • rezultat trafień – pokrycie się aktualnego losowanie z wcześniej zakreślonymi liczbami.

mógłby ktoś co nieco objaśnić?
będę wdzięczny, dziękuję i pozdrawiam.

0

Pewnie, czego nie rozumiesz?

0

nie potrafię skleić tego dobrze
liczby wylosowaneu mnie się łączą(nie są pooddzielane) i do tego nie wiem jak X dac przy wylosowanych liczbach

1

@cazadorr22: jeśli ktokolwiek ma Ci pomóc z tym programem to pokaż kod.

0

mam coś tekiego teraz

#include <cstdlib>
#include <iostream>
#include <time.h>

using namespace std;

int main()
{
string napis;
cout<<"Witamy w LOTTO!"<<endl;

int x,y;
int tab[7][7];
srand(time(0));

for(y=1;y<7;y++)
{
for(x=1;x<7;x++){
tab[y][x]=rand()%49;
cout << tab[y][x] << " ";

}
cout << endl;
}
int i,j;
int wektor[49];
int losowanie[7];
int wylosowana;

srand(time(0));

int przedzial = 49;

for (i = 0; i<przedzial; i++)
	wektor[i] = i + 1;

for (i = 0; i<6; i++)
{
	wylosowana = (rand() % (przedzial - i));
	losowanie[i] = wektor[wylosowana];
	wektor[wylosowana] = 0;
	for (j = 0; j<przedzial - (i + 1); j++)
	{
		if (wektor[j] == 0)
		{
			wektor[j] = wektor[j + 1];
			wektor[j + 1] = 0;
		}
	}
}


cout<<("Wylosowane liczby to:\t");
for (i = 0; i < 6; i++)
	cout<<("%d\t", losowanie[i]);
cout<<("\n");

return 0;

}

0

Poprawnie sformatuj kod. Jeśli nie wiesz jak wstawić jest pomoc przy polu edycji.
Program nie realizuje zadania.
Podziel kod na funkcje, za chwilę nie połapiesz się w bałaganie. Już jest ciężko.
Pisz kod w języku angielskim.

cout << ("%d\t", losowanie[i]); 

Co to jest za składnia? To nie jest C i funkcja printf
https://stackoverflow.com/questions/4781819/printf-vs-stdcout

1
  1. utwórz tablice 49 elementowa.
  2. wypełnij liczbami od jeden do 49 za pomocą pętli
    3 std::shuffle
  3. wybierz pierwsze 6 elementow
0

jak zapisac pętlę? mi coś nie wychodzi

0

kod masz wyzej, a ja musze po prostu od 1 do 49 liczby ustawic w tabelce

1

eh, szkoda ze nie czytasz postow (albo je ignorujesz)

#include <random>
#include <algorithm>
#include <iterator>
#include <iostream>
 
int main()
{
    std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 
    std::random_device rd;
    std::mt19937 g(rd());
 
    std::shuffle(v.begin(), v.end(), g);
 
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << "\n";
}

teraz przerob kod tak by

  1. Do vectora zostaly wpisane liczby od 1 do 49 (a raczej do X gdzie X jest zmienna)
  2. po shuffle wyswietl pierwsze 6 liczb (a raczej pierwsze Y liczb gdzie Y jest zmienna)
0

okej, dziękuję:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1