probleme je ne peux pas le definir en un mot (code simple)

probleme je ne peux pas le definir en un mot (code simple) - C++ - Programmation

Marsh Posté le 24-03-2003 à 09:35:24    

bonjour tout le monde le plus simple est de vous donner le programme donc le voici (le probleme je vous le donne aprés le prog ;)  
 

Code :
  1. [cpp]#include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. FILE *ptr;
  5. void main ()
  6. {
  7. char ch;
  8. char question[50];
  9. char question1[1];
  10. ptr=fopen("histoire.txt","rb" );
  11. fgets(question,50,ptr);
  12. printf("%s",question);
  13. fgets(question,50,ptr);
  14. printf("%s",question);
  15. fgets(question,50,ptr);
  16. printf("%s",question);
  17. fgets(question,50,ptr);
  18. printf("%s",question);
  19. fgets(question,50,ptr);
  20. printf("%s",question);
  21. fgets(question,50,ptr);
  22. printf(" Entrez votre reponse\n" );
  23. scanf("%c",&ch);
  24. if(ch==question[0])
  25. printf("bonne reponse" );
  26. else {
  27. printf(" mauvaise reponse" );
  28. }
  29. }


 
voici le programme et maintenant le fichier texte que vous devez mettre dans le même repertoire que le prog.
 
Debut de la deuxieme guerre mondiale
A - 1812
B - 1976
C - 1940
c
Qui est le president de la republique Française?
A - Le Pen
B - Jacques Chirac
C - Miesse Alick
B
 
copier coller dans le bloc note et nommé le fichier histoire  
 
donc voila mon probleme:
   le programme me retourne aucune erreur il fonctionne je le lance tout marche c'est génial le hic c'est lorsque je rentre ma question que je mette la bonne ou la mauvaise reponse il me sor toujours "mauvaise reponse" et ma question est pourquoi le prog me fait ca et comment resoudre ce probleme.  
 
petite indication pour comprendre plus vite normalement la reponse que je tape et comparé si la reponse et la meme il doit me dire rponse bonne sinon reponse fausse!!!  voila aidé moi plz merci.

Reply

Marsh Posté le 24-03-2003 à 09:35:24   

Reply

Marsh Posté le 24-03-2003 à 09:38:21    

faudra que tu m'explique comment ce programme est cense marcher parce que la c normal que ca foire compltement

Reply

Marsh Posté le 24-03-2003 à 10:06:14    

faudra que tu revoies le concept de tableau en C, parce que là, c'est vraiment n'importe quoi ! j'ai lu ton code très rapidement, mais y'a un truc qui m'a marqué !  

Code :
  1. if(ch==question[0])


tu ne fais que comparer un caractère avec un autre, et pas une phrase complète !
et la comparaison de chaines de caractères en C se fait avec strcmp() !


Message édité par Harkonnen le 24-03-2003 à 10:08:14

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-03-2003 à 10:24:35    

Harkonnen a écrit :

tu ne fais que comparer un caractère avec un autre, et pas une phrase complète !


C'est peut être normal. En effet juste avant il lit la dernière ligne d'une question (pour la question "Début de la deuxième guerre mondiale", la ligne avec 'c';). Il cherche donc à comparer le caractère entré avec ce caractère lu (qui est le premier caractère de la ligne soir question[0]).


---------------
each day I don't die is cheating
Reply

Marsh Posté le 24-03-2003 à 10:38:45    

gatorette a écrit :


C'est peut être normal. En effet juste avant il lit la dernière ligne d'une question (pour la question "Début de la deuxième guerre mondiale", la ligne avec 'c';). Il cherche donc à comparer le caractère entré avec ce caractère lu (qui est le premier caractère de la ligne soir question[0]).


effectivement, j'avais pas vu qu'il mettait la réponse sur la dernière ligne.
mais je vois pas l'utilité de tous les fgets au début ! ça remplit le buffer 6 fois avec les mêmes données !
et le strcmp(), c'est pas fait pour les chiens.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-03-2003 à 10:48:43    

Chez moi ça marche avec juste une petite modification : Tu as un couple fgets/fprintf en trop ! Le mieux est encore de faire du pas à pas pour te rendre compte des problèmes qui extistent.


---------------
each day I don't die is cheating
Reply

Marsh Posté le 24-03-2003 à 11:08:41    

ok quel fgets é en trop???
hé si il y a autant de fgets c'est pour qu'il affiche la question mais qu'il n'affiche pas la reponse ensuite il compare la reponse a la reponse saisi .
si j'enleve un fgets sa marche??

Reply

Marsh Posté le 24-03-2003 à 11:14:56    

On va reprendre :

Code :
  1. int main(int argc, char* argv[])
  2. {
  3. FILE *ptr;
  4. char ch;
  5. char question[50];
  6. ptr=fopen("histoire.txt","rb" ); // pourquoi ouvrir en binaire ?
  7. fgets(question,50,ptr); // je lis "Debut de la deuxieme guerre mondiale"
  8. printf("%s",question); // J'affiche "Debut de la deuxieme guerre mondiale"
  9. fgets(question,50,ptr); // Je lis "A - 1812"
  10. printf("%s",question); // J'affiche "A - 1812"
  11. fgets(question,50,ptr); // Je lis "B - 1976"
  12. printf("%s",question); // J'affiche "B - 1976"
  13. fgets(question,50,ptr); // Je lis "C - 1940"
  14. printf("%s",question); // J'affiche "C - 1940"
  15. fgets(question,50,ptr); // Je lis "c"
  16. printf(" Entrez votre reponse\n" );
  17. scanf("%c",&ch); // J'attend un caractère...
  18. if(ch==question[0]) // si le caractère entré est égal à 'c'
  19. printf("bonne reponse" );
  20. else {
  21. printf(" mauvaise reponse" );
  22. }
  23. return 0;
  24. }


 
Mais c'est vrai que c'est pas très élégant comme programme...


---------------
each day I don't die is cheating
Reply

Marsh Posté le 24-03-2003 à 11:34:09    

:sol: cool merci beaucoup!!!!!! tu ferais comment pour faire plus joli???

Reply

Marsh Posté le 26-03-2003 à 14:15:50    

wouschy a écrit :

:sol: cool merci beaucoup!!!!!! tu ferais comment pour faire plus joli???


 :pfff:  
 

Code :
  1. int main(int argc, char* argv[])
  2.   {
  3.     FILE *ptr;
  4.     char ch;
  5.     char question[50];
  6.    
  7.     ptr=fopen("histoire.txt","rb" ); // pourquoi ouvrir en binaire ?
  8. for (int i=0;i<4;i++)
  9. {
  10. fgets(question,50,ptr); 
  11. printf("%s",question);
  12. }
  13. fgets(question,50,ptr);
  14.     printf(" Entrez votre reponse\n" );
  15.     scanf("%c",&ch); // J'attend un caractère...
  16.     if(ch==question[0]) // si le caractère entré est égal à 'c'
  17.       printf("bonne reponse" );
  18.     else {
  19.       printf(" mauvaise reponse" );
  20.     }
  21.    
  22.     return 0;
  23.   }


 
deja rien que ca c'est un peu mieux


Message édité par polo021 le 26-03-2003 à 14:16:44
Reply

Marsh Posté le 26-03-2003 à 14:15:50   

Reply

Marsh Posté le 26-03-2003 à 14:20:17    

ou :

Code :
  1. int main(int argc, char* argv[])
  2. {
  3. FILE *ptr;
  4. char ch;
  5. char question[50];
  6. strcpy(question,"Bienvenue.\n----------\n\n" );
  7. ptr=fopen("histoire.txt","rb" ); // pourquoi ouvrir en binaire ?  
  8. for (int i =0; i<5;i++)
  9. {
  10. printf("%s",question);
  11. fgets(question,50,ptr);
  12. }
  13. printf(" Entrez votre reponse\n" );
  14. scanf("%c",&ch); // J'attend un caractère...  
  15. if(ch==question[0]) // si le caractère entré est égal à 'c'  
  16. printf("bonne reponse" );
  17. else {
  18. printf(" mauvaise reponse" );
  19. }
  20. return 0;
  21. }


Message édité par polo021 le 26-03-2003 à 14:22:36
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed