1 pièce(s) jointe(s)
Tableau à deux dimensions trop complexe
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:
Code:
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<<" ";
}
} |
J'ai utilsé la ligne 7 pour affecter le nombre 0 à l'intersection de la ligne 2 et de la colonne 2.
À 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.