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;
}
 
 