Io ho iniziato a creare la classe "Cartella".
La parte + difficile è stata la funzione che inizializzi la cartella in modo completamente casuale (numeri non ripetuti, 5 num su 9 spazi per riga, disposizione num casuale...) ma per ora funzia.
clsCartella.h :
codice:
#include <ostream>
enum e_vincita
{
ambo,
terno,
quaterna,
cinquina,
tombola
};
class Cartella
{
int numeri[3][9];
public:
Cartella();
void riempi();
e_vincita vincita();
friend std::ostream &operator<<(std::ostream &stream, Cartella oggetto);
};
clsCartella.cpp :
codice:
#include "clsCartella.h"
#include <cstdlib>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <vector>
#include <ostream>
void Cartella::riempi()
{
std::vector<int> cont_numeri;
std::vector<int> numeri_15;
int i;
std::vector<int>::iterator pos;
srand(GetTickCount());
// Inizializza il vettore dei numeri
for(i=0;i<27;i++) numeri[i/9][i % 9] = 0;
// Riempie i numeri da 1 a 90
for(i=1; i<91; i++)
{
cont_numeri.push_back(i);
}
// Riempie i 15 numeri
for(i=0; i<15; i++)
{
pos = cont_numeri.begin() + rand() % cont_numeri.size();
numeri_15.push_back(*pos);
cont_numeri.erase(pos);
}
int j;
for(j=0; j<3; j++)
{
cont_numeri.clear();
// Riempie i numeri da 0 a 8
for(i=0; i<9; i++)
{
cont_numeri.push_back(i);
}
// Mette i 15 numeri nelle posizioni giuste
for(i=0; i<5; i++)
{
pos = cont_numeri.begin() + rand() % cont_numeri.size();
numeri[j][*pos] = numeri_15[j * 5 + i];
cont_numeri.erase(pos);
}
}
// Fine
}
std::ostream &operator<<(std::ostream &stream, Cartella oggetto)
{
int j,i;
for(j=0; j<3; j++)
{
for(i=0; i<9; i++)
{
stream << oggetto.numeri[j][i] << '\t';
}
stream << '\n';
}
return stream;
}
Cartella::Cartella()
{
riempi();
}
main di prova:
codice:
#include <iostream>
#include "clsCartella.h"
using namespace std;
void main()
{
Cartella x;
cout << x;
}