Tableau de string et gdb [Résolu/Fermé]

Signaler
Messages postés
30
Date d'inscription
samedi 16 février 2008
Statut
Membre
Dernière intervention
12 janvier 2017
-
Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
-
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.

2 réponses

Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
190
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
Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
190
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)
Messages postés
30
Date d'inscription
samedi 16 février 2008
Statut
Membre
Dernière intervention
12 janvier 2017
2 >
Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018

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?
Messages postés
30
Date d'inscription
samedi 16 février 2008
Statut
Membre
Dernière intervention
12 janvier 2017
2 >
Messages postés
30
Date d'inscription
samedi 16 février 2008
Statut
Membre
Dernière intervention
12 janvier 2017

ç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"}}
Messages postés
30
Date d'inscription
samedi 16 février 2008
Statut
Membre
Dernière intervention
12 janvier 2017
2 >
Messages postés
30
Date d'inscription
samedi 16 février 2008
Statut
Membre
Dernière intervention
12 janvier 2017

selon gdb, les lignes tableAdd commence par "10" au lieu de compter 11 par ligne.
si quelqu'un a une idée...
Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
190
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)
Messages postés
30
Date d'inscription
samedi 16 février 2008
Statut
Membre
Dernière intervention
12 janvier 2017
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
Messages postés
30
Date d'inscription
samedi 16 février 2008
Statut
Membre
Dernière intervention
12 janvier 2017
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)
Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
190
Ahhh gg^^ pas tours évident de tout checké ^^
Bon de !