Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2731 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probléme avec un progr

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probléme avec un progr

n°1366883
kiooik
Posté le 15-05-2006 à 20:01:14  profilanswer
 

Bonjour a tous,
voila j'ai un probléme avec mon programme, vous pouvez voir le code source la ==>  http://home.scarlet.be/kio/
 
le probléme est dans la fonction "commencer", tout ce passe bien jusqu'au teste de la reponse du joueur...quand je lance le programme, j'entre la reponse mais il revient au début...avez vous une solution? merci

mood
Publicité
Posté le 15-05-2006 à 20:01:14  profilanswer
 

n°1366885
_darkalt3_
Proctopathe
Posté le 15-05-2006 à 20:03:22  profilanswer
 

pose toi les bonnes questions:
- quelles sont tes variables en jeu à ce moment ?
- quelles sont leurs valeurs respectives ?


---------------
Töp of the plöp
n°1366935
Elmoricq
Modérateur
Posté le 15-05-2006 à 21:10:21  profilanswer
 

Plusieurs remarques, certaines mineures, d'autres moins, en vrac :
 

#define nocurseur _setcursortype(_NOCURSOR)
#define curseur _setcursortype(_NORMALCURSOR)
#define solide _setcursortype(_SOLIDCURSOR)
#define champ textbackground(CYAN)
#define champnormal textbackground(BLUE)


 
Les identifiants débutant par un underscore (car. _ ) sont réservés.
Il est donc déconseillé de les utiliser, surtout en leur attribuant des noms pouvant potentiellement se retrouver dans un bon millier de bibliothèques différentes.
Une autre convention presque universellement utilisée, est celle disant que les macros sont en majuscules. Comme ça on sait qu'il s'agit d'une macro, et non d'une variable (ex : FILENAME_MAX dans stdio.h).
 
Evite également les mélanges français/anglais, déstabilisant. Ca paraît mineur, mais en fait ça ne l'est pas : lorsque tu as une bonne convention de nommage, le programme devient beaucoup plus lisible, et ça, c'est important.
 
Et à propos de lisibilité dans le code, par pitié, soigne tes indentations !
Certaines portions de ton code sont illisibles juste à cause de cela, on perd un temps précieux à déchiffrer !
 
 

struct joueur
{
       char nom[20],prenom[20];
       int age;
       long score;
};


 
Utilise plutôt :
typedef struct {
       char nom[20],prenom[20];
       int age;
       long score;
} joueur;
 
Ce qui te permettra d'utiliser le type "joueur" directement, plutôt que "struct joueur".
De même, pense mieux tes typages : un âge ne peut être négatif, donc unsigned semble plus indiqué. Et un nom de plus de vingt caractères, j'en connais plusieurs dans mon entourage. ;)
 

void main()


 
Surement pas.
main() a deux prototypes définis par la norme :
    int main(void);
et
    int main (int, char**);
 
La fonction main() doit obligatoirement retourner un entier (le code retour du programme, idéalement zéro pour indiquer que tout s'est bien déroulé).
Si ton compilateur l'accepte (et s'il est bien réglé, il devrait néanmoins émettre un warning), alors il ajoute pour toi un retour à zéro.
Deux constantes sont définies par la norme, afin de standardiser tout ça, dans stdlib.h : EXIT_SUCCESS et EXIT_FAILURE.
 

         if (level==1) //commencer
             {
                        id(&info); //saisie des donnees du joueur
                        infojeux(); //information du deroulement de jeux
                        commencer(&info,&newquestion); //debut du jeux
             }
           if(level==2) //ajouter des questions
              {
                  question(&newquestion);
              }
           if(level==3)
               {
                       highscore();
               }


 
switch...case for teh win ! ;)
switch(level)
{
   case 1 :
      id(&info);
      ...
      break;
   case 2 :
      ...
      break;
   default :
      ...
}
 
 

char min[27]={'a','z','e','r','t','y','u','i','o','p','q','s','d','f','g','h','j','k','l','m','w','x','c','v','b','n',' '};


const char *min = "aertyuiopqsdfghjklmwxcvbn";
(je ne m'étendrais pas sur les choix douteux de l'algorithme :o )
 
 
 

Spoiler :

while(!feof(randomquestion) && sw==0)


Non.
feof() sert simplement à l'identification de la fin d'une lecture de flux. Elle ne sert pas à détecter une fin de lecture, pour cela, il faut tester le code retour des fonctions de lecture (dans ton cas, fread() ).
 

randomquestion=fopen("quest.duf","rb" );
if(randomquestion)


 
Comme ça, au pif et au hasard, je dirais : "mets un else avec un printf() d'erreur, parce que s'il n'ouvre pas le fichier, il reviendra au début sans rien te dire".
Ce qui, bizarrement, est le symtome de ton problème. [:klem3i1]
(ton fichier est-il trouvé par le programme ? y a-t-il les droits de lecture, etc ?)
 
 
Bref, il manque aussi une bonne gestion d'erreur à ton code source.
 
 
Dans l'ensemble il reste énormément de choses à dire, mais cela demandrait beaucoup de temps de décortiquer intégralement ton programme pour t'expliquer tes erreurs. Temps nécessaire principalement par le côté fouilli du dit programme, mais bon, on a tous commencé par ce genre d'horreur (ne le prend pas mal, si je te montrais mes premiers codes sources... ;) )

n°1367236
kiooik
Posté le 16-05-2006 à 10:46:57  profilanswer
 

Merci beaucoup pour tes explications, je reconnais que le code est pas tres bien présenté et qu'il n'est pas facile a lire...mais je suis débutant et je n'ai pas bcp de temps pour faire ce programme...mais j'avoue que je galére qd mm...dans mon programme, qd je débute le jeu, il affiche la premiere question mais il ne passe jms a la question suivante....mais je ne sais pas si TOUTES les question sont inscrite dans le fichier "qusetion.duf" ou si le probléme est dans la fonction commencer....

n°1367389
kiooik
Posté le 16-05-2006 à 12:43:44  profilanswer
 

c'est bon j'ai trouvé la solution ^^

n°1368266
_darkalt3_
Proctopathe
Posté le 16-05-2006 à 22:02:15  profilanswer
 

c'était quoi ?


---------------
Töp of the plöp
n°1368465
Emmanuel D​elahaye
C is a sharp tool
Posté le 17-05-2006 à 09:51:57  profilanswer
 

Elmoricq a écrit :

Plusieurs remarques, certaines mineures, d'autres moins, en vrac :
 

#define nocurseur _setcursortype(_NOCURSOR)
#define curseur _setcursortype(_NORMALCURSOR)
#define solide _setcursortype(_SOLIDCURSOR)
#define champ textbackground(CYAN)
#define champnormal textbackground(BLUE)


 
Les identifiants débutant par un underscore (car. _ ) sont réservés.


Et ? Ces identificateurs (_setcursortype, _NOCURSOR etc.) sont fournis par l'implémentation (conio en l'occurence, je suppose). Il n'y a pas le choix. Par contre, ceux de l'utilisateur (nocurseur, curseur etc.) sont tout à fait corrects.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1368481
Elmoricq
Modérateur
Posté le 17-05-2006 à 10:06:46  profilanswer
 

Pas fait gaffe qu'il ne s'agissait pas de fonctions à lui, et je ne connais pas conio non plus.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probléme avec un progr

 

Sujets relatifs
Probleme de boite contenu qui ne prend pas la taille voulue en cssproblème IE (peut être)
MATLAB probléme[RESOLU][SQL SERVER] Problème de curseur
svn mirroring : problème de mergebackProblème Macro pour CATIA V5R14
Problème de récupération de donnéesProblème avec mon css
Problème "projet ou bibliothèque introuvable"[Résolu] Problème d'encodage de String.
Plus de sujets relatifs à : probléme avec un progr


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR