J'essaie donc de voir si la valeur de phrase[0] est une voyelle ET si le caractère d'à côté est aussi une voyelle, si c'est le cas, je concatène le caractère dans le tableau (avec strcat), je copie ensuite le v dans le tableau, à la position de la valeur que je viens d'entrer +1, autrement, je ne fait que concaténer le caractère (dans le else).
J'obtiens 3 messages d'erreur :
'strcat' : cannot convert parameter 2 from 'char' to 'const char *'
'strlen' : cannot convert parameter 1 from 'char' to 'const char *'
'strcat' : cannot convert parameter 2 from 'char' to 'const char *'
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 20071 14 oct. 2007 à 10:08
Bonjour,
Désolée mais y'a vraiment tout à refaire là. Tu n'as vraiment pas compris je pense au strcpy et strcat.
OK strcpy ça va copier une chaine dans une autre en s'arrêtant au caractère de fin de chaine, le \0
Et strcat ça va concaténer une chaine dans une autre en s'arrêtant aussi au \0
Ok, pour cet exercice, tu n'as pas à utiliser l'un ou l'autre car tu fais de la copie caractère par caractère
en gros, qu'est-ce que tu dois faire ?
indiceDansChaine1 <-- 0
indiceDansChaine2 <-- 0
tantque chaine1[indiceDansChaine1]!=\0 faire
si estUneVoyelle(chaine1[indiceDansChaine1]) et estUneVoyelle(chaine1[indiceDansChaine1+1]) alors
chaine2[indiceDansChaine2] = chaine1[indiceDansChaine1]
chaine2[indiceDansChaine2+1] <-- 'v'
indiceDansChaine2 <-- indicDansChaine2+2
sinon
chaine2[indiceDansChaine2] <-- chaine1[indiceDansChaine1]
indiceDansChaine2 <-- indiceDansChaine2+1
finsi
indiceDansChaine1 <-- indiceDansChaine1+1
fintantque
chaine2[indiceDansChaine2] <-- '\0'
tu vois ? tu utilises 2 indices différents pour parcourir tes chaines et des copies de caractère et le tour est joué
daviddubois
Messages postés92Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention 6 janvier 2012 14 oct. 2007 à 11:09
Bonjour The Guardian,
Merci pour ton alogortihme.
Le Tant que != \O est ok
Par contre, si je tape comme phrase "marco" par exemple, il n'y a pas de voyelle qui sont contigue mais il dès qu'il rencontre une voyelle, il rentre dans le if et exécute les instructions.
Quand je suis en mode débogage, je met le curseur sur phrase, il m'indique "marco", je met mon curseur sur le indice, il me met 0 (au premier passage de la boucle while) mais je ne sais jamais savoir réellement ce que vaut phrase[indice], y'a-t'il moyen de voir la valeur de phrase[indice]
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 20071 14 oct. 2007 à 15:03
Re,
oui ça devrait marcher ton code :p
y'a deux lignes que tu pourrais changer si tu veux
pour utiliser strcat au lieu de strcpy
tu utilises strcpy sur des chaines d'un seul caractère (ou deux dans le cas du "v", en comptant le '\0')
pourquoi pas
si tu t'assurais que chaine2 est remplie entièrement de \0
tu pourrais aussi utiliser strcat pour ajouter une chaine à la fin de la chaine
exemple:
strcat(chaine2, "v"); va ajouter la lettre 'v' tout à la fin de la chaine2
=