Grilles de loto version turbo c++

Description

Ce programme vous permet de tirer des numeros manuellement ou automatiquement, et de vérifier si vous avez gagné en comparant vos grilles et les résultats de la FRANCAISE DES JEUX LOTO.

Source / Exemple :


/*  PROGRAMME EN C SOUS DOS TURBO C++2
	ecrit le 01-02-2003 par cmarsc
	TIRAGE LOTO : TURBO C++2 */

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#include <time.h>
#include <dos.h>

#define KEY_ENTER                13    /* touches du clavier ENTREE */
#define KEY_ESC                  27    /* ESC */
#define KEY_F1                   59    /* Fonction F1 */
#define KEY_F2                   60    /* Fonction F2 */
#define KEY_F3                   61    /* Fonction F3 */
#define KEY_F4                   62    /* Fonction F4 */
#define KEY_LEFT                 75    /* fleche gauche */
#define KEY_RIGHT                77    /* fleche droite */
#define KEY_UP                   72    /* fleche monter */
#define KEY_DOWN                 80    /* fleche descendre */

/* temps d'attente entre les grilles en millisecondes 1000  = 1 seconde */
#define VITESSE_TIRAGE     1000    
#define VITESSE             500    /* ralentir l'affichage */

#define NBRE_LIGNES          17
#define COL_MENU             20
#define LIGNE_MENU            6

#define NBRE_NUMEROS_TIRES    6
#define NBRE_GRILLES		  8
#define NBRE_GAGNANT          3
#define NUMERO_MAX           50

#define COUL_ECRAN           BLUE
#define COUL_FOND            CYAN
#define COUL_BOULES		     BLUE
#define COUL_CURSEUR	     YELLOW
#define COUL_TEXTE           WHITE
#define	COUL_INVITE          LIGHTGREEN
#define COUL_COMPL           RED
#define COUL_BAR_PROGRESSE   YELLOW

static int numero_tire[NBRE_NUMEROS_TIRES];
static int numero_deja_tire[NUMERO_MAX];
static int mes_numeros_tires[NBRE_GRILLES][NBRE_NUMEROS_TIRES];
static int trouves[NBRE_GRILLES][NBRE_NUMEROS_TIRES+2];

int c_mon_choix(void);
void effacer_ecran(int reponse);
void effet_effacer(char *menu[],int col, int ligne);
void ralentir(void);

void color(int coul_texte, int coul_fond);
void menu_principal (int col, int ligne);
void afficher_menu(char *menu[],int col, int ligne, int effet, int couleur);

void tirer_6_numeros(int type_tirage,int grille_numero);
int trier( const void *nombre1, const void *nombre2);

void afficher_grille(int col,int ligne,int grille_numero,int effet);
void afficher_numero_dans_grille(int col,int ligne,int grille_numero);

void afficher_mes_numeros(void);

int AFFICHER_RESULTATS_LOTO(int curs_y, int coul_curs,int box);
void entree_clavier_RESULTATS_LOTO(void);

int verifier_concordances(int numero_du_tirage);
void afficher_aide(int col, int ligne);

enum type_tirage {AUTOMATIQUE = 1,MANUEL = 2};
enum reponse {NON, OUI};
enum mon_choix {TIRER = 1, CONSULTER = 3, TIRAGES_FD_JEUX, NUMEROS_TROUVES};
char *tirage[] = {NULL,"Premier" , "Deuxieme"};

static int mon_choix_principal = 0;
static int NUMERO_DU_TIRAGE_LOTO = 0;
char ecran_precedent[4096];

/* initialiser le tableau avec les resultats de la FRANCAISE DES JEUX */
struct RESULTATS_LOTO_FD_JEUX {    /* FD_JEUX = francaise des jeux */

	int   num_tirage;
	char  date_tirage[11];
	int   premier_2eme_tirage;

			union BOULES_SORTIES {   /* 6 boules + complementaire */
				  int  numero[NBRE_NUMEROS_TIRES + 1];
			} BOULES;

	char  numero_joker[7];

} RESULTATS_LOTO [] = {
/* ³ Nø ³Date tirage ³1/2³ B1 ³ B2 ³ B3 ³ B4 ³ B5 ³ B6 ³comp³ NøJoker ³ */

{ 27, "03-04-2002",  1, 15, 38, 29, 18,  43,   6,  36, ""},
{ 27, "03-04-2002",  2, 36, 24, 33, 38,  15,   7,  25, "3655671"},
{ 28, "06-04-2002",  1, 16, 25, 19,  9,   4,   2,  34, ""},
{ 28, "06-04-2002",  2, 15, 10,  2,  8,  13,  28,  25, "4308966"},
{ 29, "10-04-2002",  1,  4, 13, 12, 47,  35,  42,  21, ""},
{ 29, "10-04-2002",  2, 27,  9, 36, 22,  46,  23,  20, "4186603"},
{ 30, "13-04-2002",  1, 12, 24, 30,  1,  38,  11,   2, ""},
{ 30, "13-04-2002",  2, 34, 15,  8, 18,  22,  33,  23, "0620308"},
{ 31, "17-04-2002",  1, 15, 31, 11,  7,  27,  44,  28, ""},
{ 31, "17-04-2002",  2, 15, 27,  6, 33,  26,  24,  23, "2114795"},
{ 32, "20-04-2002",  1, 46, 34, 11, 20,  16,   5,  39, ""},
{ 32, "20-04-2002",  2, 33,  3, 20, 41,  11,   6,  25, "0253876"},
{ 33, "24-04-2002",  1, 36, 25, 10, 26,  41,  16,  39, ""},
{ 33, "24-04-2002",  2, 44, 13, 32, 16,  49,  33,  23, "2478121"},
{ 34, "27-04-2002",  1, 12, 44, 24, 37,  20,  11,  10, ""},
{ 34, "27-04-2002",  2, 12, 29,  2, 16,   4,  48,  33, "3926446"},
{ 35, "01-05-2002",  1, 12, 38, 17, 16,  18,  14,   5, ""},
{ 35, "01-05-2002",  2, 11, 39,  4, 34,  16,   3,  46, "5933436"},
{ 36, "04-05-2002",  1, 22, 13, 38,  7,  46,  34,  19, ""},
{ 36, "04-05-2002",  2, 39, 31, 15,  5,  34,   6,  20, "7728862"},
{ 37, "08-05-2002",  1, 35, 10, 31, 23,   6,  33,  14, ""},
{ 37, "08-05-2002",  2,  8, 42, 44, 32,  22,  27,  41, "1948780"},
{ 38, "11-05-2002",  1, 23, 38, 44, 48,  47,   9,  40, ""},
{ 38, "11-05-2002",  2, 14, 22, 35, 46,  23,  45,  12, "6215850"},
{ 39, "15-05-2002",  1, 32, 18, 39, 22,  30,   1,  12, ""},
{ 39, "15-05-2002",  2, 47, 36, 45, 22,  39,  42,   3, "9573339"},
{ 40, "18-05-2002",  1, 11, 48, 30, 13,  31,  37,  32, ""},
{ 40, "18-05-2002",  2, 25, 34,  1, 46,   6,  24,  41, "2813674"},
{ 41, "22-05-2002",  1, 34, 19, 42, 49,  46,  28,  41, ""},
{ 41, "22-05-2002",  2, 39, 31,  9, 36,  22,  43,  46, "2187988"},
{ 42, "25-05-2002",  1,  6,  8, 32, 27,  29,  24,  18, ""},
{ 42, "25-05-2002",  2, 38, 31,  5,  4,  20,  33,  34, "9639100"},
{ 43, "29-05-2002",  1, 21,  5, 39, 32,  38,  36,  22, ""},
{ 43, "29-05-2002",  2,  5, 10,  8,  9,  11,  20,  39, "1361775"},
{ 44, "01-06-2002",  1, 38,  1, 28,  8,  19,   4,  45, ""},
{ 44, "01-06-2002",  2, 46,  5, 40,  1,  47,  27,  33, "4192113"},
{ 45, "05-06-2002",  1, 32, 12,  8, 34,  28,  30,  36, ""},
{ 45, "05-06-2002",  2, 34, 12, 20,  8,  13,   9,  15, "2160503"},

{ 46, "08-06-2002",  1, 34, 42, 49,  1,  19,   6,   7, ""},
{ 46, "08-06-2002",  2, 35, 13, 26, 11,   5,  15,   8, "5218755"},
{ 47, "12-06-2002",  1, 29, 36,  1,  2,  35,  41,  48, ""},
{ 47, "12-06-2002",  2, 35, 21, 37, 27,  43,  30,  42, "9447659"},
{ 48, "15-06-2002",  1, 21, 30, 34,  2,  42,  45,  15, ""},
{ 48, "15-06-2002",  2, 40, 42, 45, 33,  28,  23,  21, "2625949"},
{ 49, "19-06-2002",  1, 32, 34,  2,  7,  29,  13,  41, ""},
{ 49, "19-06-2002",  2, 14, 36, 13, 27,  17,   8,  19, "7697848"},
{ 50, "22-06-2002",  1, 37, 13,  7, 31,  35,   3,   9, ""},
{ 50, "22-06-2002",  2, 25,  2, 10, 26,  23,  44,  47, "3299826"},
{ 51, "26-06-2002",  1,  3,  9, 37, 19,  10,  32,  12, ""},
{ 51, "26-06-2002",  2, 38, 25, 12, 20,  43,  26,  34, "9725177"},
{ 52, "29-06-2002",  1, 34, 38, 39, 45,   9,  42,  15, ""},
{ 52, "29-06-2002",  2, 25,  2, 44, 12,  13,  10,  35, "9085115"},
{ 53, "03-07-2002",  1, 33, 31, 19,  9,   1,  39,   2, ""},
{ 53, "03-07-2002",  2, 40, 22, 32, 13,  19,  37,  11, "3826789"},
{ 54, "06-07-2002",  1, 15,  9, 17, 34,  27,  22,   7, ""},
{ 54, "06-07-2002",  2, 10, 29, 22,  2,  35,  41,  48, "8401726"},
{ 55, "10-07-2002",  1,  7, 38,  8, 11,  26,  22,  37, ""},
{ 55, "10-07-2002",  2,  2, 34, 16, 40,   8,  10,  15, "9981090"},
{ 56, "13-07-2002",  1, 25,  4, 41,  2,  22,  48,  15, ""},
{ 56, "13-07-2002",  2 ,13, 46, 29, 43,  45,  17,  49, "1733531"},
{ 57, "17-07-2002",  1,  7,  3, 28, 22,  44,  23,  16, ""},
{ 57, "17-07-2002",  2, 12,  7, 23, 25,  32,  47,  49, "9040735"},
{ 58, "20-07-2002",  1, 12, 48, 20, 25,  10,   2,  11, ""},
{ 58, "20-07-2002",  2,  9, 13, 47, 38,  16,  12,  10, "2422204"},
{ 59, "24-07-2002",  1, 24,  7, 49, 19,  21,  46,  11, ""},
{ 59, "24-07-2002",  2, 19, 33,  6, 18,  16,   4,  48, "0225225"},
{ 60, "27-07-2002",  1, 29, 33, 19, 46,  44,  21,  11, ""},
{ 60, "27-07-2002",  2, 42, 45, 47,  9,  18,  20,  28, "8925914"},
{ 61, "31-07-2002",  1, 17,  6, 39, 11,  16,  46,  22, ""},
{ 61, "31-07-2002",  2, 38, 45, 31, 42,  21,  41,  44, "6300290"},

};

int main(void) {

	menu_principal(COL_MENU ,LIGNE_MENU);
	/* entrer au clavier du choix principal */
	c_mon_choix();

return EXIT_SUCCESS;
} /* fin de la fonction main */

void effacer_ecran(int reponse) {
	int i1;

   /* supprimer le curseur clignotant */
	_setcursortype(_NOCURSOR);
	color(COUL_ECRAN,COUL_ECRAN);
	if (reponse == NON) {
		for (i1 = 0; i1 <= 25; ++i1) {
		   gotoxy(1,25 );  cprintf("%80c\n");
			ralentir();
		 }
	} else {
		clrscr();
	}

} /* fin de la fonction effacer_ecran */

void color(int coul_texte, int coul_fond) {

	textcolor (coul_texte);
	textbackground (coul_fond);
} /* fin de la fonction color */

void afficher_menu(char *menu[],int col, int ligne, int effet, int couleur) {

	 int i1, i2;
  if (effet == OUI) {

	 for (i2 = 0; i2 <= strlen(menu[1]) ; ++i2) {

		for (i1 = 0; menu[i1] != NULL; ++i1) {

		   if (i2) {
			   color(BLACK,BLACK); /* dessiner l'ombre */
			   gotoxy (col+i2,1+ligne +i1);
			   cprintf("%2c",219);
		   }

		   color(COUL_TEXTE, couleur);
		   gotoxy(col,ligne + i1);
		   cprintf( "%1s", strlen(menu[i1]) + menu[i1] -i2);

		} /* fin for (i1) */

		ralentir();

	 } /* fin for (i2) */

  } else {
		/* afficher menu sans effet */
		for (i1 = 0; menu[i1] != NULL; ++i1) {

		   color(BLACK,BLACK); /* dessiner l'ombre */
		   gotoxy (col+1 ,1+ligne +i1);
		   cprintf("%27c",'\0');

		   color(COUL_TEXTE, couleur);
		   gotoxy(col,ligne + i1 );
		   cprintf( "%s", menu[i1]);
		}

  } /* fin if effet == OUI */
return ;

} /* fin de la fonction afficher_menu */

void menu_principal(int col, int ligne) {

	char *menu[] = {
	  "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",
	  "³ 1) Tirer les numeros automatiquement..³",
	  "³ 2) Tirer les numeros manuellement.....³",
	  "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
	  "³ 3) Consulter mes numeros..............³",
	  "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
	  "³ 4) Tirages de la FRANCAISE DES JEUX...³",
	  "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
	  "³ 5) Quitter le programme...............³",
	  "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",
	  NULL,
	};

	 effacer_ecran(NON);

	 color(COUL_TEXTE,COUL_FOND);
	 afficher_menu(menu, col, ligne + 1,OUI,COUL_FOND);

	 /* tester si la fonction est active */
	if (!mes_numeros_tires[0][0]) color(LIGHTGRAY,COUL_FOND);

     /* texte en gris non actif */
	 gotoxy (col+1,1+ligne + 4);
	 cprintf("%0.39s",menu[4]+1);

	color(YELLOW,RED);
	gotoxy (col+10,ligne );
	cprintf(" Faites votre choix ");

return ;
};   /* fin de la fonction menu_principal */

int c_mon_choix(void) {

	char mon_choix;
	int i1;

	/* emplacement de la grille en colonne */
	int position_grille_x;

	/* emplacement de la grille en ligne */
	int position_grille_y;
	mon_choix = '0';
	while ( mon_choix != KEY_ESC && mon_choix != '5') {

		mon_choix = getch();

		switch(mon_choix) {

		case '1':   /* tirage automatique ou manuel */
		case '2':

			effacer_ecran(NON);
			mon_choix_principal = TIRER;

			for (i1 = 0; i1 < NBRE_GRILLES; i1++) {

					 /* tirage automatique      tirage manuel */
(mon_choix == '1') ? tirer_6_numeros(AUTOMATIQUE,i1) : tirer_6_numeros(MANUEL,i1);

			position_grille_x = 52;  /* colonne */
			position_grille_y = 2;   /* ligne */

        	afficher_grille(position_grille_x,position_grille_y,i1,OUI);
			
			if (mon_choix == '1') delay(VITESSE_TIRAGE);

			} /* fin de for */

			menu_principal(COL_MENU ,LIGNE_MENU);
		break;

		case '3':
			mon_choix_principal = CONSULTER;
			afficher_mes_numeros();
		break;

		case '4':

			 mon_choix_principal = TIRAGES_FD_JEUX;
			 effacer_ecran(NON);
			 entree_clavier_RESULTATS_LOTO();
		break;
                 
		case '5':     /* quitter le programme */
		case KEY_ESC:
			 if (mon_choix) return EXIT_SUCCESS;
		break;

		default:
		break;
		} /* fin de switch() */

	} /* fin de while() */

return EXIT_SUCCESS;
}    /* fin de la fonction c_mon_choix */

void tirer_6_numeros(int type_tirage,int grille_numero){

	int i0, i1,i3, numero_ok, col,ligne;
	int numero_tire1,SELECTIONNER_A;
	char votre_choix,votre_choix2,nombre[2];
	
	i1 = i3 = 0;
	numero_ok  = 0;
	numero_tire1 = 0;
	col = 17;  ligne = 9;

	/* selectionner les 6 premiers sortis au moins 40 fois */
	SELECTIONNER_A = 40;

	srand((unsigned) time(NULL));

	color (YELLOW,COUL_ECRAN);
	gotoxy(col,ligne+4); cprintf("%31c",'\0');

for (i1 = 0;i1 <= NUMERO_MAX; i1++) {

	/* initialiser a zero */
	if (i1 <= NBRE_NUMEROS_TIRES) {
		numero_tire[i1] = 0;
		trouves[grille_numero][i1] = 0;
		mes_numeros_tires[grille_numero][i1] = 0;
	}
	numero_deja_tire[i1] = 0;
}

	gotoxy(col ,ligne);

if (type_tirage == AUTOMATIQUE)   /* tirage automatique */
	cprintf(" Selection des numeros en cours ");
else
	cprintf("%7cENTREZ LES NUMEROS%6c",'\0','\0');

	color (COUL_TEXTE,COUL_FOND);

for (i1 = 0; i1 <= ligne+2; i1++) {

	color (COUL_TEXTE,COUL_ECRAN);
	gotoxy(col,24-i1); cprintf("%31c",'\0');
	color (COUL_TEXTE,COUL_FOND);

	gotoxy(col,21-i1); cprintf("ÚÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄ¿");
	gotoxy(col,22-i1); cprintf("³%4c³%4c³%4c³%4c³%4c³%4c³",
							   '\0','\0','\0','\0','\0','\0');
	gotoxy(col,23-i1); cprintf("ÀÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÙ");
	delay(10);
}

while (numero_ok < NBRE_NUMEROS_TIRES ) {

	if (type_tirage == AUTOMATIQUE) {  /* tirage automatique */

tirer_un_autre_numero:
		 
		/* tirer les numeros pseudos aleatoirement */
		numero_tire1 = rand() % (NUMERO_MAX);

		/* tester si numero valide sinon en tirer un autre */
		if (!numero_tire1 || (numero_tire1 > NUMERO_MAX)) {
			 goto tirer_un_autre_numero;
		}

		/* compter le nombre de fois que le numero sort */
		numero_deja_tire[ numero_tire1 ]++;

		if ( numero_deja_tire[ numero_tire1 ] == SELECTIONNER_A) {

			numero_tire[numero_ok]	= numero_tire1;
			color (COUL_BAR_PROGRESSE,COUL_BAR_PROGRESSE);

			gotoxy(col+(numero_ok*30) / NBRE_NUMEROS_TIRES,ligne+4);
			cprintf("ÛÛÛÛÛÛ");  /* barre de progression */

			++numero_ok;
		}

		i1++;
		if (! (i1 % 6) ) i3 = 0;

		i3 += 5;            /* se placer dans la bonne case */
		color (COUL_TEXTE,COUL_FOND);
		gotoxy(col-3 +i3 ,ligne+2);    cprintf("%2d", numero_tire1);

		for (i0 = 0; i0 <150; i0++) {
			gotoxy(1,1); cprintf("");
		}

	} else if (type_tirage == MANUEL) { /* debut tirage manuel */

	i3 += 5;              /* se placer dans la bonne case */
votre_choix2 = '0';
numero_deja_tape:
	_setcursortype(_NORMALCURSOR);
	color (COUL_TEXTE,COUL_FOND);
	gotoxy(col-3+i3,ligne+2);

	votre_choix = getch();
	if (isdigit(votre_choix)) cprintf("%2c",votre_choix);

	/* annuler la tache puis retourner au menu principal */
	if (votre_choix == KEY_ESC || votre_choix2 == KEY_ESC) return;

	votre_choix2 = getch();

	sprintf(nombre,"%c%c",votre_choix,votre_choix2);
	nombre[2] = '\0';

	numero_tire1 = atoi(nombre);  /* convertir char en entier */

/* Verifier si le nombre est valide (de 1 a 49) */
if (numero_tire1 <= 0 || numero_tire1 > NUMERO_MAX-1) {
erreur1:
	color (COUL_TEXTE,RED); nombre[2] = '\0';
   gotoxy(col,ligne+4); cprintf("ERREUR : ENTREZ UN AUTRE NUMERO");

   do {
   } while(!kbhit());

	color (COUL_TEXTE,COUL_ECRAN);
	gotoxy(col,ligne+4); cprintf("%31c",'\0');
goto numero_deja_tape;
}
	/* compter le nombre de fois que le numero sort */
	numero_deja_tire[ numero_tire1 ]++ ;

	/* Verifier si le nombre tape l'est deja */
	if (numero_deja_tire[ numero_tire1 ] > 1 ) goto erreur1;

	numero_tire[numero_ok] = numero_tire1;
	gotoxy(col-3+i3,ligne+2);
	cprintf("%2d",numero_tire[numero_ok]);

	++numero_ok;          /* compter les numeros arreter a 6 */

	}
}

	  /* quicksort algorithme de tri dans stdlib.h */
	 qsort((void *)numero_tire,
	 NBRE_NUMEROS_TIRES, sizeof(numero_tire[0]), trier);

	 /* copier les numeros tires tries */
	 for (i1 = 0 ; i1 < NBRE_NUMEROS_TIRES; ++i1) {
		mes_numeros_tires[grille_numero][i1] = numero_tire[i1];
	 }

	 for (i1 = 0 , i3 = 5; i1 < NBRE_NUMEROS_TIRES; ++i1,i3 += 5) {

		gotoxy(col-3+i3 ,ligne+2);
		cprintf("%2d",numero_tire[i1]);
	 }

return ;
}  /* fin de la fonction tirer_6_numeros */

int trier( const void *nombre1, const void *nombre2)
{
   return( strcmp(nombre1,nombre2) );
} /* fin de la fonction trier */

void afficher_grille(int col,int ligne, int grille_numero,int effet){

static char *menu[] = {
		"ÚÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄ¿",
		"³....³ 10 ³ 20 ³ 30 ³ 40 ³",
		"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
		"³ 01 ³ 11 ³ 21 ³ 31 ³ 41 ³",
		"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
		"³ 02 ³ 12 ³ 22 ³ 32 ³ 42 ³",
		"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
		"³ 03 ³ 13 ³ 23 ³ 33 ³ 43 ³",
		"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
		"³ 04 ³ 14 ³ 24 ³ 34 ³ 44 ³",
		"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
		"³ 05 ³ 15 ³ 25 ³ 35 ³ 45 ³",
		"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
		"³ 06 ³ 16 ³ 26 ³ 36 ³ 46 ³",
		"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
		"³ 07 ³ 17 ³ 27 ³ 37 ³ 47 ³",
		"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
		"³ 08 ³ 18 ³ 28 ³ 38 ³ 48 ³",
		"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
		"³ 09 ³ 19 ³ 29 ³ 39 ³ 49 ³",
		"ÀÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÙ",
		NULL,
	};
	color(COUL_TEXTE,COUL_FOND);

	if (effet == OUI) {
		 effet_effacer(menu, col, ligne);

		 color(COUL_TEXTE,COUL_FOND);
		 afficher_menu(menu, col, ligne,OUI,COUL_FOND);

	} else {

		 afficher_menu(menu, col, ligne,NON,COUL_FOND);

	} /* fin effet == OUI */

	 color (COUL_INVITE,COUL_ECRAN);

	 gotoxy (col+9,ligne-1);
	 cprintf("Grille %-3d",1 + grille_numero);

	 afficher_numero_dans_grille(col+1,ligne,grille_numero);
return ;
};   /* fin de la fonction afficher_grille */

void afficher_mes_numeros(void){

static char *tableau[4] = {
"ÚÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄ¿",
"³Grille³ B1 ³ B2 ³ B3 ³ B4 ³ B5 ³ B6 ³Trouves³",
"ÃÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄÄ´",
"ÀÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÙ"
};

	static int i1, i2, i3, col, ligne, numero1, numero2;
	static int MAX_MENU, curseur_y,curseur_x;
	char votre_choix, votre_choix2,nombre[2];

	col = 2;   ligne = 1;
	MAX_MENU = NBRE_GRILLES;

	effacer_ecran(OUI);

	color (COUL_INVITE,COUL_ECRAN);
	gotoxy (col+15,ligne);
	cprintf("Mes numeros tires");

   gotoxy (2, 25);
   cprintf("F1 Aide  ESC Menu  F2 MES NUMEROS  F3 TROUVES " //
		 " F4 RESULTATS DES TIRAGES");

	color (COUL_TEXTE,COUL_FOND);

	   /* dessiner le haut du TABLEAU */
		for (i2 = 0; i2 <=2; ++i2) {
			gotoxy (col,1+ligne+i2);     cprintf("%s",tableau[i2]);
		}

debut_afficher_mes_numeros:
	 /* afficher mes 6 numeros */
	 for (i1 = 0; i1 < NBRE_GRILLES; ++i1) {

		/* dessiner le trait de separation */
		gotoxy (col,5+ligne+(i1 *2));    cprintf("%s",tableau[2]);

		/* afficher le numero de la grille */
		gotoxy (col, 4+ligne + (i1*2));  cprintf("³%3d%3c³",1+i1,'\0');

		for (i2 = 0, i3 = 0; i2 < NBRE_NUMEROS_TIRES; ++i2,i3 += 5) {

		   gotoxy (col+8+i3,  4 +ligne + (i1*2));
		   cprintf("%3d%1c³", mes_numeros_tires[i1][i2],'\0');
		}

		/* afficher le nombre de numeros gagnants (Trouves) */
		gotoxy (col+8+i3, 4+ligne + (i1*2));

		if (trouves[i1][7]) {
		/*	retirer 1 pour ne pas compter le complementaire */
			cprintf("%2d +%2c%c³",trouves[i1][6]-1,'C','\0');

		} else {
			cprintf("%2d%5c³",trouves[i1][6],'\0');
		}

		if (trouves[i1][6] >= NBRE_GAGNANT) {
		   /* mettre en evidence si au moins 3 numeros gagnants */
		   color (WHITE,MAGENTA);

		   gotoxy (col+8+i3, 4+ligne + (i1*2));
		   if (trouves[i1][7]) {
				trouves[i1][6]--; /* ne pas compter le complementaire */

	  if (trouves[i1][6] < NBRE_GAGNANT) color (COUL_TEXTE,COUL_FOND);

				cprintf("%2d +%2c%c",trouves[i1][6],'C','\0');
		   } else {
				cprintf("%2d%5c",trouves[i1][6],'\0');
		   }

		} /* fin de if (trouves[i1][6] >= NBRE_GAGNANT) */

	   color (COUL_TEXTE,COUL_FOND);
	 } /* fin de for (i1) */

		   /* FERMER LE BAS DU TABLEAU */
		   gotoxy (col, 3 + ligne+(i1*2));     cprintf("%s",tableau[3]);

	color (COUL_TEXTE,COUL_ECRAN);

	/* afficher les resultats du LOTO DE LA FD_JEUX */
	i1 = NUMERO_DU_TIRAGE_LOTO ;
	gotoxy (2,24);
	cprintf("%s Tirage du LOTO nø %d du %s:",

		 tirage[RESULTATS_LOTO[i1].premier_2eme_tirage],
		 RESULTATS_LOTO[i1].num_tirage,
		 RESULTATS_LOTO[i1].date_tirage);

	 /* afficher les 6 boules + le complementaire */
	 for (i2 = 0, i3 = 0; i2 <= NBRE_NUMEROS_TIRES; ++i2,i3 += 5) {
		gotoxy (46+i3, 24);

		/* couleur du numero complementaire */
		if (i2 == NBRE_NUMEROS_TIRES) color (COUL_TEXTE,COUL_COMPL);

		cprintf(" %2d ", RESULTATS_LOTO[i1].BOULES.numero[i2]);
	 }

	 color (COUL_TEXTE,COUL_BOULES);
	 /* Placer les numeros TROUVES dans le cadre */
	 for (i1 = 0; i1 < NBRE_GRILLES; ++i1) {

		for (i2 = 0, i3 = 0; i2 <= NBRE_NUMEROS_TIRES; ++i2,i3 += 5) {

		 if (i2 < NBRE_NUMEROS_TIRES) {

		   gotoxy (10+i3, 4 + ligne + (i1*2));
		   numero1 = trouves[i1][i2];
		   numero2 = RESULTATS_LOTO[NUMERO_DU_TIRAGE_LOTO].BOULES.numero[6];

		   if (numero1) {

			 /* mettre en couleur differente le complementaire */
			  if (numero1 == numero2) {
				 color (COUL_TEXTE,COUL_COMPL);
			  } else {
				 color (COUL_TEXTE,COUL_BOULES);

			  }

				cprintf(" %2d ", trouves[i1][i2]);
		   } /* fin de if (numero1) */

		 } /* fin de if (i2 < NBRE_NUMEROS_TIRES) */
		
       } /* fin de for (i2) */
  
	 } /* fin de for (i1) */

   votre_choix = '0';
   while (votre_choix != KEY_ESC) {

	   if (curseur_y < 0)          curseur_y = MAX_MENU-1;
	   if (curseur_y >= MAX_MENU)  curseur_y = 0;

	   if (curseur_x < 0)  curseur_x = NBRE_NUMEROS_TIRES-1;
	   if (curseur_x >= NBRE_NUMEROS_TIRES)  curseur_x = 0;

	   afficher_grille(52,2,curseur_y,NON);
	   gettext(1,1,51,24,ecran_precedent);

	   color (COUL_CURSEUR,YELLOW);

	   /* clignoter si le numero est gagnant */
	   if (trouves[curseur_y][curseur_x]) color (206,YELLOW);

	   /* deplacements sur boules */
	   gotoxy (col+8+(curseur_x*5),  4 +ligne + (curseur_y*2));
	   cprintf("%3d%1c", mes_numeros_tires[curseur_y][curseur_x],'\0');

	   votre_choix = getch();

	   if (isdigit(votre_choix)) { /* tester si c'est un chiffre */

			color (COUL_TEXTE,COUL_FOND);
			gotoxy (col+8+(curseur_x*5), 4 +ligne + (curseur_y*2));
			cprintf("%3c ",votre_choix);
			votre_choix2 = getch();

			sprintf(nombre,"%c%c",votre_choix,votre_choix2);
			numero1 = atoi(nombre);
			nombre[2] = '\0';

				if (numero1 > 0 && numero1 < NUMERO_MAX)
				   mes_numeros_tires[curseur_y][curseur_x] = numero1;

			goto debut_afficher_mes_numeros;

	   } /* if isdigit(votre_choix) */

	   if (votre_choix != KEY_ESC && votre_choix != KEY_F1) {
		  puttext(1,1,51,24,ecran_precedent);
	   }

	   switch(votre_choix) {

	   case KEY_UP:           /* monter avec la fleche */
		   --curseur_y;
	   break;

	   case KEY_DOWN:         /* descendre avec la fleche */
		   ++curseur_y;
	   break;
	   case KEY_LEFT:         /* aller vers la gauche */
		   --curseur_x;
	   break;

	   case KEY_RIGHT:        /* aller vers la droite */
		   ++curseur_x;
	   break;
	   case KEY_F1:  afficher_aide(5,5);  break;
	   case KEY_F2:  mon_choix_principal = CONSULTER; break;
	   case KEY_F3:  mon_choix_principal = NUMEROS_TROUVES;   break;

	   case KEY_F4:
			 effacer_ecran(OUI);
			 mon_choix_principal = TIRAGES_FD_JEUX;
			 entree_clavier_RESULTATS_LOTO();
			 if (votre_choix)  return ;
	   break;

	   case KEY_ESC:
			menu_principal (COL_MENU ,LIGNE_MENU);
	        if (votre_choix)  return ;
	   break;

	   default:
	   break;

	   } /* switch(votre_choix) */

   } /* while (votre_choix != KEY_ESC) */

return ;
}  /* fin de la fonction afficher_mes_numeros */

int AFFICHER_RESULTATS_LOTO(int curs_y, int coul_curs,int box) {
static char *tableau[4] = {
   "ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄ¿",
   "³Date tirage³ B1 ³ B2 ³ B3 ³ B4 ³ B5 ³ B6 ³comp³",
   "ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
   "ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÙ"
};
	static int MAX_MENU;   /* nbre maximum de lignes dans le menu */
	int i1, i2, i3, i5, col,ligne;
	col = 2;   ligne = 2;
MAX_MENU = sizeof RESULTATS_LOTO / sizeof(struct RESULTATS_LOTO_FD_JEUX)-1;

	 if (box == OUI) {
			 color (COUL_INVITE,COUL_ECRAN);
			 gotoxy (col + 10,1);
			 cprintf("Resultats des tirages du LOTO");

			 gotoxy (20,25);
			 cprintf("ESC Menu  ENTREE pour lancer l'EXECUTION");

			 color(COUL_TEXTE,COUL_FOND);

		   /* dessiner le le haut du TABLEAU */
			for (i2 = 0; i2 <=2; ++i2) {
				gotoxy (col,ligne+i2);   cprintf("%s",tableau[i2]);
			}
	 } /* fin if (box == OUI) */

	   i1 = curs_y;
	   i5 = (curs_y % (NBRE_LIGNES));

	color (COUL_TEXTE,coul_curs);
	gotoxy (col,3+ligne + i5);
if (i1 <= MAX_MENU) {

	cprintf("³%s ³", RESULTATS_LOTO[i1].date_tirage);

	 /* afficher les 6 boules + le complementaire */
	 for (i2 = 0, i3 = 0; i2 <= NBRE_NUMEROS_TIRES; ++i2,i3 += 5) {
		gotoxy (col+13+i3,3 + ligne + i5);
		cprintf(" %2d ³", RESULTATS_LOTO[i1].BOULES.numero[i2]);
	 }
	color (COUL_TEXTE,COUL_ECRAN);

	gotoxy (col, 4 + ligne + NBRE_LIGNES);

	cprintf("Tirage N%3d %13s tirage", RESULTATS_LOTO[i1].num_tirage,
			 tirage[RESULTATS_LOTO[i1].premier_2eme_tirage]);

	/* afficher le JOKER */
   if (RESULTATS_LOTO[i1].premier_2eme_tirage == 2)
	   cprintf(" N Joker %0.7s", RESULTATS_LOTO[i1].numero_joker);
   else
	   cprintf("%16c",'\0');

} else {
	/* lignes vides */
	cprintf("³%11c³%4c³%4c³%4c³%4c³%4c³%4c³%4c³",
	'\0','\0','\0','\0','\0','\0','\0','\0');

} /* fin if ( i1 < MAX_MENU) */

	 if (box == OUI) {  /* FERMER LE BAS DU TABLEAU */
		color (COUL_TEXTE,coul_curs);
		gotoxy (col,3+ligne+NBRE_LIGNES);   cprintf("%s",tableau[3]);
	 }

return MAX_MENU;

}  /* fin de la fonction AFFICHER_RESULTATS_LOTO */

void entree_clavier_RESULTATS_LOTO(void) {

   char votre_choix;
   static int curs_y = 0;
   static int dep = 0;
   int i1, PAGE_SUIVANTE;
   int MAX_MENU;     /* nbre maximum de lignes dans le menu */
   PAGE_SUIVANTE = OUI;

   MAX_MENU = AFFICHER_RESULTATS_LOTO(dep,COUL_FOND,OUI);

   votre_choix = '0';
   while (votre_choix != KEY_ESC) {

	   if (curs_y < 0)           curs_y = 0;
	   if (curs_y >=  MAX_MENU)  curs_y = MAX_MENU;

	   if (PAGE_SUIVANTE == OUI) {

		  for (i1 = 0; i1 < NBRE_LIGNES; ++i1) {
			 AFFICHER_RESULTATS_LOTO(i1+dep,COUL_FOND,NON);
		  }
		  PAGE_SUIVANTE = NON;

	   } /* fin if (PAGE_SUIVANTE) */

	   gettext(1,2,51,5+NBRE_LIGNES,ecran_precedent);
	   AFFICHER_RESULTATS_LOTO(curs_y,COUL_BOULES,NON);

	   afficher_grille (52,2,curs_y,NON);

	   votre_choix = getch();

	   if (votre_choix != KEY_ENTER)
		   puttext(1,2,51,5+NBRE_LIGNES,ecran_precedent);

	   switch(votre_choix) {

	   case KEY_UP:          /* monter avec la fleche */
		   --curs_y;
		   if ( (curs_y % NBRE_LIGNES) == NBRE_LIGNES-1) {
				dep = curs_y - (NBRE_LIGNES-1);
				PAGE_SUIVANTE = OUI;
			}
	   break;
	   case KEY_DOWN:        /* descendre avec la fleche */
		   ++curs_y;
		   if ( (curs_y % NBRE_LIGNES) == 0 ) {
			   dep = curs_y;
			   PAGE_SUIVANTE = OUI;
			}

	   break;
	   case KEY_ENTER:
			if (!mes_numeros_tires[0][0]) {
			   /* si le tableau est sans numeros */
			   color(155,COUL_ECRAN);
			   gotoxy(2,1);
			   cprintf("VOUS DEVEZ TIRER LES NUMEROS AU PREALABLE");

			   do {
			   } while (!kbhit());
			   menu_principal (COL_MENU ,LIGNE_MENU);

			} else {
			mon_choix_principal = NUMEROS_TROUVES;

			NUMERO_DU_TIRAGE_LOTO = curs_y;
			verifier_concordances (NUMERO_DU_TIRAGE_LOTO);
			}
			if (votre_choix)  return ;
			break;
	   case KEY_ESC:
			/* retourner menu principal */
			menu_principal (COL_MENU ,LIGNE_MENU);
			if (votre_choix)  return ;
			break;

	   default:
	   break;

	   } /* switch() */

   }  /* fin while (votre_choix != KEY_ESC) */
return ;
} /* fin de la fonction entree_clavier_RESULTATS_LOTO */

void afficher_numero_dans_grille(int col,int ligne, int grille_numero) {

	int i1 , i2 , i3, i4,numero1;
	i2 = 0; i4 = 0;

	color (COUL_TEXTE,COUL_BOULES);

	for (i1 = 0; i1 < NUMERO_MAX; ++i1,  i2 = ( !(i1 % 10 ) ) ? i2 += 5 : i2 ) {

		/* calculer la position du numero dans la grille */
		 gotoxy (col + i2 ,1 + ligne + ( (i1 % 10) * 2) );

		if (i1) {    /* N'afficher que les nombres positifs */

			for (i3 = 0; i3 <= NBRE_NUMEROS_TIRES; ++i3) {

			switch(mon_choix_principal) {

			case TIRER:
			case CONSULTER:

			   /* afficher mes 6 numeros tires */
			   if (i3 < NBRE_NUMEROS_TIRES) {
				  numero1 = mes_numeros_tires[grille_numero][i3];
			   } else {
				  numero1 = 0;
			   }

			break;

			case TIRAGES_FD_JEUX:

			   numero1 = RESULTATS_LOTO[grille_numero].BOULES.numero[i3];

		  /* mettre le NUMERO COMPLEMENTAIRE en evidence */
	  if (numero1 == RESULTATS_LOTO[grille_numero].BOULES.numero[6] ) {

		color (COUL_TEXTE,COUL_COMPL);

	  } else {

	   color (COUL_TEXTE,COUL_BOULES);

	  }  /* fin de if en evidence */
			break;

			case NUMEROS_TROUVES:
			   if (i3 < NBRE_NUMEROS_TIRES) {
				  numero1 = trouves[grille_numero][i3];
			   } else {
				  numero1 = 0;
			   }

			break;

			default:
			break;
			} /* fin de switch() */

				 if (i1 == numero1) {
					/* compter le nombre de numero afficher en couleur */
					++i4;
					cprintf("%1c%2d%1c",'\0',numero1,'\0');
				 }

			} /* fin de for (i3) */

			if (i4 == NBRE_NUMEROS_TIRES + 1) return;  /* fin de tache */

		} /* fin  N'afficher que les nombres positifs */

	} /* fin de for (i1) */

	return ;
} 	/* fin de la fonction afficher_numero_dans_grille */

int verifier_concordances(int numero_du_tirage) {

	int trouvees;
	int i0, i1 , i2 , i3, numero1, numero2;

	 /* initialiser a zero */
	for (i1 = 0; i1 < NBRE_GRILLES; ++i1) {
		for (i2 = 0; i2 <= NBRE_NUMEROS_TIRES+1; ++i2) {
		   trouves[i1][i2] = 0;
		}
	 }

for (i0 = 0; i0 < NBRE_GRILLES; ++i0) {  /* grille numero */

	trouvees = 0;
	trouves[i0][7] = NON;    /* complementaire */

	for (i1 = 0; i1 <= NBRE_NUMEROS_TIRES; ++i1) {

		for (i3 = 0; i3 < NBRE_NUMEROS_TIRES; ++i3) {

		   numero1 = mes_numeros_tires[i0][i3];
		   numero2 = RESULTATS_LOTO[numero_du_tirage].BOULES.numero[i1];

		   /* rechercher les concordances */
		   if (numero1 == numero2) {

	/* detecter le numero complementaire */
	if (numero1 == (RESULTATS_LOTO[numero_du_tirage].BOULES.numero[6])) {
		trouves[i0][7] = OUI;
	}

			  trouvees++;
			  trouves[i0][i3] = numero1;

		 } /* fin if (numero1 == numero2) */

		/* nbre numeros gagnants */
		trouves[i0][6] = trouvees;

		} /* fin de for (i3) */

	} /* fin de for (i1) */

}  /* fin de for (i0) */

	 afficher_mes_numeros();

return trouvees;
} /* fin de la fonction verifier_concordances */

void afficher_aide(int col, int ligne) {

	char clavier;

char *menu[] = {
   "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",
   "³ F2 Affiche mes numeros tires dans la grille........................³",
   "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
   "³ F3 Affiche les numeros gagnants en couleur dans le tableau et dans.³",
   "³ la grille, le nombre est inscrit dans la colonne du TABLEAU Trouves³",
   "³ avec un C si le numero Complementaire est present dans mes numeros.³",
   "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
   "³ F4 Affiche le tableau avec les numeros des differents tirages de la³",
   "³ FRANCAISE DES JEUX : RESULTATS OFFICIELS DU LOTO...................³",
   "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
   "³ ................Appuyez sur ESC pour revenir.......................³",
   "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",
   NULL,
};

   afficher_menu(menu, col, ligne,OUI,BLUE);

   do {   /* appuyer sur ESC */
	  clavier = getch();
   } while (clavier != KEY_ESC);

   /* afficher l'ecran precedent en memoire */
	 puttext(1,1,51,24,ecran_precedent);

return ;
} /* fin de la fonction afficher_aide */

void ralentir(void) {
	int i0;
	for (i0 = 0; i0 < VITESSE; ++i0) {
		gotoxy(1,1); cputs("\0");
	}
} /* fin de la fonction ralentir */

void effet_effacer(char *menu[],int col, int ligne) {

	 int i1, i2;
	 color(COUL_ECRAN,COUL_ECRAN);

	 for (i2 = 0; i2 <= strlen(menu[1]) ; ++i2) {

		for (i1 = 0; i1 <= 21; ++i1) {
		   gotoxy((col+strlen(menu[0]))-1 - i2,ligne + i1 );
		   cprintf( "%3c", '\0');
		}
		ralentir();
	 }

return ;
} /* fin de la fonction effet_effacer */

Conclusion :


// PROGRAMME EN C SOUS DOS TURBO C++ BORLAND
// ecrit le 07-06-2002 par cmarsc email
// GRILLES DE LOTO

SI VOUS TROUVEZ DES BOGUES

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.