[C] comen faire retour debu ac while(!feoef()

Fermé
adam - 8 févr. 2005 à 12:40
 adam - 9 févr. 2005 à 13:11
bonjours, j'ai ecrit un programme qui detecte les palindromes mais je n'arrive pas a proposer un retour au debut si on veut entrer une autre phrase a tester.je souhaite utiliser while( ! feof(stdin)).voilamon programme si voussavezcomment faire merci de m'aider. merci.
#include <stdio.h>
#include <string.h>

main()
{
char TXT1[201];
char TXT2[201];
char TXT[201];
int I,J,a;
int L;
int AIDE;
int o,n;



printf("entrer une phrase ( max 201 caracteres ):\n");

gets(TXT1);
for ( L=0 ; TXT1[L] ; L++);
{
for (I=0,J=L-1 ; I<J ; I++,J--)
{
AIDE=TXT[I];
TXT[I]=TXT[J];
TXT[J]=AIDE;
}
if (strcmp(TXT1,TXT2)==0)
printf ("%s est un palindrome %s\n",TXT1,TXT2);
else
printf("%s n'est pas un palindrome %s\n",TXT1,TXT2);

}

printf ("voulez vous ecrire une autre phrase? o/n:",o,n);
gets(TXT);
}

7 réponses

slolo2000 Messages postés 315 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 29 mai 2007 48
8 févr. 2005 à 13:32
Salut,

essaye un truc comme ça

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

main()
{
char TXT1[201];
char TXT2[201];
char TXT[201];
char c = 'o';
int I,J,a;
int L;
int AIDE;
int o,n;

while (c == 'o') {
printf("entrer une phrase ( max 201 caracteres ):\n");

gets(TXT1);
for ( L=0 ; TXT1[L] ; L++);
{
for (I=0,J=L-1 ; I<J ; I++,J--)
{
AIDE=TXT[I];
TXT[I]=TXT[J];
TXT[J]=AIDE;
}
if (strcmp(TXT1,TXT2)==0)
printf("%s est un palindrome %s\n",TXT1,TXT2);
else
printf("%s n'est pas un palindrome %s\n",TXT1,TXT2);

}

printf("voulez vous ecrire une autre phrase? o/n:",o,n);
c = getch();
printf("\n");
}
}
0
merci beaucoup mais ca ne marche pas dev c++ me dit que 'getch' undeclared( first use this fonction)
0
en faite ce n'etait pas getch() mais getchar() au moins j'apprend des choses. ta boucle fonctionne bien meme trop bien car elle ne s'arrete plus pour que je puisse entree une nouvelle phrase. si tu as une idee elle sera la bien venu. merci beaucoup
0
slolo2000 Messages postés 315 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 29 mai 2007 48
8 févr. 2005 à 14:31
Tu me dis que mon exemple ne fonction pas avec dev c++ ???
C'est sur ce compilateur que je l'ai écrit. En plus je l'ai testé avant de le poster.
Quelle est l'extension de ton fichier .c ou .cpp
Moi j'ai utilisé .c
0
j'ai utiilsé .cpp mais maintenant ca fonctionne juste que quand je repond o il m'affiche tout d'un coup . donc je je tourne en rond( humour mauvais desole)
0
slolo2000 Messages postés 315 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 29 mai 2007 48
8 févr. 2005 à 14:47
Ca fonctionne avec getch ou getchar ?

Sinon, qu'entends-tu par "il m'affiche tout d'un coup" ?
0
ca fonctionne avec getchar par contre mon ordi a bogger j'ai ete obliger de tout retaper . en tappant n a la fin il ne veu pas quiter sait tu pourquoi je te renvois le fichier en cpp
#include <stdio.h>
#include <string.h>

main()
{
char TXT1[201];
char TXT2[201];
char TXT[201];
char c = 'o';
int I,J;
int L;
int AIDE;
int o,n;

while (c == 'o')
{
printf("entrer une phrase ( max 201 caracteres ):\n");
gets(TXT1);
for ( L=0 ; TXT1[L] ; L++);
for (I=0,J=L-1 ; I<J ; I++,J--)
{
AIDE=TXT1[I];
TXT1[I]=TXT2[J];
TXT2[J]=AIDE;
}

if (strcmp(TXT1,TXT2)==0)
printf ("%s est un palindrome %s\n",TXT1,TXT2);
else
printf("%s n'est pas un palindrome %s\n",TXT1,TXT2);

printf("voulez vous ecrire une autre phrase? o/n:",o,n);
gets(TXT);
}
c = getchar();
printf("\n");
}
0

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

Posez votre question
slolo2000 Messages postés 315 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 29 mai 2007 48
8 févr. 2005 à 15:37
je te conseil de reprendre mon exemple qui marche parfaitement mais en incluant la bibliothèque #include <conio.h> car la fonction getchar pose un problème de buffer. Si ma mémoire est bonne il garde la caractère \n dans le buffer. Il faut alors le purger. L'avantage de getch est qu'elle réagit dès qu'une touche est tapée contrairement à getchar ou tu peux saisir un nombre indéfini de caractères.
0
desolé tu va dir quejesuis chiante mais ça ne marche toujours pas.toi quand tu l'appliques et qu'il te demande o/n en repondant n tu ressors completement? si ou peux tu me le renvoyer car a forceje m'embrouille.merci c'est super simpa de m'aider car mar des livres
0
slolo2000 Messages postés 315 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 29 mai 2007 48
8 févr. 2005 à 16:03
je ne peux rien faire de plus puisque ça marche chez moi sur Windows 2000 et Dev C++ 4.9.9.1 et toutes les options par défaut.
Quand j'appuie sur n, le programme quitte tout de suite.
C'est bien ce que tu veux non ?

Et non tu n'es pas chiante. J'aime bien aider les personnes qui veulent apprendre.

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

main()
{
char TXT1[201];
char TXT2[201];
char TXT[201];
char c = 'o';
int I,J,a;
int L;
int AIDE;
int o,n;

while (c == 'o') {
printf("entrer une phrase ( max 201 caracteres ):\n");

gets(TXT1);
for ( L=0 ; TXT1[L] ; L++);
{
for (I=0,J=L-1 ; I<J ; I++,J--)
{
AIDE=TXT[I];
TXT[I]=TXT[J];
TXT[J]=AIDE;
}
if (strcmp(TXT1,TXT2)==0)
printf("%s est un palindrome %s\n",TXT1,TXT2);
else
printf("%s n'est pas un palindrome %s\n",TXT1,TXT2);

}

printf("voulez vous ecrire une autre phrase? o/n:",o,n);
c = getch();
printf("\n");
}
}
0
okpour la boucle ça fonctionne c'est cool le probleme c'est que si je prends ton programme il ne lis plus corresctement les palindromes essaie avec la malade pedala mal normalement c'en est un mais lui ne le trouve pas si ta une soluce elle est la bien venu.
merci c'est simpa de m'aider
0
slolo2000 Messages postés 315 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 29 mai 2007 48
9 févr. 2005 à 09:39
Salut,

je ne suis pas sûr que mon programme y soit pour quelque chose. Le truc que tu peux rajouter c'est :

memset(TXT, '\0', sizeof(TXT));
memset(TXT1, '\0', sizeof(TXT1));
memset(TXT2, '\0', sizeof(TXT2));

après printf("entrer une phrase ( max 201 caracteres ):\n"); histoire de réinitialiser tes buffer à chaque calcul de palindrome

Fais moi signe si tu es encore bloqué.

A+
0
merci pour ton aide mais ca marche que quand ca veu une fois sur deux alors je vais garder ta boucle qui ma bien ete utile par contre mon prog est pourri donc je le refais en tout cas merci pour tout
0