Aide palindrome en C
Résolu/Fermé
tonyx01
Messages postés
42
Date d'inscription
samedi 1 décembre 2012
Statut
Membre
Dernière intervention
17 février 2014
-
Modifié par tonyx01 le 4/01/2014 à 15:12
tonyx01 Messages postés 42 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 17 février 2014 - 5 janv. 2014 à 21:36
tonyx01 Messages postés 42 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 17 février 2014 - 5 janv. 2014 à 21:36
A voir également:
- Écrire une fonction palindrome qui teste si une chaîne est un palindrome en c
- Fonction si et - Guide
- Ecrire en gras sur whatsapp - Guide
- Teste performance pc - Guide
- Ecrire en miroir - Guide
- Chaine tnt gratuite sur mobile - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
4 janv. 2014 à 17:04
4 janv. 2014 à 17:04
Bonjour,
Ce n'est pas void main mais int main. Et du coup on met return 0 à la fin.
Sinon l'algorithme me semble bien compliqué. Lusage dune fonction rendrait lalgo plus simple et plus propre. Grosso modo il faudrait que tu rajoutes un "tant que palindrome==1". Pas besoin de palindrome=1; à chaque itération.
Ce n'est pas void main mais int main. Et du coup on met return 0 à la fin.
Sinon l'algorithme me semble bien compliqué. Lusage dune fonction rendrait lalgo plus simple et plus propre. Grosso modo il faudrait que tu rajoutes un "tant que palindrome==1". Pas besoin de palindrome=1; à chaque itération.
tonyx01
Messages postés
42
Date d'inscription
samedi 1 décembre 2012
Statut
Membre
Dernière intervention
17 février 2014
51
5 janv. 2014 à 20:21
5 janv. 2014 à 20:21
D'abord merci de m'aider. Je suis débutant en C cependant je ne vois pas l'utiliser d'un "tant que" mais pourquoi pas essayer un "switch" ? J'aurai aussi besoin d'aide surtout sur cette partie je n'ai pas tout compris ... >> "for (i = 0, j = strlen (mot) - 1; i <= j; ++i, --j)"
Merci !
Merci !
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
5 janv. 2014 à 20:53
5 janv. 2014 à 20:53
Un switch ? Un switch ne remplace pas un While... Ou alors explique ton idée davantage.
Ce que je disais sur ton code, c'est que le break n'est pas très élégant. En plus à chaque itération tu fais Palindrome=1; s'il y a égalité des lettres. Il suffirait de rien faire.
Ce qui donnerait :
Une autre variante sans break :
Cdlt,
Ce que je disais sur ton code, c'est que le break n'est pas très élégant. En plus à chaque itération tu fais Palindrome=1; s'il y a égalité des lettres. Il suffirait de rien faire.
Ce qui donnerait :
for (i = 0, j = strlen (mot) - 1; i <= j; ++i, --j){ // la fonction "strlen" va permettre de connaitre la longeur de la chaine if (mot[i] != mot[j]) { Palindrome = 0; break; } }
Une autre variante sans break :
Et enfin, une fonction serait plus propre. Tu mets par exemple ton code "for" dans une fonction int estPalindrome(const char*const mot); qui te renverra 0 si le mot n'est pas un palindrome sinon 1. Ainsi en lisant le nom de la fonction, on sait directement à quoi ça sert. Et ce bout de code pourra être rappelé ultérieurement.
i<-0
j<-Taille(Mot)-1
Palindrome<-1
TantQue i<j ET palindrome=1 Faire
Si Mot[i]<>Mot[j] Alors
Palindrome<-0
FinSi
i<-i+1
j<j-1
FinTantQue
Cdlt,
tonyx01
Messages postés
42
Date d'inscription
samedi 1 décembre 2012
Statut
Membre
Dernière intervention
17 février 2014
51
5 janv. 2014 à 21:36
5 janv. 2014 à 21:36
Je comprend mieux j'ai donc rectifier avec votre version. C'est vrai que c'est beaucoup plus concis pour le même résultat .
Merci beaucoup !
Merci beaucoup !