Besoin d'aide dans un projet de premiere année en IUT... [C] - Programmation
Marsh Posté le 05-06-2001 à 21:55:28
Ayez pitié de moi svp!!!
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...+
Marsh Posté le 05-06-2001 à 21:57:16
jsuis pas un gros boss mais balance quand meme:
deathsharp@wanadoo.fr
par contre je pourrai pas te repondre aujourdhui
Marsh Posté le 05-06-2001 à 22:02:15
Je suis pas une lumière non plus, mais si jamais je peux t'aider
evadream.forum@free.fr
@+
Marsh Posté le 05-06-2001 à 22:11:58
Merci !
J'avance encore un peu et je balance !
C sympa!
Marsh Posté le 05-06-2001 à 22:17:09
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!!!
Marsh Posté le 05-06-2001 à 22:19:06
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 !
Marsh Posté le 05-06-2001 à 22:32:29
pas encore commencé le mode graphic, j'attend que le mode texte marche parfaitement bien.
Sinon j'utilise les bibli graphiques normales....
Marsh Posté le 05-06-2001 à 22:51:41
Je te conseille d'utiliser Opengl car c'est beaucoup plus simple à utiliser que Dx.
Marsh Posté le 05-06-2001 à 23:17:52
arf !
Nan, j'en suis pas encore à l'optimisation geforce3...
Quand je dis graphic, c du 16 couleurs en dos..
Marsh Posté le 05-06-2001 à 23:28:32
Ouais mais tu peux faire un truc simple en 2D en Opengl facilement.
Marsh Posté le 05-06-2001 à 23:31:21
plus facilement que le mode 16 couleurs?
Marsh Posté le 06-06-2001 à 00:05:35
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.
Marsh Posté le 06-06-2001 à 00:13:41
les vieilles bibli..
tu connais pas un site qui peut m'expliquer comment ça marche?
Marsh Posté le 06-06-2001 à 00:18:07
Dis, Neo, tu aurais pas fait un projet de compta l'année derniere?
Marsh Posté le 06-06-2001 à 00:25:47
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.
Marsh Posté le 06-06-2001 à 00:41:29
ok... moi je suis avec Borland, c pour ça....
Marsh Posté le 08-06-2001 à 21:39:59
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;
Marsh Posté le 09-06-2001 à 09:58:18
personne trouve ???
Please ! Je pete un cabele là !
Marsh Posté le 09-06-2001 à 10:37:36
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]
Marsh Posté le 09-06-2001 à 10:51:54
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.
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]
Marsh Posté le 09-06-2001 à 10:59:19
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 ?
Marsh Posté le 09-06-2001 à 10:59:58
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:-))
Marsh Posté le 09-06-2001 à 12:37:07
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!
Le principe est de faire une sorte de hight score...
Marsh Posté le 09-06-2001 à 21:55:20
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?
Marsh Posté le 09-06-2001 à 22:06:09
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.
Marsh Posté le 09-06-2001 à 22:33:16
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+,
Marsh Posté le 09-06-2001 à 22:37:38
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
Marsh Posté le 09-06-2001 à 23:04:20
Et bien Bravo à Gilou !
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!
Marsh Posté le 09-06-2001 à 23:14:57
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+,
Marsh Posté le 10-06-2001 à 00:30:10
ok, merci. Je vais essayer....
Marsh Posté le 05-06-2001 à 21:05:19
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....
---------------
I'm the POPOV masqué !! ;)