Réponse acceptée !
Tu as passé la première étape, qui est de coder correctement le problème. Ca fonctionne, et sans se planter.
BruNews te montre comment coder efficacement en utilisant le minimum de ressources machines, avec des pointeurs.
Pour commencer, utiliser un tableaux en le parcourant d'un bout à l'autre dans un seul sens se fait très simplement :
Code C/C++ :
char *p = chaine;
while ( *p ) {
...
p++;
}
alors qu'à chaque fois que tu utilise chaine[i], le compilateur :
- prends l'adresse de chaine
- ajoute i fois la taille d'un élément (ici, c'est le caractère, taille 1 a priori)
- retourne le caractère se trouvant à l'adresse trouvée.
Ok ?
Ensuite, il sait que la chaine ne peut que réduire. Tu fais une boucle à chaque suppression de caractère, BruNews se contente d'utiliser un second pointeur qui ne s'incrémente que lorsque le caractère est bon, en le copiant au passage.
Là, je vais taquiner un peu :
- l'affectation de prev bouffe de la cpu pour rien.
- ça ne fonctionne pas en EBCDIC