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++Builder Discussion :

Sauvegarder une matrice


Sujet :

C++Builder

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1
    Par défaut Sauvegarder une matrice
    Bonjour à tous,
    néofite en programmation C++ Builder, j'ai un souci . Voila, je n'arrive pas sauvegarder une matrice M*N avec la fonction fwrite. après un fopen voila ce que je fais sauvegarder ma matrice:
    fwrite(&U,1,sizeof(U),U_n);

    Mon programme compile et à l'exécution il m'affiche comme message d'erreur:
    "Violation d'accès à l'adresse 32566645 dans le module 'cc3250MT'. ..."
    Quelqu'un sait-il comment je peux lever ce souci?
    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Comment souhaite tu sauvegarder ta matrice?
    Dans un fichier type texte?
    Sous quelle forme est ta matrice?

  3. #3
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Voici un exemple de sauvegarde dans un fichier type texte :

    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
     
    //déclaration d'une matrice 10*5  
      int tab[10][5] ;
      AnsiString tmp ;
     
    //Remplissage de la matrice avec des valeurs (ici l'exemple de ligne*colonne)
      for( int i=0; i<10; i++ )
      {
         for( int j=0;j<5; j++ )
         {
           tab[i][j] = (i*j)  ;
         }
      }
     
    //Sauvegarde de la matrice
      TStringList *l = new TStringList() ;
      for( int i=0; i<10; i++ )
      {
         tmp = IntToStr( tab[i][0] ) ;
         for( int j=1; j<5; j++ )
         {
           tmp = tmp + ";" + IntToStr( tab[i][j] ) ; //séparateur utilisé ';'
         }
         l->Add( tmp ) ;
      }
      l->SaveToFile( "D:\\MATRIX.txt" ) ;
      delete l;
    */
    Dans cet exemple tu obtiendra un fichier du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    0;0;0;0;0
    0;1;2;3;4
    0;2;4;6;8
    0;3;6;9;12
    0;4;8;12;16
    0;5;10;15;20
    0;6;12;18;24
    0;7;14;21;28
    0;8;16;24;32
    0;9;18;27;36
    Je ne sais pas si c'est ce que tu cherchais...

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Si tu souhaites sauvegarder le contenu de la matrice, le mieux est de la monter à partir d'un tableau [M * N].

    a) statique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int Tableau[M * N];
    int *Matrice[M];
     
    //Construction de la matrice
    for(int j = 0; j < M; j++) Matrice[j] = &Tableau[j * N];
    b) dynamique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int *Tableau = new int[M * N];
    int **Matrice = new int*[M];
     
    //Construction de la matrice (même principe qu'en statique)
    for(int j = 0; j < M; j++) Matrice[j] = &Tableau[j * N];
     
    //Pour libérer la mémoire (donc seulement pour la solution dynamique) 
    delete [] Tableau;
    delete [] Matrice;
    Dans les deux cas, l'accès se rédige normalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int n = Matrice[m][n];
    Au niveau du fichier, c'est le Tableau qu'il faut traiter.
    Il se présente en effet comme un bloc mémoire compacte.
    La Matrice quant à elle, n'est qu'un tableau de segments.

    Que ce soit en statique ou en dynamique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //---- enregistrement
    fwrite(Tableau, M * N * sizeof(int), 1, File);
    //---- lecture
    fread(Tableau, M * N * sizeof(int), 1, File);
    A plus !

Discussions similaires

  1. sauvegarder une matrice au format txt ou csv
    Par Djeu Kuru dans le forum MATLAB
    Réponses: 2
    Dernier message: 03/04/2013, 14h56
  2. sauvegarder une matrice en hexadécimal
    Par mimiza dans le forum MATLAB
    Réponses: 6
    Dernier message: 28/10/2012, 21h50
  3. Réponses: 3
    Dernier message: 04/10/2012, 15h12
  4. Comment sauvegarder une matrice créée sous Numpy
    Par zappa37 dans le forum Général Python
    Réponses: 3
    Dernier message: 03/09/2008, 15h09
  5. sauvegarder une matrice sur un fichier texte
    Par soujava dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 06/05/2008, 13h51

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