Aide palindrome en C
Résolu
tonyx01
Messages postés
50
Statut
Membre
-
tonyx01 Messages postés 50 Statut Membre -
tonyx01 Messages postés 50 Statut Membre -
Bonjour,
En fait voilà je doit essayer de comprendre pendant ces vacances le cours de mon professeur en C il nous a donné un programme afin de déterminer si en rentrant une chaîne de caractère si c'est ou pas d'un palindrome et j'ai un peu de mal le voilà : (ce sont mes commentaires pour essayer de comprendre) Merci !!!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main (int argc, char *argv)
{
char mot[20]; // definition d'un tableau de 20 caractere
int i, j, Palindrome; // variables i, j, palindrome
Palindrome = 0;
printf ("Veuillez entrer un mot : ");
scanf ("%s", mot);
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 = 1;
else
{
Palindrome = 0;
break;
}
}
if (Palindrome) // si palindrome = 1 alors on peut lire ">> Ce mot est un palindrome;"
printf ("%s >> Ce mot est un palindrome.\n", mot);
else // si palindrome = 0 alors on peut lire ">> Ce mot n'est pas un palindrome."
printf ("%s >> Ce mot n'est pas un palindrome.\n", mot);
system("pause");
}
En fait voilà je doit essayer de comprendre pendant ces vacances le cours de mon professeur en C il nous a donné un programme afin de déterminer si en rentrant une chaîne de caractère si c'est ou pas d'un palindrome et j'ai un peu de mal le voilà : (ce sont mes commentaires pour essayer de comprendre) Merci !!!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main (int argc, char *argv)
{
char mot[20]; // definition d'un tableau de 20 caractere
int i, j, Palindrome; // variables i, j, palindrome
Palindrome = 0;
printf ("Veuillez entrer un mot : ");
scanf ("%s", mot);
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 = 1;
else
{
Palindrome = 0;
break;
}
}
if (Palindrome) // si palindrome = 1 alors on peut lire ">> Ce mot est un palindrome;"
printf ("%s >> Ce mot est un palindrome.\n", mot);
else // si palindrome = 0 alors on peut lire ">> Ce mot n'est pas un palindrome."
printf ("%s >> Ce mot n'est pas un palindrome.\n", mot);
system("pause");
}
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
- Écrire en majuscule - Guide
- Chaine tnt gratuite sur mobile - Guide
2 réponses
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.
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 !
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,