Boujour,
J'ai vu en TD le début du code pour construire un carré magique 5*5 (je précise qu'un carré magique est un carré de chiffre dont la somme en ligne, en colonne et en diagonale sont égales). J'ai essayé de compléter le code mais j'ai un problème de définition de la taille du tableau. Au début on définit
tab[][25] car 25 est le nombre d'éléments en ligne et en colonne.
Le problème se situe au niveau de l'appel de la fonction main. Moi je veux un tableau [n][n], ou en l'occurence n vaut 5 puisqu'on ne laisse pas à l'utilisateur le soin de définir la taille du truc.
Comme un long discours ne remplace pas un bon code, voici ce que j'ai complété:
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 #include <iostream.h> #include "ESTablo.cpp" #include "..\Série 4\EntreeSortie.cpp" /**** exercice 6-4: Le Carré Magique *****/ //initialisation à 0 void init(int tab[][25], int taille) { for (int i = 0;i<taille;i++) { for (int j=0;j<taille;j++) //cout << tab[i][j]=0; } tab[i][j]=0; } } //affichage du tableau void afficheTab(int tab[][25], int taille) { for (int i = 0;i<taille;i++) { for (int j=0;j<taille;j++) cout << "\t" << tab[i][j] << " "; cout << "\n"; }; } void CarreMagique(int magique[][25], int taille) { int compteur = 1; int i,j; i= (taille/2) +1; j= (taille/2); magique[i][j] = compteur; compteur++; do { i++;j++; if (i>=taille) i=0; if (j>+ taille) j=0; while (magique[i][j] !=0); { i++;j--; if (i>= taille) i =0; if (j== -1) j =taille -1; } magique[i][j] = compteur; compteur++; afficheTab(magique,taille); system("pause"); } while (compteur <= taille*taille); } int main () { int tablo[4][4]; init(tablo,25); CarreMagique(tablo,25); // for(int i=0;i<25;i++) // { for(int j=0;j<25;j++) cout << CarreMagique(tablo,25); } system("PAUSE"); return 0; }
Les biduls au début :
#include "ESTablo.cpp"
#include "..\Série 4\EntreeSortie.cpp"
Ce sont des fichiers ou j'ai stocké des petites fonctions pour lire les tableaux.
L'erreur que j'obtiens c'est:
52 E:\langage C\Série 6\Exercice6-4_Carre_Magique.cpp cannot convert `int (*)[4]' to `int (*)[25]' for argument `1' to `void CarreMagique(int (*)[25], int)'
Si quelqu'un a une idée ce serait génial! Merci d'avance.
Partager