Palindrome

rhumsek Messages postés 17 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 5 novembre 2011 - 27 févr. 2003 à 23:06
cmarsc Messages postés 455 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 18 décembre 2003 - 4 mars 2003 à 19:48
> /*Ecrire de deux façons différentes, un programme qui vérifie sans utiliser une
> fonction de <string>, si une chaîne CH introduite au clavier est un palindrome:
>
>
> en utilisant des pointeurs au lieu des indices numériques
>
> Rappel: Un palindrome est un mot qui reste le même qu'on le lise de gauche à
> droite ou de droite à gauche:
>
> Exemples:
>
> PIERRE
> ==>
> n'est pas un palindrome
>
>
> OTTO
> ==>
> est un palindrome
>
>
> 23432
> ==>
> est un palindrome */
>
>
> #include<stdio.h>
> #include<conio.h>
> #define M 5
>
> main()
> {
> char stock;
> char CH[M],CH1[M];
> char *PA,*PB;
>
> /*saisie du mot*/
> printf("entrez votre mot, il ne doit pas le dépassé de %2d caractère \n",M);
> scanf("%s",&CH);
>
> /*inversion du mot saisie*/
> CH1=CH;
> for(PA=CH1,PB=CH1+M;PA<CH1+M;PA++,PB--)
> {
> stock=*PA;
> *PA=*PB;
> *PB=stock;
> }
> CH1=CH;
> getch();
> printf("voici votre mot inversé:%s\n",CH1);
>
> /*test d'égalité*/
> if (CH1[M]==CH[M]) printf("%s est un palindrome\n",CH);
> else printf("%s n'est pas un palindrome\n",CH);
> getch();
>
> }
>
> MON PROG NE FONCTIONNE PAS POURQUOI?POUVEZ VOUS LE CORRIGEZ??

2 réponses

rhumsek Messages postés 17 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 5 novembre 2011
27 févr. 2003 à 23:09
-------------------------------
Réponse au message :
-------------------------------

> > /*Ecrire de deux façons différentes, un programme qui vérifie sans utiliser une
> > fonction de <string>, si une chaîne CH introduite au clavier est un palindrome:
> >
> >
> > en utilisant des pointeurs au lieu des indices numériques
> >
> > Rappel: Un palindrome est un mot qui reste le même qu'on le lise de gauche à
> > droite ou de droite à gauche:
> >
> > Exemples:
> >
> > PIERRE
> > ==>
> > n'est pas un palindrome
> >
> >
> > OTTO
> > ==>
> > est un palindrome
> >
> >
> > 23432
> > ==>
> > est un palindrome */
> >
> >
> > #include<stdio.h>
> > #include<conio.h>
> > #define M 5
> >
> > main()
> > {
> > char stock;
> > char CH[M],CH1[M];
> > char *PA,*PB;
> >
> > /*saisie du mot*/
> > printf("entrez votre mot, il ne doit pas le dépassé de %2d caractère \n",M);
> > scanf("%s",&CH);
> >
> > /*inversion du mot saisie*/
> > CH1=CH;
> > for(PA=CH1,PB=CH1+M;PA<CH1+M;PA++,PB--)
> > {
> > stock=*PA;
> > *PA=*PB;
> > *PB=stock;
> > }
> > CH1=CH;
> > getch();
> > printf("voici votre mot inversé:%s\n",CH1);
> >
> > /*test d'égalité*/
> > if (CH1[M]==CH[M]) printf("%s est un palindrome\n",CH);
> > else printf("%s n'est pas un palindrome\n",CH);
> > getch();
> >
> > }
> >
> > MON PROG NE FONCTIONNE PAS POURQUOI?POUVEZ VOUS LE CORRIGEZ??
>
0
cmarsc Messages postés 455 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 18 décembre 2003
4 mars 2003 à 19:48
#include <stdio.h>
#include <conio.h> // <conio.c> devc++4

#define NBRE_LETTRES_MAXI 20
#define KEY_ESC 27

enum reponse {NON, OUI};
int verification(char *le_mot_a_l_endroit, char *le_mot_inverse);

int main(void) {

int i1, reponse;
static int longueur_mot;
char clavier = '\0';

static char le_mot_a_l_endroit[NBRE_LETTRES_MAXI];
static char le_mot_inverse[NBRE_LETTRES_MAXI];


do { /* taper ESC POUR SORTIR */

clrscr();
longueur_mot = 0;
textcolor(WHITE);
gotoxy(1,1);

/*saisie du mot*/
cprintf("entrez votre mot, il ne doit pas le depasse de %2d caractere \n",
NBRE_LETTRES_MAXI);
scanf("%s",&le_mot_a_l_endroit);

/* calculer longueur du mot la sans strlen <string.h> */
for(i1 = 0; *(le_mot_a_l_endroit +i1) != '\0';i1++) {
longueur_mot++;
}


/*inversion du mot saisie*/
for(i1 = 0; *(le_mot_a_l_endroit +i1) != '\0';i1++) {
*(le_mot_inverse + i1) = *(le_mot_a_l_endroit + (longueur_mot-1) - i1);
}

textcolor(LIGHTCYAN);
gotoxy(1,3);

cprintf(" mot a l endroit %s\n mot inverse : %s\n",
le_mot_a_l_endroit,le_mot_inverse);

reponse = verification(le_mot_a_l_endroit, le_mot_inverse);

/*test d'égalité*/
if (reponse == OUI) {
textcolor(LIGHTGREEN);
gotoxy(1,5);

printf("%s est un palindrome\n",le_mot_a_l_endroit);
} else {
textcolor(LIGHTRED);
gotoxy(1,5);
cprintf("%s n'est pas un palindrome\n",le_mot_a_l_endroit);
}

textcolor(YELLOW);
cprintf("\nTaper ESC pour sortir %5c ENTREE pour continuer",'\0');

clavier = getch();
} while (clavier != KEY_ESC);

return 0;
} /* fin de main */

int verification(char *le_mot_a_l_endroit, char *le_mot_inverse) {
int i1, reponse;

for(i1 = 0; *(le_mot_a_l_endroit + i1) != '\0';i1++) {

if ( *(le_mot_inverse + i1) == *(le_mot_a_l_endroit + i1) ) {
reponse = OUI;
} else {
reponse = NON;
}

} /* fin de for (i1...)*/


return reponse;
} /* fin de la fonction verification */
0
Rejoignez-nous