For(size_t i=s.size(); i>=0) ne s'arrête pas
Résolu
farcry165
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
jisisv Messages postés 3645 Date d'inscription Statut Modérateur Dernière intervention -
jisisv Messages postés 3645 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, j'ai un problème dans cette partie de programme qui doit normalement faire une liste de l'emplacement des parenthèses (je l'ai volontairement allégé pour ne laisser que la partie qui bug) bug car ou j'utilise la comparaison i>0 et elle ne prend pas en compte le premier caractère de la chaine s_calcule[0] ou alors j'utilise la comparaison i>=0 et la fonction tourne en boucle ce qui a pour conséquence de planter le programme.
Merci d'avance pour votre aide.
#include <iostream> #include <string> using namespace std; int main () { string s_calcule("(2+2)+2*22-(22²)+2/89"); size_t debut=0; for(size_t i=s_calcule.size(); i>0; i--) { if(s_calcule.c_str()[i]=='(') { cout<<"parenthèse est a i="<<debut<<endl; debut=i; } } system("PAUSE"); return 0; }
Merci d'avance pour votre aide.
A voir également:
- For(size_t i=s.size(); i>=0) ne s'arrête pas
- Downloader for pc - Télécharger - Téléchargement & Transfert
- O ou i pour allumer - Forum Facebook
- Ou i ou a a ✓ - Forum Musique / Radio / Clip
- I-info - Télécharger - Médias et Actualité
- I tun - Télécharger - Lecture & Playlists
3 réponses
Bonjour,
for(size_t i=s_calcule.size(); i>0; i--)
Trois erreurs :
1/ Mets plutôt int ou unsigned int ou des shorts mais pas de size_t qu'on réserve plutôt pour une taille pas pour une variable. Sinon, Tu vas avoir un gros problème pour i=0.
2/ La dernière position est : s_calcule.size()-1
3/ La première est i=0; Donc i>=0;
for(size_t i=s_calcule.size(); i>0; i--)
Trois erreurs :
1/ Mets plutôt int ou unsigned int ou des shorts mais pas de size_t qu'on réserve plutôt pour une taille pas pour une variable. Sinon, Tu vas avoir un gros problème pour i=0.
2/ La dernière position est : s_calcule.size()-1
3/ La première est i=0; Donc i>=0;
Et remplace size_t i=s_calcule.size(); par une comparaison avec une variable initialisée à la longueur de ta chaîne.
Autrement dit, calcule une fois pour toute la longueur de ta chaîne , qui n'est pas sensée varier dans le contexte de ton programme, dans une variable
Il faudrait évidemment examiner comment le préprocesseur de ton environnement traduit ces appels (fonction, macro..)
Autrement dit, calcule une fois pour toute la longueur de ta chaîne , qui n'est pas sensée varier dans le contexte de ton programme, dans une variable
Il faudrait évidemment examiner comment le préprocesseur de ton environnement traduit ces appels (fonction, macro..)