IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Mastermind, Problème de pointeurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 4
    Par défaut Mastermind, Problème de pointeurs
    Bonjour,

    J'ai besoin d'une aide urgent!!!! Je dois rendre un projet la semaine prochaine et je n'arrive pas à comprendre ce que je dois faire avec le problème suivant, je reconnais que je suis pas du tout experte...j'ai du mal à comprendre l'application des pointeurs(je crois que c'est ça le souci).

    J'essaie de faire une fonction pour sauvegarder une partie et la récupérer...la fontion de sauvegarde marche bien, mais la fct récupération m'affiche:


    ***************----------- MASTERMIND---------------****************
    ----------------------Menu Principal-----------------------------
    
    1_Authentifier et Jouer une nouvelle partie
    2_Reprendre une partie sauvegardé
    3_Quiter
    2
    Introduzca usuario:MARIE
    siga
    [D][F][F][H][C]
    |C| |_|*|_
    {}{}{}{}{}
    
    fin
    *****c'est un erreur!!!!, la partie enregistrée a été:

    /////////////////////fichier binaire/////////////////////////////////////////////
    DFFHC ****j'affiche la combinaison secrete****
    
    EDGFC _*_*#
    
    EDFGC _*#_#
    
    ADCFG _***_
    SVP aide-moi


    Voici le code des deux fonctions!!

    Merci!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    void Sauvegarde(char filename[6],int ROW,int *coups)
    {
    //char filename[6];
    int i=0;
    int j=0;
    FILE * fichier;
    printf("Introduzca usuario:");
    scanf("%s",filename);
    fichier=fopen(filename,"w");
    	if(fichier ==NULL){
    	printf("Probleme d'ouverture du fichier\n");
    	}
    	else{
     
     
     
    	fwrite(&tableau,sizeof(tableau[i]),5,fichier);  
    	fprintf(fichier,"\n");
    	for(j=0;j<*coups;j++){//COMPARAISON AVEC LA VALEUR DES COUPS SUR MAIN
    	fprintf(fichier,"\n");
    	fwrite(&joueur[j][i],sizeof(joueur[j][i]),5,fichier);
    	fprintf(fichier,"\t");
    	fwrite(&resultant[j][i],sizeof(resultant[j][i]),5,fichier);
    	fprintf(fichier,"\n");
    }//j++;
    	fprintf(fichier,"\n");
     
    	clean_stdin();
     
    	}//else
     
    fclose(fichier);
    }
    ///////////////////////////////////////FONCTION POUR RECUPERER LA PARTIE DU JEU/////////////////////
    void ChargePartie(char *surnom, int *ROW,int *coups){
    char filename[6];
    int i=0;
    int j=0;
    FILE * fichier;
    printf("Introduzca usuario:");
    scanf("%s",filename);
    fichier=fopen(filename,"r+");
    	if(fichier ==NULL){
    	printf("Probleme d'ouverture du fichier\n");
     
    }else{
    printf("siga\n");
     
    fread(&(*tableau),sizeof(tableau),5,fichier); 
    		for(i=0;i<TAILLE;i++){
    		printf("[%c]",tableau[i]);
    		}
    printf("\n");
    fread(&joueur[j][i],sizeof(joueur[j][i]),5,fichier);
    		for(i=0;i<TAILLE;i++){
     
    		printf("|%c",joueur[j][i]);
    		}
    printf("\n");
    fread(&resultant[j][i],sizeof(resultant[j][i]),5,fichier);
    for(i=0;i<TAILLE;i++){
    		printf("{%c}",resultant[j][i]);
    		}
    printf("\n");
     
     
    printf("\n");
    			printf("fin\n");
    	}
    fclose(fichier);
    }

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    * La première chose à faire est de vérifier que la fonction Sauvegarde() construit bien le fichier attendu.
    Evidemment, la fonction Sauvegarde() n'a pas produit le texte
    /////////////////////fichier binaire/////////////////////////////////////////////
    DFFHC ****j'affiche la combinaison secrete****
    ....
    Quel est donc le contenu du fichier sauvegardé ? Est-il correct ?

    * Sur la fonction Sauvegarde() quelques commentaires:

    - filename n'est pas un paramètre de la fonction : la valeur passée en argument n'est pas utilisée. Ce doit être une variable locale "ordinaire" (comme montré en commentaire dans le source).

    - Elle utilise d'horribles variables globales dont on ne connait rien : tableau, joueur, resultant.
    Comme la question porte sur la sauvegarde et la restauration de leur contenu, c'est plutôt génant !
    Quelle est la définition de ces tableaux ?

    - i est fixé à 0 et ne varie pas !

    - La sauvegarde est faite sous la forme de fichiers texte (d'après les fopen()). Par contre, les E/S sont faites avec des fonctions d'E/S non formatées (fread(), fwrite()) mélangées avec l'écriture de '\n'. Ceux-ci vont poser des problèmes à la relecture car ils ne seront pas ignorés par les fread().

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 4
    Par défaut
    Bonjour:

    Je vous remercie de votre réponse!!

    Voici l'affichage de mon fichier
    J'ai commencé à faire mon code avec des variables globales, mais c'est vrai que maintenant je me perds un peu...j'ai vu que j'aurai pu appliquer des structs...mais je ne maitrise pas l'application :s


    DFFHC

    EDGFC _*_*#

    EDFGC _*#_#

    ADCFG _***_

    ça fait plusieurs jours que je travaille dans ce code...mais maintenant je trouve je ne peux pas avancer plus à cause de mon problème avec la fct de récupération(le projet est à rendre pour jeudi prochain)

    Pourriez vous m'indiquer quel type des changements je dois faire pour que le programme marche correctement.

    Merci bcp
    Fichiers attachés Fichiers attachés

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 4
    Par défaut À L'AIDE!!!!
    Bonsoir:

    Je n'ai pas reçu de réponses

    J'ai réglé mon problème pour récupéré mon fichier avec la partie sauvegardée!!!

    Voici les fonctions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
     
    void Sauvegarde(char filename[6],int ROW,int *coups)
    {
     
    int i;
    int j=0;
     
    FILE * fichier;
    printf("Quel est votre surnom:");
    scanf("%s",filename);
    fichier=fopen(filename,"w");
    	if(fichier ==NULL){
    	printf("Probleme d'ouverture du fichier\n");
    	}
    	else{
    	fprintf(fichier,"%d",*coups);
    	for(i=0;i<TAILLE;i++){
    	fprintf(fichier,"%c",tableau[i]);
    	}
     
    	for(j=0;j<*coups;j++){
    		for(i=0;i<TAILLE;i++){
    		fprintf(fichier,"%c",joueur[j][i]);
    		}
    			for(i=0;i<TAILLE;i++){
    		fprintf(fichier,"%c",resultant[j][i]);
    		}	
    	}
     
    	}
     
    clean_stdin();
     
     
    fclose(fichier);
    }
    ///////////////////////////////////////////////////////
    void ChargePartie(char *surnom, int ROW, int *coups){
    char filename[6];
    int i=0;
    int j=0;
    //char c;
    //char n;
    FILE * fichier;
    printf("Inserez votre utilisateur:");
    scanf("%s",filename);
    fichier=fopen(filename,"r");
     
    	if(fichier ==NULL){
    	printf("Probleme d'ouverture du fichier\n"); }else{
     
    	fscanf(fichier,"%d",coups);
    	for(i=0;i<TAILLE;i++){
    	fscanf(fichier,"%c",&tableau[i]);
    	}	
    	for(i=0;i<TAILLE;i++){
    	printf("%c",tableau[i]);
    	}	
    	printf("\n");
    	for(j=0;j<*coups;j++){
    		for(i=0;i<TAILLE;i++){
    		fscanf(fichier,"%c",&joueur[j][i]);
    		}	
     
    		for(i=0;i<TAILLE;i++){
    		fscanf(fichier,"%c",&resultant[j][i]);
    		}	
     
    	}
     
     
    	for(j=0;j<*coups;j++){
    		for(i=0;i<TAILLE;i++){
    		printf("[%c]",joueur[j][i]);
    		}			
     
    		printf("\t");
    		for(i=0;i<TAILLE;i++){
    		printf("%c",resultant[j][i]);
    		}	
    		printf("\n");
    	}
     
    	}
    	fclose(fichier);
     
    }
    Maintenant, mon ptit souci c'est un ligne vide qui apparait quand je fait la sauvegarde...et cette ligne est prise comme un coup (#define COUP_MAX=6)...Comment je pourrai éviter de prendre cette ligne???

    Voici l'affichage:

    Code txt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ***************----------- MASTERMIND---------------****************
    ----------------------Menu Principal-----------------------------
     
    1_Authentifier et Jouer une nouvelle partie
    2_Reprendre une partie sauvegardé
    3_Quiter
    2
    Introduzca usuario:KAKA
    EHHAA
    [A][F][G][E][B]	*__*_
    [E][F][G][B][E]	#___*
    [][][][][]	_____

    (la premiere ligne affichée EHHAA, c'est la combinaison lancé au hasard...le deux lignes suivantes sont les combinaison lancés pour le joueur)

    La méthode que j'ai utilisé pour mettre en pause la partie est: (touche *)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    do {   //(bon_places != TAILLE && coups <= COUP_MAX);
     
    			  if((n=getchar())!=42){
     
    				printf("\r");
    		 	  Proposition(ROW);
       	     bon_places = 0;
       	     for (i = 0; i < TAILLE; i++) {
       	         Comparaison(i,ROW);
       	     }
     
            affichage(RESULTAT,ROW);
            ROW++;
            coups++;
     
    				}else{
    				printf("\tVOUS AVEZ MIS EN PAUSE VOTRE JEU\n");
    				Sauvegarde(filename,0,&coups);
    				printf("%s votre partie a été sauvegardé, à bientôt!\n",surnom);				
    				return 0;
    		}
        		}while (bon_places != TAILLE && coups <= COUP_MAX);

    aussi si quelqu'un peut m'indiquer comment je pourrai appliquer la dernière partie de mon jeu (la reprise de la partie gardé)...S'il vous plait j'ai besoin de l'aide pour finir mon projet! Je vous rappelle...je suis débutante

    Merci

Discussions similaires

  1. Problème de pointeurs..embrouillé
    Par Frenchy dans le forum C++
    Réponses: 11
    Dernier message: 10/03/2005, 16h33
  2. Problème de pointeur avec un TQuery
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/01/2005, 13h57
  3. Problème de pointeur
    Par toma_lille dans le forum C++
    Réponses: 1
    Dernier message: 07/12/2004, 21h26
  4. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 15h50
  5. TBitmap et problèmes de pointeurs...
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/07/2003, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo