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 :

sauvegarde et chargement à partir d'un fichier


Sujet :

C++

  1. #1
    Membre habitué Avatar de fomazou
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Points : 151
    Points
    151
    Par défaut sauvegarde et chargement à partir d'un fichier
    je sauvegarde les valeurs d'un tableau multidimensionel dans un fichier, que j'aimerai bien recharger dans le tableau. mais je constate quand je teste si tout ce passe bien qu'il y a un problème. les éléments du tableau sont de types réel (double). le constat est que une recharger dans le tableau la partie entier du réel est transformé en zéro s'il était strictement positif.
    exemple:
    valeurs que je sauvegarde
    0.182443
    0.91528
    -0.0337707
    4.68092
    -1.22098
    0.241877
    0.0843247
    1.51347
    valeur contenu ds le tableau après avoir recharger.
    0.182443
    0.91528
    -0.0337707
    0.68092
    -1.22098
    0.241877
    0.0843247
    0.51347

    voici le code:
    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
     
    void CBackProp::saveWeight(char * filename){
     
    	int i,j,k;
    	ofstream sypnaOutfile(filename, ios::out | ios::binary);
    	if(!sypnaOutfile){
    		    	cout<<"Impossible de créer le fichier"<<endl;
    		    	exit(-1);
    	}
    	for(i=1;i<3;i++)
    	        	for(j=0;j<lsize[i];j++)
    	        	 	for(k=0;k<lsize[i-1]+1;k++){
    	        	 		sypnaOutfile << weight[i][j][k];
    	        	 		// weight[i][j][k]= (double)(rand())/(RAND_MAX/2) - 1;//32767
    	        	 		//fichier >> weight[i][j][k];
    	        	 		//outFile <<val;
    	        	 		//cout<<weight[i][j][k]<<endl;
    	        	 	}       
    }
     
     
     
    void CBackProp::loadWeight(char * filename){
     
    	int i,j,k;
    	ifstream sypnaInfile(filename, ios::in | ios::binary);
    	if(!sypnaInfile){
    	    	cout<<"Le fichier d'entrée n'existe pas"<<endl;
    	    	exit(-1);
    	}
    	for(i=1;i<3;i++)
    	        	for(j=0;j<lsize[i];j++)
    	        	 	for(k=0;k<lsize[i-1]+1;k++){
    	        	 		sypnaInfile >> weight[i][j][k];
    	        	 		// weight[i][j][k]= (double)(rand())/(RAND_MAX/2) - 1;//32767
    	        	 		//fichier >> weight[i][j][k];
    	        	 		//outFile <<val;
    	        	 		cout<<weight[i][j][k]<<endl;
    	        	 	}	         
    }
    j'aimerai savoir d'ou vien le Problème.
    merci d'avance.
    "le temps c'est le meilleur des médécins, peut être aussi le meilleur des assassins" Bernis-Francine

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Et en supprimant ios::binary?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ofstream sypnaOutfile(filename, ios::out);
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ifstream sypnaInfile(filename, ios::in);

  3. #3
    Membre habitué Avatar de fomazou
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Points : 151
    Points
    151
    Par défaut
    malgré la modification j'ai les mêmes problèmes
    "le temps c'est le meilleur des médécins, peut être aussi le meilleur des assassins" Bernis-Francine

  4. #4
    Membre actif
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    189
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 189
    Points : 213
    Points
    213
    Par défaut
    J'ai pas de réponse à ton problème, cependant ceci pourrait t'intéresser : http://www.boost.org/doc/libs/1_39_0...doc/index.html

  5. #5
    Membre habitué Avatar de fomazou
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Points : 151
    Points
    151
    Par défaut qu'es ce qui ce passe

    En mettant un espace après chaque écriture, ça marche et je parviens à avoir de bonne valeurs lorsque je recharge le tableau multidimentionnelle.
    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
    void CBackProp::saveWeight(char * filename){
     
    	int i,j,k;
    	ofstream sypnaOutfile(filename);
    	if(!sypnaOutfile){
    		    	cout<<"Impossible de créer le fichier"<<endl;
    		    	exit(-1);
    	}
    	for(i=1;i<3;i++)
    	        	for(j=0;j<lsize[i];j++)
    	        	 	for(k=0;k<lsize[i-1]+1;k++){
    	        	 		sypnaOutfile << weight[i][j][k]<<" ";
    	        	 		// weight[i][j][k]= (double)(rand())/(RAND_MAX/2) - 1;//32767
    	        	 		//fichier >> weight[i][j][k];
    	        	 		//outFile <<val;
    	        	 		//cout<<weight[i][j][k]<<endl;
    	        	 	}   
    	sypnaOutfile.close();
    }
    l'autre fonction reste inchangé. Mais j'ai besoin de conprendre ce qui se passe.
    "le temps c'est le meilleur des médécins, peut être aussi le meilleur des assassins" Bernis-Francine

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Très simple: Si tu écris douze et trois sans les séparer avec un espace, tu obtiens "123" --> Problème pour lire.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre habitué Avatar de fomazou
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Points : 151
    Points
    151
    Par défaut
    medidoc
    Très simple: Si tu écris douze et trois sans les séparer avec un espace, tu obtiens "123" --> Problème pour lire.
    point de vu humain le probleme est clair comme tu le dis.
    mais je ne pense pas que la machine lise ainsi.
    "le temps c'est le meilleur des médécins, peut être aussi le meilleur des assassins" Bernis-Francine

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Les opérateurs d'insertion et d'extraction de flux font des conversion en texte, donc oui, la machine lit ainsi si tu les utilises.

    Si tu avais fait un fichier de données brutes à la place, il en serait différemment.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/11/2007, 07h32
  2. chargement d'un combobox à partir d'un fichier text
    Par claire_cartier dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 09/04/2007, 14h45
  3. Chargement d'un combobox à partir d'un fichier text
    Par claire_cartier dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 04/04/2007, 10h04
  4. [SQL] Comment récupérer des champs a partir d'un fichier de sauvegarde?
    Par baguira dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/03/2007, 18h23
  5. [MFC] sauvegarde et chargement de fichiers
    Par Aradesh dans le forum MFC
    Réponses: 5
    Dernier message: 31/03/2005, 11h21

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