/*Ce programme fait le carre magique qui peut etre étendu au !!!SUDOKU!!!*/ /*Notons que seuls les entiers impairs marchent pour ce code*/ #include #include #define N 5 /*Valeur de la taille d'un cote du carre*/ int main() { int numcol, numlig, sommelig, nb, carre[N][N]; /*Initialisation du tableau*/ for(numlig=0; numlig < N; numlig++) { for(numcol=0; numcol < N; numcol++) {carre[numlig][numcol] = 0;} } /*Operations dans le carre*/ numlig = N/2 - 1; numcol = N/2; nb = 0; while(nb <= N*N) { carre[numlig][numcol] = nb; nb = nb + 1; numlig = numlig - 1; numcol = numcol +1; if(numlig < 0) numlig = N-1; if(numcol >= N) numcol = 0; while((carre[numlig][numcol] != 0)&&(nb <= N*N)) { numcol = numcol - 1; numlig = numlig - 1; if(numlig < 0) numlig = N-1; if(numcol < 0) numcol = N-1; } } /*Affichage des elements du carre*/ printf("------------Voici un carre magique----------\n"); for(numlig=0; numlig < N; numlig++) { for(numcol=0; numcol < N; numcol++) {printf(" %2d ",carre[numlig][numcol]);} printf("\n"); } /*Affichage de la somme de chaque ligne du tableau*/ printf("\n"); for(numlig=0; numlig < N; numlig++) { sommelig =0; for(numcol=0; numcol < N; numcol++) { sommelig = sommelig + carre[numlig][numcol]; } printf("la somme des lignes est %d \n", sommelig); } return 0; }