Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++ > Débuter
Débuter Forum d'entraide pour débuter en langage de programmation C++. Avant de poster : cours d'initiation au C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/12/2012, 16h04   #1
senvedgi
 
Homme
retraité
Inscription : septembre 2006
Messages : 182
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 72

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : septembre 2006
Messages : 182
Points : -10
Points : -10
Par défaut tableau attention indices

bonjour,
Dans une boucle sans fin (que je maitrise en sortant par un zéro pour rassurer les lecteurs et censeurs)
une ligne tableauX[i] ne veux pas admettre une chaine abc!
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
    int i=0,yy=5;int y=0;
    string autrIncr="";
    string tableauX[yy];
    do
        {
        cout<<"<0> ou <E> pour transfert num."<<i<<" ";
        getline(cin, autrIncr);
            if  (autrIncr == "")
                {
                rlfQuat="P7BDBIJO.rtf";//n.b.ici cette variable...change à chaque tour,je n'ai rien écrit pour ne pas alourdir
                cout<<rlfQuat<<endl;
                string az=rlfQuat;
                tableauX[y]=az;
                y++;
                cout<<i<<"sz :"<<tableauX[y].size()<<"[*"<<tableauX[y]<<endl;
                }
            if  (autrIncr !="")
                {i=0;}
        }
    while (i>0);
cout<<"tableauX[y] est vide!"<<endl;
Dans toutes les fonctions que j'ai créé avec succès cette écriture existe 1000 fois!!!Quelles donc les conditions j'ai oublié?
Vous allez trouver évidemment.
Cordialement.
p.s.:je vous ai simplifié le code sauf err d'écriture car non vérifié in situ
senvedgi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2012, 16h10   #2
leternel
Expert Confirmé
 
Homme Pierre
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 1 354
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 1 354
Points : 2 860
Points : 2 860
Bonjour l'ami,

Quels sont exactement tableauX, son [] et i?
__________________
Mes principes de bases du codeur qui veut pouvoir dormir:
  • Une variable de moins est une source d'erreur en moins.
  • Un pointeur de moins est une montagne d'erreurs en moins.
  • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
  • La plus sotte des questions est celle qu'on ne pose pas.
Pour faire des graphes, essayez yEd.
leternel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 09h38   #3
senvedgi
 
Homme
retraité
Inscription : septembre 2006
Messages : 182
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 72

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : septembre 2006
Messages : 182
Points : -10
Points : -10
j'ai refais mon code au lieu d'ajouter des lignes de texte
senvedgi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 10h01   #4
leternel
Expert Confirmé
 
Homme Pierre
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 1 354
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 1 354
Points : 2 860
Points : 2 860
Et c'est censé faire quoi?

Quelle est ce festival de variable mal nommées (rlfQuat= regular line format Quaternion? az= zorglub array?)

Le code n'est même pas directement reformulable en phrases

"répéter ... tant que i est positif.": qu'est i? pourquoi positif plutot que non nul?
Code :
1
2
3
4
                rlfQuat="P7BDBIJO.rtf";
                cout<<rlfQuat<<endl;
                string az=rlfQuat;
                tableauX[y]=az;
tableauX[y] est un string, pourquoi passer par une string intermédiaire? pour copier une fois de plus?
rlfQuat est une string ou possède déjà un constructeur et une conversion depuis string.
Ceci serait mieux:
Code :
1
2
3
                rlfQuat="P7BDBIJO.rtf";
                cout<<rlfQuat<<endl;
                tableauX[y]=rlfQuat;
Tu n'as pas testé le résultat de getline(). Normalement, le code devrait être:
Code :
1
2
3
if(getline(istream, mystring)) {
    traiter mystring
}
__________________
Mes principes de bases du codeur qui veut pouvoir dormir:
  • Une variable de moins est une source d'erreur en moins.
  • Un pointeur de moins est une montagne d'erreurs en moins.
  • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
  • La plus sotte des questions est celle qu'on ne pose pas.
Pour faire des graphes, essayez yEd.
leternel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 10h26   #5
senvedgi
 
Homme
retraité
Inscription : septembre 2006
Messages : 182
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 72

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : septembre 2006
Messages : 182
Points : -10
Points : -10
j'ai trouvé.
L'incrémentation de la boucle avec i servait d'indice au tableau:erreur!
La sortie par zéro ne plaisait alors pas.
J'ai ajouté un compteur y++; affecté maintenant au tableau en plus de i++;
toujours affecté à la boucle en maintenant tout va bien.
La string intermédiaire est restée par erreur quand je cherchais à tester rlfQuat pour détecter l'origine du problème(ce n'était pas l'objet de mon post...
ligne 11 il faut écrire au minimum string r.(ce n'était pas l'objet de mon post..).
Bien se rappeler que les codes fournis sont des morceaux pas exactement fonctionnels,ce n'était l'objet de mon post... Je ne soumets jamais mon code, car c'est à moi de le faire fonctionner.
J'ai construit/trouvé/adapté une boucle sans fin qui sort avec un zéro. Elle suffit à mon bonheur pour l'instant. Il faut avancer.
-----------------
Code :
1
2
 
Tbl[indice]=string machin;
fonctionne bien.C'est la mauvaise gestion des indices qui était la cause du plantage.
-----------------
Je note la gestion de if(getline.. pour plustard.
Cordialement.
senvedgi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h19.


 
 
 
 
Partenaires

Hébergement Web