Mots palindrome dans fichier

Résolu
noussadk84 Messages postés 7 Date d'inscription dimanche 29 octobre 2006 Statut Membre Dernière intervention 13 mars 2011 - 8 avril 2010 à 20:48
noussadk84 Messages postés 7 Date d'inscription dimanche 29 octobre 2006 Statut Membre Dernière intervention 13 mars 2011 - 12 avril 2010 à 16:09
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

deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
9 avril 2010 à 11:13
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.
2
noussadk84 Messages postés 7 Date d'inscription dimanche 29 octobre 2006 Statut Membre Dernière intervention 13 mars 2011
9 avril 2010 à 14:29
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)
}
}
0
cs_Chouchou182 Messages postés 252 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 25 avril 2011 1
11 avril 2010 à 00:51
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,
0
noussadk84 Messages postés 7 Date d'inscription dimanche 29 octobre 2006 Statut Membre Dernière intervention 13 mars 2011
12 avril 2010 à 16:08
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);

}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
noussadk84 Messages postés 7 Date d'inscription dimanche 29 octobre 2006 Statut Membre Dernière intervention 13 mars 2011
12 avril 2010 à 16:09
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);

} 
0
Rejoignez-nous