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

 


Dernière réponse
Sujet : [C] Besoin d'aide dans un projet de premiere année en IUT...
thegnlpopov ok, merci. Je vais essayer....

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
thegnlpopov ok, merci. Je vais essayer....
gilou Bon deja, au lieu de calculer la taille en bouclant a coup de fread, ca serait nettement pluws efficace si tu obtenais la taille du fichiet (stat sous unix, _stat sous dos/windows) et que tu divises par la taille de ta structure.
 
Ensuites, pourquoi boucler en lecture, puisque tu connais le nombre total? Ceci me semblerait plus approprie:
gamer=(joueur)malloc(nbr*(sizeof (struct player)));  
fread(gamer,sizeof(struct player),nbr,fic);  
 
A+,
thegnlpopov Et bien Bravo à Gilou !       :hello:  
Et tu as raison le prog est tres mal structuré, mais bon je fais ce que je peux...
 
Il semble que le rewind ne se trouvait pas où il fallait...
 
Pourtant cette erreur n'est pas sur ma disquette de sauvegarde... Je pense qu'en retirant les printf afin de tester l'algo, j'ai supprimé un } où il ne fallait pas puis rajouté ailleur qd le compilo m'a fait l'erreur....  et par manque de bol ça marchait un peu au lieu de pas du tout.
 
C'est surtout en voyant que le prog ne marchait plus chez moi j'ai laissé tomber et reclamé votre aide. En fait j'aurais dut reverifier mais j'en avais plus que marre.
 
Encore merci à tous, maintenant ça marche impec!  :)
poirson bizzare tous ces master, car moi j'en ai eu 1 en projet cette année mais en java ....
Si tu veux un idée de mon interface :
http://www.gt-drivers.com/mastermind/
c'est l'adresse de mon aide qui est en ligne, j'avais fait un petit navigateur pour l'aide  
bon chance pour ton master
gilou Primo, c'est programme n'importe comment, et secondo, cet extrait devrait te donner une idee d'une (parmi d'autres) erreur:
 
while (!feof(fic))
  {
  fread(temp,sizeof(struct player),1,fic);  
  ....
  rewind(fic);
  .....
  }
 
A+,
verdoux

thegnlpopov a écrit a écrit :

Merci !
Sinon le programme normallement lis un fichier contenant des structs joueurs. Il regarde combien y'en à (il incr nbr). Puis rembobine ce fichier (rewind)  




Non, il ne fait pas ça.

djfm boulala les high scores.... javais essaye de faire ca pour je c pu koi.... c galere bonne chance(fo dire ke je suis pas iune reference)
 
ps: c koi les regles du mastermind?
thegnlpopov Merci !
 
Sinon l'ecriture que j'ai des structs et celle proposée est sensiblement la meme, question d'habitude.
 
Sinon le programme normallement lis un fichier contenant des structs joueurs. Il regarde combien y'en à (il incr nbr). Puis rembobine ce fichier (rewind) et prend les structs qu'il met dans un tableau qu'il tris ensuite dans l'ordre decroissant.
Ensuite il les affiches.
Voilà.    Et non il fait pas n'importe koi! :na:  
 
Le principe est de faire une sorte de hight score...
Acidman je suis pas une lumiere mais je te conseil d'initialiser tous tes tableaux avec memset ca peut eviter souvent que tu trouve n'importe quoi dedans et ca peu peut etre corriger des problemes
comme le faite que l'on t'affiche des truc en trop ou n'importe
quoi.
Je te dis ca car tu utilise des tableaux dynamique:-))
verdoux J'ai l'impression que ton code fait vraiment n'importe quoi.  
Rajoute des commentaires pour expliquer ce que tu penses qu'il fait (ou doit faire). Par exemple à quoi sert le rewind ?
Evadream -jbd- Bon j'ai pas de solution, j'ai regardé rapidement ton code, et je suis pas une lumière hein :)
 
Cependant j'ai l'habitude de déclarer cà :
 
struct player {char nom[13]; int score;};
typedef struct player * joueur;
 
struct cellule {char info[6];struct cellule * suiv;};
typedef struct cellule * liste;
 
struct sauvegarde {char nom[13]; int score; char code[6];};
typedef struct sauvegarde * sauvecontexte;

 
comme cà :
 
typedef struct
    {
    char nom[13];
    int score;
    }player;
 
typedef struct _cellule          // liste chainée
    {
    char info[6];
    struct _cellule *suiv;
    }cellule;
 
typedef struct
    {
    char nom[13];
    int score;
    char code[6];
    }sauvegarde;
 
 
Ensuite je remplace les :
 
typedef struct player * joueur;
typedef struct cellule * liste;
typedef struct sauvegarde * sauvecontexte;

 
par ( dans le main cette fois )
 
player     *joueur;
cellule    *liste;
sauvegarde *sauvetexte;

 
 
Bon ca ne t'aide pas bcp, mais je pense que ca rend la chose plus net, c'est peut être un point de vue personel.
 
A propos du typedef struct de la liste chainée, tu peux remarqué qu'il est reperé par 2 noms différents.
 

  • cellule est le nom qui sera utilisé dans la suite du programme
  • _cellule est seulement utilisé pour crée la récursivité


 
Cette écriture permet ensuite d'éviter d'écrire struct xxx un peu partout dans le programme.
 
Tiens nous au courant !
 
@+

 

[edit]--Message édité par Evadream -jbd---[/edit]

Evadream -jbd- Tu peux envoyer ton code complet qqpart ? Ca serait plus pratique. Si tu veux tu me l'envoie par mail cf. profile et je le mets à sur free.
 
@+

 

[edit]--Message édité par Evadream -jbd---[/edit]

thegnlpopov personne trouve ??? :ouch:  
 
Please !  Je pete un cabele là ! :pt1cable:
thegnlpopov J'ai une colle:
Où est l'erreur ? (des fois ça plante, des fois ça afficher un nom et un score n'importe comment et en trop, des fois ça marche bien...)
 
void affhs()
{int i,nbr,j;
joueur gamer;
joueur temp=NULL;
boolean fintris;
 
FILE * fic;
 
fic=fopen("score.hs","rb" );
if (fic==NULL)
 {printf("\n Aucune partie n'a ete lancee." );
 }
else
 {temp=(joueur)malloc(sizeof(struct player));
 nbr=0;
 fread(temp,sizeof(struct player),1,fic);
 
 while (!feof(fic))
  {nbr++;
  fread(temp,sizeof(struct player),1,fic);
  gamer=(joueur)malloc(nbr*(sizeof (struct player)));
  rewind(fic);
  for(i=0;i<nbr;i++)
   {fread(&gamer[i],sizeof(struct player),1,fic);
   }
 
   if (nbr>1)
   {for(i=0;i<(nbr-1);i++)
    {for(j=i+1;j<nbr;j++)
     {if((gamer[i]).score<(gamer[j]).score)
      {*temp=gamer[j];
      gamer[j]=gamer[i];
      gamer[i]=*temp;
      }
     }
    }
   }
 
 
  }
 
 
 
 for(i=0;i<nbr;i++)
  {printf("\n Nom:  %s   Score   %d  ",((gamer[i])).nom,((gamer[i])).score);
  getch();
  }
 
 }
 
fclose(fic);
 
}
 
(un conseil, copiez ça ailleurs)
 
 
Alors, koi de neuf docteur?
Serieux c'est urgent et je trouve pas.
Encore une chose, les structs sont declarés ainsi:
 
struct player {char nom[13]; int score;};
typedef struct player * joueur;
 
struct cellule {char info[6];struct cellule * suiv;};
typedef struct cellule * liste;
 
struct sauvegarde {char nom[13]; int score; char code[6];};
typedef struct sauvegarde * sauvecontexte;
thegnlpopov ok... moi je suis avec Borland, c pour ça....
Neo80 Non je n'ai pas fait de projet de compta, désolé.
Pour les vieilles librairies, j'ai eu du mal à trouver de l'aide sur cela, de plus si tu utilises VC++6, tu n'auras pas ces anciennes librairies (ton choix sera Dx ou Opengl)
C'est pour cela que j'ai directement opté pou Opengl.
thegnlpopov Dis, Neo, tu aurais pas fait un projet de compta l'année derniere?
thegnlpopov les vieilles bibli..
tu connais pas un site qui peut m'expliquer comment ça marche?
Neo80 Ton mode 16 couleurs, tu l'initialises en assembleur ou avec les vieilles librairies graphiques des compilateurs ?
J'ai jamais utilisé les vieilles librairies graphiques (j'ai commençé directement par Opengl) alors te dire si c'est plus facile, je ne sais pas.
En tout cas, l'Opengl c'est facile d'accès et simple.
thegnlpopov plus facilement que le mode 16 couleurs?
Neo80 Ouais mais tu peux faire un truc simple en 2D en Opengl facilement.
thegnlpopov arf !
 
Nan, j'en suis pas encore à l'optimisation geforce3...  :lol:  
 
Quand je dis graphic, c du 16 couleurs en dos..
Neo80 Je te conseille d'utiliser Opengl car c'est beaucoup plus simple à utiliser que Dx.
thegnlpopov pas encore commencé le mode graphic, j'attend que le mode texte marche parfaitement bien.
 
Sinon j'utilise les bibli graphiques normales....
Neo80 Tu utilises quoi pour gérer le mode graphique ?
thegnlpopov ben en fait la difficulté elle est dans les options:
sauvegardes, mode graphique, ....
 
Moi j'aime bien l'ASM, suit pas trop mauvais dans ça !  :D
Neo80 Tu as de la chance de le faire en C.
Il y a 2 ans, je me le suis tapé en assembleur.
Je voudrais bien t'aidé mais mois aussi j'ai des programmes et des rapports à finir cette nuit pour demain.
Je pourrais t'aidé qu'à partir de mercredi prochain, autrement dit trop tard je pense.
 
Ca devrait être assez simple en C, non ?
D'ailleurs je ne me souviens même plus des rêgles du mastermind.
Bon courage!!!
thegnlpopov Merci !
 
J'avance encore un peu et je balance !  
C sympa!   :hello:
Evadream -jbd- Je suis pas une lumière non plus, mais si jamais je peux t'aider :)
 
evadream.forum@free.fr
 
@+
TheJackal jsuis pas un gros boss mais balance quand meme:
 
deathsharp@wanadoo.fr
 
par contre je pourrai pas te repondre aujourdhui
thegnlpopov Ayez pitié de moi svp!!!   :cry:  
 
Je veux juste un peu d'aide de qq1 qui ppourrai me dire pourkoi ça marche pas..., mais je dois envoyer les sources, ça ferait trop gros ici...+
thegnlpopov Je suis en train de faire un MASTERMIND en C, et je cherche qq1 qui pourrai me corriger mon projet et me donner des conseils, parce que ça bug un peu et j'en voit pas le bout....ça m'ennerve...
 
Merci aux ames charitables....

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)