Exercice d'algo: verif d'un palindrome en C
Guits21
-
Doctor C Messages postés 648 Statut Membre -
Doctor C Messages postés 648 Statut Membre -
Bonjour,
je cherche à créer un sous-programme permettant de vérifier si une chaîne de caractère est un palindrome. Le but étant de créer ensuite un code dans le programme principal afin d'afficher le resultat pour l'utilisateur.
J'ai déjà réalisé un programme qui fonctionne correctement, cependant je rencontre quelques difficultés pour l'écrire comme une fonction afin de l'appeler par la suite dans mon programme principal.
Aussi, pourriez-vous m'indiquez dans la mesure du possible, quelques pistes afin que je puisse y remédier SVP? Je vous remercie par avance.
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
// Sous-programme verifiant si une chaine de caractere est un palindrome
int Palindrome (char mot,int ok)
{
// Variables
ok = 1;
int n;
n = strlen(mot);
int numero_lettre;
for (numero_lettre=0; numero_lettre < n/2; numero_lettre++)
{
if (mot[numero_lettre]!= mot[n - numero_lettre -1])
{
ok = 0;
}
else
{
ok = 1;
}
}
// Programme principal
int main()
{
// Variables
char mot[256];
int ok;
ok = 1;
// Verification de la longueur d'une chaine de caractere (=<256) => preconditions
do
{
printf("entrer le mot a verifier SVP : ");
scanf("%s",&mot);
}
while ((strlen(mot)>0) || (strlen(mot)<257));
// Appel du sous-programme
Palindrome (mot,ok);
// Affiche le resultat => postconditions
if(ok == 1)
{
printf("Felicitation, la chaine %s est palindrome",mot);
}
else
{
printf("Desole, la chaine %s n'est pas palindrome",mot);
}
system("pause");
return(0);
}
je cherche à créer un sous-programme permettant de vérifier si une chaîne de caractère est un palindrome. Le but étant de créer ensuite un code dans le programme principal afin d'afficher le resultat pour l'utilisateur.
J'ai déjà réalisé un programme qui fonctionne correctement, cependant je rencontre quelques difficultés pour l'écrire comme une fonction afin de l'appeler par la suite dans mon programme principal.
Aussi, pourriez-vous m'indiquez dans la mesure du possible, quelques pistes afin que je puisse y remédier SVP? Je vous remercie par avance.
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
// Sous-programme verifiant si une chaine de caractere est un palindrome
int Palindrome (char mot,int ok)
{
// Variables
ok = 1;
int n;
n = strlen(mot);
int numero_lettre;
for (numero_lettre=0; numero_lettre < n/2; numero_lettre++)
{
if (mot[numero_lettre]!= mot[n - numero_lettre -1])
{
ok = 0;
}
else
{
ok = 1;
}
}
// Programme principal
int main()
{
// Variables
char mot[256];
int ok;
ok = 1;
// Verification de la longueur d'une chaine de caractere (=<256) => preconditions
do
{
printf("entrer le mot a verifier SVP : ");
scanf("%s",&mot);
}
while ((strlen(mot)>0) || (strlen(mot)<257));
// Appel du sous-programme
Palindrome (mot,ok);
// Affiche le resultat => postconditions
if(ok == 1)
{
printf("Felicitation, la chaine %s est palindrome",mot);
}
else
{
printf("Desole, la chaine %s n'est pas palindrome",mot);
}
system("pause");
return(0);
}
1 réponse
Concernant ta fonction de vérification de palindrome:
- Tu ne sembles pas retourner de valeur (pas de return à la fin de ta fonction).
- Pour ce qui est de ton algo, mon C est un peu rouillé alors je te suggère ce pseudo-code:
Je sais pas si c'est clair mais bon c'est une piste. Je suis pressé alors je dois terminer mon message abruptement.
Si tu as d'autres questions n'hésites pas!
Bonne chance!
- Tu ne sembles pas retourner de valeur (pas de return à la fin de ta fonction).
- Pour ce qui est de ton algo, mon C est un peu rouillé alors je te suggère ce pseudo-code:
numero_lettre= 0;
ok = 1;
while (numero_lettre <= n/2 ET ok == 1)
{
if (mot[numero_lettre]!= mot[n - numero_lettre -1])
{
ok = 0;
break; // sort de la boucle while
}
}
Je sais pas si c'est clair mais bon c'est une piste. Je suis pressé alors je dois terminer mon message abruptement.
Si tu as d'autres questions n'hésites pas!
Bonne chance!