Bonjoursoir à tous

j'ai un petit probleme qui semble tout bete mais j'arrive à mettre la main dessus etant donné que je suis debutant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
#include <stdio.h>
#define DIM 3 ; 
#define DIMMAX 11 ; 
 
int n,rangee,colonne; 
int carre[3][3] ; 
int magique ;
 
void lecturecarre ()
{
   int i,j ;
 
   for (i=0 ; i<=2 ; ++i)
      for (j=0 ; j<=2 ; ++j)
         scanf("%d",&carre[i][j]) ;
}
 
void Testercarre ()
{
   int s1,s2,i,j ;
 
   magique=1;
   s1 = s2 = 0;
 
   for (i=0 ; i<=2 ; ++i)
      s1 = s1 + carre[i][i];
 
   printf("S1=%d\n",s1);
   for (i=0 ; i<=2 ; ++i)
      s2 = s2 + carre[i][2-i];
   printf("S2=%d\n",s2);
   if (s2 == s1)
      magique=1; 
   else 
      magique=0;
   printf("magique=%d\n",magique);
 
   i=0;
   while (magique=1 && i<=2)
   { 
      s2=0;
      for (j=0 ; j<=2 ; ++j)
         s2=s2 + carre[i][j];
      printf("S22=%d\n",s2);
      if (s2 == s1)
         magique=1;
      else 
         magique=0;
      ++i ;
      printf("magique=%d\n",magique); 
   }
 
   j=0;
   while (magique=1 && j<=2)
   {
      s2=0;
      for (i=0 ; i<=2 ; ++i)
         s2=s2 + carre[i][j];
      printf("S23=%d\n",s2);
      if (s2 == s1)
         magique=1;
      else  
         magique=0;
      ++j ;
      printf("magique=%d\n",magique);
   }
   printf("magique=%d\n",magique);/*quand on teste le programme ce magique là vaut 0 tandis que celui juste avant vaut 1*/
 
   if (magique==1)
      printf("le carre est  magique\n");
   else
      printf("le carre est pas magique\n");
}
 
main()
{
   lecturecarre();
   Testercarre ();
}
Quand on teste le programme , la valeur magique vaut 1 dans les boucles while , mais des qu'on en sort elle vaut 0 .

Où serait le probleme selon vous ?