Bonjour,
pour un tp ( en licence math info) je devais faire un carré magique. Mais le problème c'est que je n'arrive pas à faire marcher la fonction qui permet de vérifier si c'est bien un carré magique.
Voici mon code que pour la création du carré magique de taille n*n(avec n=5):
Par contre je n'arrive pas à faire fonctionner la fonction suivante qui permet de vérifier si c'est bien un carré magique.:
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
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 program carremagique; uses crt; const n=5; var cell:array[1..n,1..n] of integer; i,j,sum:integer; procedure car; var i,j,count,ancj,anci:integer; begin begin begin for i:=1 to n do begin for j:=1 to n do cell[i,j]:=0; end; end; j:=(n div 2) +1; i:=1; count:=0; repeat inc(count); cell[i,j]:=count; ancj:=j; dec (j); if (j<1) then j:=n; anci:=i; dec (i); if (i<1) then i:=n; if cell[i,j]<>0 then begin i:=anci+1; if i>n then i:=1; j:=ancj; end; until count=n*n; end; end; begin car; for i:=1 to n do begin for j:=1 to n do write(cell[i,j]:5); writeln; end; readln; end.
Pouvez vous me dire ce qui marche pas dans cette fonction.
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 function verif ( var flag:boolean):boolean; var flag,i,j,sum,sum1,n:integer; begin n:=5; flag:=true; sum1:= (n*(n*n + 1)) div 2; for i:=1 to n do sum:=0; for j:=1 to n do begin sum:=sum+cell[i,j]; if (sum<> sum1) then flag:=false end; for j:=1 to n do sum:=0; for i:=1 to n do begin sum:=sum+cell[i,j]; if (sum<> sum1) then flag:=false end; if flag=false then writeln('Ce n''est pas un carré magique.') else writeln('C''est un carré magique'); readln; end;
Merci d'avance
Partager