1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
| #include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
// Instructions
printf(" -CECI EST UN PETIT JEU DE REFLEXION.\n");
printf(" -LE BUT ETANT DE METTRE DES 1 PARTOUT DANS LE TABLEAU.\n");
printf(" -'CASE NUMERO' CORRESPOND AU NUMERO DE CASE DANS LE TABLEAU.\n");
printf(" -ON PEUT TAPER DES NUMEROS DE 1 A 25.\n");
printf(" -A CHAQUE FOIS QU'ON TAPE UN NUMERO, LA CASE CORRESPONDANTE ET CELLES\n");
printf(" QUI L'ENTOURENT CHANGENT D'ETAT (PASSENT DE 1 A 0 OU L'INVERSE).\n");
printf(" -CE QUI VEUT DIRE, QUE SI ON TAPE AU DEBUT 13\n");
printf(" LES CASES : 8,12,13,14,18 VONT PASSER DE 0 A 1.\n");
printf(" -ET AINSI DE SUITE.\n");
printf(" -UN COMPTEUR DU NOMBRE DE FRAPPES EST AFFICHE EN TEMPS REEL.\n");
printf(" -A EVITER : TAPER UN NUMERO SUPERIEUR A 25 OU EGAL A 0 !\n");
printf("\n");
printf("\n");
// Déclaration des variables
int M[5][5];
int i, j, k, l, s, n, q, c;
// Initialisation des éléments de la matrice à 0
for (i=1; i<=5; i++){
for (j=1; j<=5; j++){
M[i][j] = 0;
}
}
// Affichage de la matrice initiale
for (i=1; i<=5; i++){
printf(" ");
for (j=1; j<=5; j++){
printf("%d ",M[i][j]);
}
// Affichage de l'aide à droite
printf(" ");
for (q=(((i-1)*5)+1); q<=(((i-1)*5)+5); q++){
if (i<=2){
printf("%d ",q);
}
else{
printf("%d ",q);
}
}
printf("\n");
printf("\n");
}
c = 1;
// Lire le numéro de la case k
Etiquette :
printf("\n");
printf(" CASE NUMERO : ");
scanf("%d",&k);
printf("\n");
printf(" LE NOMBRE DE FRAPPES ATTEINT = %d\n",c);
printf("\n");
c++;
// Attribution des lignes i aux cases selon k
if (k<21){
i = 4;
}
else{
i = 5;
}
if (k<16){
i = 3;
}
if (k<11){
i = 2;
}
if (k<6){
i = 1;
}
// Attribution des colonnes j selon k
j = k%5;
if (j == 0){
j = 5;
}
// Programme principal
for (l=(i-1); l<=(i+1); l++){
if (M[l][j] == 0){
M[l][j] = 1;
}
else{
M[l][j] = 0;
}
}
if (j>1){
if (M[i][j-1] == 0){
M[i][j-1] = 1;
}
else{
M[i][j-1] = 0;
}
}
if (j<5){
if (M[i][j+1] == 0){
M[i][j+1] = 1;
}
else{
M[i][j+1] = 0;
}
}
// Affichage de la matrice après déroulement du programme
for (i=1; i<=5; i++){
printf(" ");
for (j=1; j<=5; j++){
printf("%d ",M[i][j]);
}
// Affichage de l'aide à droite
printf(" ");
for (q=(((i-1)*5)+1); q<=(((i-1)*5)+5); q++){
if (i<=2){
printf("%d ",q);
}
else{
printf("%d ",q);
}
}
printf("\n");
printf("\n");
}
// Calcul de la somme des éléments de la matrice
n = 0;
for (i=1; i<=5; i++){
for (j=1; j<=5; j++){
n = n + M[i][j];
}
}
// Tant que la somme est inférieure à 25 redérouler le programme
if (n<25){
goto Etiquette;
}
// Sinon, c'est bon, le problème est résolu
else{
printf(" BRAVO !!!\n");
}
printf("\n");
system("PAUSE");
return 0;
} |
Partager