Salut à tous!
Je suis confronté à un problème sétrieux avec un tableau à deux dimensions bien complexes. Le but de ce tableau en fait est de l'utiliser pour calculer une sétie de nombres.Considérons le tableau en pièce-jointe:
Jetons un coup d'oeil rapide sur le tableau.
- La premiére ligne n'est remplie qu'à partir de la colonne 3.
- La première colonne n'est remplie qu'à partir de la ligne 3.
- Le tableau comporte un nombre clé (0), inscrit à l'insection de la ligne 2 et de la colonne 2.
- Le tableau a été initialisé à la ligne 2 et à la colonne 2.
Ainsi présenté, le but du code est d'obtenir dans les autres cellules un nombre correspondant à la somme de la cellule en haut à gauche plus 2 (dans le sens horizontal OU vertical)
Je vous présente mon code:
J'ai utilsé la ligne 7 pour affecter le nombre 0 à l'intersection de la ligne 2 et de la colonne 2.
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 QString str1, str2; str1 = "ABCDEF"; str2 = "ß§$%?"; double diagScore; // Initialisation du tableau tableau[1][str2.size()] = 0; for(int i = 1; i<str1.size()+1; i++) { tableau[i][0] = tableau[i-1][0] + 1; out<<tableau[i][0]<<" "; } out<<endl; for(int j = 1; j<str2.size()+1; j++) { tableau[j][0] = tableau[j-1][0] + 1; } out<<endl; double tableau[str1.size()+2][str2.size()+2]; // Le remplissage du tableau for(int i = 1; i<str1.size()+1; i++) { for(int j = 1; j<str2.size()+1; j++) { if(i == 1 && j == 1) { tableau[i-1][j-1] = 0; diagScore = 0 + 1; } if(i > 1 && j > 1) { diagScore = tableau[i-1][j-1] + 2; } out<<diagScore<<" "; } }
À la ligne 22, j'ai fixé la taille du tableau + 2, puisque les calculs commencent à partir de la ligne et colonne 3 du tableau. Donc les deux premières colonnes et les deux premières lignes ne sont pas prises en compte dans les calculs.
La compilation de ce code me donne des nombres du genre: 3.49633e-297 3.49633e-297 0 0 0, ce qui n'est pas normal. Par exemple, la ligne ß devrait avoir les nombres suivants: 1, 2, 3, 4, 5, 6.
Pouvez-vous tester et m'aider à détecter l'erreur?
Je vous serai reconnaissant si vous m'aidiez à résoudre cette énigme.
Merci d'avance.
Partager