#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <time.h>
int n,m,i,j,k,na,ma,ibug,jbug;
int **count;
int r,ok;
int imove[8] = {-1,0,1,1,1,0,-1,-1};
int jmove[8] = {1,1,1,0,-1,-1,-1,0};
main()
{
// Nombre de lignes et colonnes rentré par l'utilisateur
printf("Rentrez les valeurs de n (entre 2 et 40) puis m (entre 2 et 20)\n");
scanf("%d%d",&n,&m);
//Si les valeurs ne sont pas comprises dans l'intervalle l'utilisateur les resaisies jusqu'à ce qu'elles soient correctes
while(n>40 || n<2 || m>20 || m<2)
{
printf("Erreur de saisie !!!\nRentrez une nouvelle valeur pour n puis pour n\n");
scanf("%d%d",&n,&m);
}
//Réallocation du tableau juste sur une dimension en fonction de la valeur de n
count = malloc(n*sizeof(int));
for (i=0;i<n;i++)
{
//Réallocation du tableau sur la 2ème dimension en fonction de la valeur de m
count[i] = malloc(m*sizeof(int));
for (j=0;j<m;j++)
{
//Mise à 0 de tableau affichant le nombre de passages
count[i][j]=0;
}
}
// Ici va etre géré les conditions pour n=m=15, n=m=1 et si n et m ont une valeur quelconque
if (n == 15 && m == 15)
{
ibug = 10;
jbug = 10;
}
else
{
if (n == 39 && m == 19)
{
ibug = 1;
jbug = 1;
}
else
{
ibug = n/2;
jbug = m/2;
}
}
printf("bug = %d",ibug);
ok = 0;
r=0;
while((imove[r]+ibug<0) || (jmove[r]+jbug<0) || (imove[r]+ibug>=n) || (jmove[r]+jbug>=m))
{
srand(time(NULL));
r = (rand() % 8);
printf("rand = %d",r);
}
ibug = ibug + imove[r];
jbug = jbug + jmove[r];
count[ibug][jbug] = count[ibug][jbug] + 1;
//printf("%d",count[ibug][jbug]);
//Test sur toutes les valeurs du tableau count si 3 passages
for (i=0;i<8;i++)
{
for (j=0;j<8;j++)
{
if (count[i][j] == 3)
{
ok = ok+1;
}
}
}
//printf("\n%d\n",ok);
if (ok == (n*m))
{
printf("La blatte est passé trois fois sur chacune des cases");
}
else printf("La blate n'a pas fait tous les carreaux trois fois");
getch();
}
Partager