Cześć,
Zacząłem wdrążać się do programowania i postanowiłem trochę rozszerzyć program do losowania losowych liczb. Padło na pomysł zrobienia "ala" LOTTO, gdzie mogłem wybrać ilość zakładów chybił trafił. Program napisałem tak, aby na końcu wyświetlało mi liczbę trójek,czwórek,piątek oraz szóstek, które trafiłem na X losowań.
Gdy chcę zmienić liczbę losowań powyżej 100 w konsoli pojawia mi się błąd: błąd: (proces 19772) zakończono z kodem -1073741819
Poniżej kod programu, dzięki za każdą pomoc i wskazówkę.
// Losowanie bez powtorzen.cpp : Ten plik zawiera funkcję „main”. W nim rozpoczyna się i kończy wykonywanie programu.
//
#include <iostream>
#include <cstdlib>
#include <ctime>
#include<windows.h>
using namespace std;
//
int losowanie()
{
// rand() % (MAX_NUM - MIN_NUM + 1) + MIN_NUM; // Losowanie liczby z zakresu
return rand() % (49 - 1 + 1) +1; // Losowanie liczby z zakresu
}
int sprawdzenie(int wyniki[], int moje[])
{
int licznik = 0;
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
if ( moje[i] == wyniki[j]) licznik++;
}
}
return licznik;
}
void sprawdzenie_tablicy(int wyniki[], int moje[][6], int wyniki_kilka_losowan[6][1], int liczba_losowan)
{
int licznik = 0;
for (int a = 0; a < liczba_losowan; a++)
{
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
if (moje[a][i] == wyniki[j]) licznik++;
}
}
if (licznik == 3) wyniki_kilka_losowan[2][0] = wyniki_kilka_losowan[2][0] + 1;
if (licznik == 4) wyniki_kilka_losowan[3][0] = wyniki_kilka_losowan[3][0] + 1;
if (licznik == 5) wyniki_kilka_losowan[4][0] = wyniki_kilka_losowan[4][0] + 1;
if (licznik == 6) wyniki_kilka_losowan[5][0] = wyniki_kilka_losowan[5][0] + 1;
licznik = 0;
}
}
void twoje_zaklady(int tab[][6],int liczba)
{
int pom = 0, ile = 0;
cout << "Generuje " << liczba << " kuponow na losowanie." << endl;
// funckja na uzupelnienie tabilicy dwu wymiarowej
for (int a=0; a < liczba; a++) // ilosc zakladow
{
for (int i = 0; i < 6; i++) // stala wartosc - 7 liczb
{
b:
pom = losowanie();
for (int j = 0; j < ile; j++)
{
//sprawdzenie czy dana liczba jest w tablicy
if (pom == tab[a][j])
{
goto b;
}
}
//przypisanie unikatowej wartosci pom do tab[i]
tab[a][i] = pom;
ile++;
}
}
}
int main()
{
srand(time(0));
int pom = 0, ile = 0;
const int liczba_kuponow = 10000;
int wyniki[6];
int wyniki_kilka_losowan[6][1] = { {0}, {0} ,{0} ,{0} ,{0} ,{0} };
int moja[liczba_kuponow][6];
// funckja na uzupelnienie tabilicy
for (int i = 0; i < 6; i++)
{
a:
pom = losowanie();
for (int j = 0; j < ile; j++)
{
//sprawdzenie czy dana liczba jest w tablicy
if (pom == wyniki[j])
{
goto a;
}
}
//przypisanie unikatowej wartosci pom do tab[i]
wyniki[i] = pom;
ile++;
}
//wyswietlenie tablicy
cout << "Losujemy 6 liczb z 49" << endl;
cout << ".";
Sleep(500);
cout << ".";
Sleep(500);
cout << ".";
Sleep(500);
cout << endl << "Wylosowane liczby to: " << endl;
for (int i = 0; i < 6; i++)
{
cout << wyniki[i] << " ";
}
cout <<endl << endl;
twoje_zaklady(moja, liczba_kuponow);
// wyswwietlenie wynikow moich kuponow
//for(int i=0; i < liczba_kuponow;i++)
//{
// for (int j = 0; j < 6; j++)
// {
// cout << moja[i][j] << " ";
// }
// cout << endl;
//}
sprawdzenie_tablicy(wyniki, moja, wyniki_kilka_losowan, liczba_kuponow);
cout << endl << "****************************************" << endl;
cout << "W swoich kuponach trafiles: ";
for (int i = 0; i < 6; )
{
cout << wyniki_kilka_losowan[i][0] << " ";
i++;
}
cout << endl << "****************************************" << endl;
return 0;
}