Tableau de string et gdb

Résolu/Fermé
mat-ser Messages postés 30 Date d'inscription samedi 16 février 2008 Statut Membre Dernière intervention 12 janvier 2017 - Modifié par baladur13 le 30/09/2016 à 13:58
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 1 oct. 2016 à 09:34
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

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 251
Modifié par baladur13 le 30/09/2016 à 13:59
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 samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 251
30 sept. 2016 à 12:24
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 samedi 16 février 2008 Statut Membre Dernière intervention 12 janvier 2017 2 > nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023
30 sept. 2016 à 13:16
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 samedi 16 février 2008 Statut Membre Dernière intervention 12 janvier 2017 2 > mat-ser Messages postés 30 Date d'inscription samedi 16 février 2008 Statut Membre Dernière intervention 12 janvier 2017
Modifié par baladur13 le 30/09/2016 à 13:59
ç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 samedi 16 février 2008 Statut Membre Dernière intervention 12 janvier 2017 2 > mat-ser Messages postés 30 Date d'inscription samedi 16 février 2008 Statut Membre Dernière intervention 12 janvier 2017
30 sept. 2016 à 19:46
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 samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 251
30 sept. 2016 à 16:11
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 samedi 16 février 2008 Statut Membre Dernière intervention 12 janvier 2017 2
30 sept. 2016 à 21:52
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 samedi 16 février 2008 Statut Membre Dernière intervention 12 janvier 2017 2
Modifié par mat-ser le 30/09/2016 à 22:21
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 samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 251
1 oct. 2016 à 09:34
Ahhh gg^^ pas tours évident de tout checké ^^
Bon de !
0