Advertisement
Guest User

Carré magique

a guest
Jan 18th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.51 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <ctype.h>
  5.  
  6.  
  7. void initcarremagique(int n, int magique[][n] ) {
  8.   for(int i=0; i<n; i++){
  9.     for(int j=0; j<n; j++){
  10.       magique[i][j]=0;
  11.     }
  12.        
  13.   }
  14. }
  15.  
  16. void affichercarremagique(int n, int magique[][n]){
  17.   int compteur=0;
  18.   for(int i=0; i<n; i++){
  19.     for(int j=0; j<n; j++){
  20.       printf(" %d", magique[i][j]);
  21.       if (compteur==n-1){
  22.     printf("\n");
  23.     compteur=0;
  24.       }
  25.       else{
  26.     compteur++;
  27.       }
  28.     }
  29.   }
  30.   printf("\n");  
  31. }
  32.  
  33.  
  34.  
  35. void calculercarremagique(int n, int magique[][n]){
  36.   int milieu=(n-1)/2; //je cherche le milieu et je lui affecte 1
  37.   magique[milieu+1][milieu]=1;
  38.   int ligne=milieu+1;
  39.   int colonne=milieu;
  40.   int valeur=2;
  41.   while(valeur<=(n*n)){ //on fait la boucle de 1 à n²
  42.     ligne=(ligne+1)%n;//on fait modulo puisque si ligne+1=n alors ligne=0
  43.     colonne=(colonne+1)%n;
  44.     if(magique[ligne][colonne]==0){
  45.       magique[ligne][colonne]=valeur;
  46.       valeur++;  
  47.     }
  48.     else{
  49.       int l=ligne;
  50.       int k=colonne;
  51.       while (magique[l][k]!=0){
  52.     l=(l+1)%n;
  53.     if(k-1<0){
  54.       k=n-1;
  55.     }
  56.     else{
  57.       k=k-1;
  58.     }
  59.       }
  60.       ligne=l;
  61.       colonne=k;
  62.       magique[ligne][colonne]=valeur;
  63.       valeur++;
  64.     }
  65.   }
  66.  
  67. }
  68.  
  69.  
  70.  
  71.  
  72. int main(void){
  73.   int n;
  74.   scanf("%d", &n);
  75.   int milieu=(n-1)/2;
  76.   int magique[n][n];
  77.   initcarremagique(n, magique);
  78.   calculercarremagique(n, magique);
  79.   affichercarremagique(n, magique);
  80.   printf("%d\n",milieu);
  81.   return EXIT_SUCCESS;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement