Mots palindrome dans fichier [Résolu]

Signaler
Messages postés
7
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
13 mars 2011
-
Messages postés
7
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
13 mars 2011
-
SVP jai besoin de laide a trouver une solution a un programme en language C qui permet d'afficher tous les mots palindrome dans fichier

5 réponses

Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
lut !

Tu peux parcourir chaque mot du fichier.
Pour chacun tu le récupère dans un tableau de charactère et en partant des 2 charactères du milieu, tu vas jusqu'au bout et si un couple de charactère ne contient pas deux charactères identiques, alors ce n'est pas un palindrome et tu passes au suivant.

Tu peux aussi réecrirer ton post dans un français correct.
Messages postés
7
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
13 mars 2011

merci pour ton aide voila une solution est que vous pouvez m'aidez a trouver les erreurs ??

#include <stdio.h>
#include <string.h>
File *fp;
char [] s,ch;

Creer(File *fp )
{
char [30] f;
Clrscr() ;
Cprintf("fichier: ");scanf("%s",f);

If( !fp=fopen(f,"r+") )
{ cprintf("probleme d’ouverture!!!"); exit(0);} getch();
}

Palindrome (char []ch)
{
int I,J; /* indices courants */
int p; /* indicateur logique: vrai si CH est un palindrome */

/* Contrôler si CH est un palindrome */
p=1;
for (I=0,J=strlen(ch) ; p && I<J ; I++,J--)
if (CH[I] != CH[J])
p=0;
/* Affichage du résultat */
if (p)
printf("La chaîne \"%s\" est un palindrome.\\n", CH);
else
printf("La chaîne \"%s\" n'est pas un palindrome.\\n", CH);
return 0;
}

Void main()
{
Creer(fp) ;

While (fgets(s,100,fp)
{n=1;
for (i=1;fgetc(s); i++);
{
If (s[i]==” ”)
Ch=strncpy (s,ch,i-n);
n=i;
Palindrome(ch)
}
}
Messages postés
252
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
25 avril 2011

Salut,
Attention, en C, on ne confond pas minuscules et majuscules:
ch n'est pas Ch, ni CH.
En outre, on n'écrit pas «char [] ch» mais «char * ch» ou «char ch[]».

Tu peux écrire un programme plus simple pour tester ta fonction Palindrome. Par exemple:

int
main(int argc, char**argv)
{
  while (--argc)
    Palindrome(argv[argc]);

  return 0;
}


Ou carrément
void main()
{
  Palindrome("bob");
}
mais alors il faut recompiler à chaque test.

Enfin, il y a une petite erreur sur le point de départ de l'indice J: la dernière lettre de la chaîne ch a pour indice strlen(ch)-1.

Bonne prog,
Messages postés
7
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
13 mars 2011

voila ma dernière version elle est maintenant exécutable sauf elle affiche que le dernier mot palindrome c'est a dire j'ai un fichier qui contient 3 ligne
abc
aaa
ete
elle affiche que la chaine ete est palindrome ; jai pas compri pourquoi ?????



#include <stdio.h>
#include <string.h>
#include<conio.h>
#include<stdlib.h>

void Creer(FILE **fp)
{
char f[30];
printf("Fichier:");
scanf("%s",f);
*fp=fopen(f,"r") ;

if (*fp==NULL )
{printf("probleme ouverture!!!");exit(EXIT_FAILURE); }

}

int palindrome (char *s)
{int i,j,l;
l=strlen(s);

for(i=0,j=l-1;i<j;i++,j--)
if(s[i]!=s[j])
return 0;
return 1;

}

int main()
{
FILE *fp=NULL;
char *ch,*s;
int L,p;char c;

Creer(&fp) ;
L=0;

while(fgets(ch,100,fp)!=NULL)
{ L=L+1;
p=palindrome(ch);
/* Affichage du résultat */
if(p==1)
{ printf("La chaine %s est un palindrome ,elle est dans la ligne %d",ch, L);getch();}
else
{ printf("\n");}
}

fclose(fp);
return(0);

}
Messages postés
7
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
13 mars 2011

voila ma dernière version elle est maintenant exécutable sauf elle affiche que le dernier mot palindrome c'est a dire j'ai un fichier qui contient 3 ligne
abc
aaa
ete
elle affiche que la chaine ete est palindrome ; jai pas compri pourquoi ?????



#include <stdio.h>
#include <string.h>
#include<conio.h>
#include<stdlib.h>

void Creer(FILE **fp)
{
char f[30];
printf("Fichier:");
scanf("%s",f);
*fp=fopen(f,"r") ;

if (*fp==NULL )
{printf("probleme ouverture!!!");exit(EXIT_FAILURE); }

}

int palindrome (char *s)
{int i,j,l;
l=strlen(s);

for(i=0,j=l-1;i<j;i++,j--)
if(s[i]!=s[j])
return 0;
return 1;

}

int main()
{
FILE *fp=NULL;
char *ch,*s;
int L,p;char c;

Creer(&fp) ;
L=0;

while(fgets(ch,100,fp)!=NULL)
{ L=L+1;
p=palindrome(ch);
/* Affichage du résultat */
if(p==1)
{ printf("La chaine %s est un palindrome ,elle est dans la ligne %d",ch, L);getch();}
else
{ printf("\n");}
}

fclose(fp);
return(0);

}