Mots palindrome dans fichier [Résolu]

Messages postés
7
Date d'inscription
dimanche 29 octobre 2006
Dernière intervention
13 mars 2011
- - Dernière réponse : noussadk84
Messages postés
7
Date d'inscription
dimanche 29 octobre 2006
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
159
Date d'inscription
dimanche 15 octobre 2006
Dernière intervention
27 août 2010
2
Merci
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.

Merci deadhand 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de deadhand
Messages postés
7
Date d'inscription
dimanche 29 octobre 2006
Dernière intervention
13 mars 2011
0
Merci
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)
}
}
Commenter la réponse de noussadk84
Messages postés
252
Date d'inscription
vendredi 13 juin 2003
Dernière intervention
25 avril 2011
0
Merci
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,
Commenter la réponse de cs_Chouchou182
Messages postés
7
Date d'inscription
dimanche 29 octobre 2006
Dernière intervention
13 mars 2011
0
Merci
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);

}
Commenter la réponse de noussadk84
Messages postés
7
Date d'inscription
dimanche 29 octobre 2006
Dernière intervention
13 mars 2011
0
Merci
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);

} 
Commenter la réponse de noussadk84

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.