Tableau de string et gdb

Résolu
mat-ser Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   -  
nagaD.scar Messages postés 4272 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

voci le tableau:
string tableAdd[][11]={
 {"0","1","2","3","4","5","6","7","8","9","10"},
 {"1","2","3","4","5","6","7","8","9","10","11"},
 {"2","3","4","5","6","7","8","9","10","11","12"},
 {"3","4","5","6","7","8","9","10","11","12","13"},
 {"4","5","6","7","8","9","10","11","12","13","14"},
 {"5","6","7","8","9","10","11","12","13","14","15"},
 {"6","7","8","9","10","11","12","13","14","15","16"},
 {"7","8","9","10","11","12","13","14","15","16","17"},
 {"8","9","10","11","12","13","14","15","16","17","18"},
 {"9","10","11","12","13","14","15","16","17","18","19"},
 {"10","11","12","13","14","15","16","17","18","19","20"}
};


et voici ce que me dit gdb:
a=tableAdd[n1[rang-1]-'0'][n2[rang-1]-'0'];
(gdb) display a
20: a = "10"

on a string n1="36",n2="00". Pour rang=2, on devrais avoir a="6" au lieu de "10"
quelqu'un a une idée?

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

2 réponses

nagaD.scar Messages postés 4272 Date d'inscription   Statut Membre Dernière intervention   252
 
Hello,

(je sais si t avais vu mais j avais mal lu avant, bref)

j'ai donc testé:
    string tableAdd[][11]={
        {"0","1","2","3","4","5","6","7","8","9","10"},
        {"1","2","3","4","5","6","7","8","9","10","11"},
        {"2","3","4","5","6","7","8","9","10","11","12"},
        {"3","4","5","6","7","8","9","10","11","12","13"},
        {"4","5","6","7","8","9","10","11","12","13","14"},
        {"5","6","7","8","9","10","11","12","13","14","15"},
        {"6","7","8","9","10","11","12","13","14","15","16"},
        {"7","8","9","10","11","12","13","14","15","16","17"},
        {"8","9","10","11","12","13","14","15","16","17","18"},
        {"9","10","11","12","13","14","15","16","17","18","19"},
        {"10","11","12","13","14","15","16","17","18","19","20"}
    };
    string n1="36";
    string n2="00";
    int rang=2;
    string a=tableAdd[n1[rang-1]-'0'][n2[rang-1]-'0'];
    cout << a << endl;


pour obtenir "6" comme résultat. Donc pas de soucis.

Du coup il faudrai un peu plus de code pour trouver l erreur.

Naga
0
nagaD.scar Messages postés 4272 Date d'inscription   Statut Membre Dernière intervention   252
 
Ah et question c*n: pourquoi avoir une ligne d indice 10 alors que tu ne la lira jamais ? (sauf si n1[0] ou n1[1] = ':' mais bon)
0
mat-ser Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   2 > nagaD.scar Messages postés 4272 Date d'inscription   Statut Membre Dernière intervention  
 
8x5=40 je pose 0 et je retiens 4
8x2=16. avec 4 de retenue ça fait 20 on pose 0 et on retient 2.
c'est pour ça que j'ai cru bon d'ajouter une ligne, à cause du 20.

pour a="10": serai-ce un bug de gdb?
0
mat-ser Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   2 > mat-ser Messages postés 30 Date d'inscription   Statut Membre Dernière intervention  
 
ça doit être un bug de gdb, ou des paramètres que j'utilise mal (j'utilise gdb depuis peu)
display tableAdd
11: tableAdd = {{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, {"10", 
    "1", "2", "3", "4", "5", "6", "7", "8", "9"}, {"10", "11", "2", "3", "4", 
    "5", "6", "7", "8", "9"}, {"10", "11", "12", "3", "4", "5", "6", "7", "8", 
    "9"}, {"10", "11", "12", "13", "4", "5", "6", "7", "8", "9"}, {"10", "11", 
    "12", "13", "14", "5", "6", "7", "8", "9"}, {"10", "11", "12", "13", "14", 
    "15", "6", "7", "8", "9"}, {"10", "11", "12", "13", "14", "15", "16", "7", 
    "8", "9"}, {"10", "11", "12", "13", "14", "15", "16", "17", "8", "9"}, {
    "10", "11", "12", "13", "14", "15", "16", "17", "18", "9"}}
0
mat-ser Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   2 > mat-ser Messages postés 30 Date d'inscription   Statut Membre Dernière intervention  
 
selon gdb, les lignes tableAdd commence par "10" au lieu de compter 11 par ligne.
si quelqu'un a une idée...
0
nagaD.scar Messages postés 4272 Date d'inscription   Statut Membre Dernière intervention   252
 
Là je ne pourrai pas vraiment t aider, je ne suis pas familier de gdb.
Par contre le problème ne vient pas de ton code (en tout cas pas dans le contenu posté).

Si j ai l occasion je regarderai mais je ne pourrai probablement avant lundi .. Mais il y a surement d'autres ici qui pourront mieux t aider que moi. Bon dev en tout cas. (j ai seulement vérifier quelques exception pour essayer d obtenir le "10" mais rien de probant)
0
mat-ser Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   2
 
euréka!

le tableau est dans un fichier (cpp car on ne peut pas mettre des données dans les hpp), correctemment posé en 11x11.
MAIS, dans le fichier qui utilise cette table il était déclaré:
extern tableAdd[10][10]

En remplaçant 10 par 11:
extern tableAdd[11][11]

Et là, ça marche
0
mat-ser Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   2
 
sinon, il est vrai que la 11e ligne est inutile (999999x9 fonctionne même sans la 11e ligne, ainsi que 25x8 dans l'exemple ci-dessus)
0
nagaD.scar Messages postés 4272 Date d'inscription   Statut Membre Dernière intervention   252
 
Ahhh gg^^ pas tours évident de tout checké ^^
Bon de !
0