C++ : mettre un tableau 2D dans un fichier
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

C++ : mettre un tableau 2D dans un fichier



  1. #1
    julien_4230

    C++ : mettre un tableau 2D dans un fichier


    ------

    Bonjour,

    Je n'arrive absolument pas à stocker un tableau 2D dans un fichier en C++. Voici mon sous-script : mon tableau (" donnees ") est un tableau 100*100

    pff = fopen ("data/matrice.dat", "wt");
    for (i=0;i<100;i++) {
    fwrite (donnees[i],sizeof(int),100,pff);
    }
    fclose (pff);

    Sinon j'ai essayé cela :

    pff = fopen ("data/matrice.dat", "wt");
    for (i=0;i<100;i++) {
    for (j=0;j<100;j++) {
    fwrite (&donnees[i][j],sizeof(int),1,pff);
    }
    }
    fclose (pff);

    Mais une fois le fichier téléchargé dans R, j'obtiens n'importe quoi : autant de colonnes que de chiffres...

    Je ne sais vraiment pas comment faire...

    Merci de votre aide !

    -----

  2. #2
    julien_4230

    Re : C++ : mettre un tableau 2D dans un fichier

    Pardon pour le deuxième essaie c'est plutôt cela que j'ai essayé :

    pff = fopen ("data/matrice.dat", "wt");
    for (i=0;i<nrow(donnees);i++) {
    for (j=0;j<ncol(donnees);j++) {
    if(j!=(ncol(donnees)-1)) {fprintf (pff, "%d ", donnees[i][j]);}
    else {fprintf (pff, "%d\n", donnees[i][j]);}
    }
    }
    fclose (pff);

  3. #3
    julien_4230

    Re : C++ : mettre un tableau 2D dans un fichier

    Et je me rends compte que ce dernier essaie est bon... mais n'y a-t-il pas plus optimal ???

  4. #4
    kwariz

    Re : C++ : mettre un tableau 2D dans un fichier

    Bonjour,

    ça dépend ce que tu entends pas optimisé. La portion que tu donnes (PENSE AUX BALISES CODE !!!) est un code des plus classiques en C, un code C++ utiliserait plus les iostream sans doute.
    Si par optimisé tu entends «obtenir la même chose en tapant moins de code» alors la réponse est non en C. Tu peux juste éviter ton if pour le saut à ligne :
    Code:
    pff = fopen ("data/matrice.dat", "wt");
    for (i=0;i<nrow(donnees);i++) {
     for (j=0;j<ncol(donnees);j++)
       fprintf (pff, "%d ", donnees[i][j]);
     fprintf(pff,"\n");
    }
    fclose (pff);

  5. A voir en vidéo sur Futura
  6. #5
    julien_4230

    Re : C++ : mettre un tableau 2D dans un fichier

    Ah en effet ! Merci bien !
    J'aurais d'autres questions en C++... Par exemple :

    J'ai trouvé sur gsl library de trouver les vecteurs propres et valeurs propres d'une matrice, mais je ne sais même pas vérifier la décomposition en vecteurs propres... Je me demande si c'est possible ? Voici une tentative de code pour faire cela :

    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    #include <cmath>

    #include <gsl/gsl_rng.h>
    #include <gsl/gsl_math.h>
    #include <gsl/gsl_randist.h>
    #include <gsl/gsl_eigen.h>
    #include <gsl/gsl_blas.h>

    using namespace std ;

    int
    main (void)
    {
    double data[] = { 1.0 , 1/2.0, 1/3.0, 1/4.0,
    1/2.0, 1/3.0, 1/4.0, 1/5.0,
    1/3.0, 1/4.0, 1/5.0, 1/6.0,
    1/4.0, 1/5.0, 1/6.0, 1/7.0 };

    gsl_matrix_view m
    = gsl_matrix_view_array (data, 4, 4);

    gsl_vector *eval = gsl_vector_alloc (4);
    gsl_matrix *evec = gsl_matrix_alloc (4, 4);

    gsl_eigen_symmv_workspace * w =
    gsl_eigen_symmv_alloc (4);

    gsl_eigen_symmv (&m.matrix, eval, evec, w);

    gsl_eigen_symmv_free (w);

    gsl_eigen_symmv_sort (eval, evec,
    GSL_EIGEN_SORT_ABS_ASC);

    {
    int i;

    for (i = 0; i < 4; i++)
    {
    double eval_i = gsl_vector_get (eval, i);
    gsl_vector_view evec_i = gsl_matrix_column (evec, i);

    // cout << "eigenvalue = " << eval_i << "\n" ;
    cout << evec_i.vector << "\n";
    // gsl_vector_fprintf (stdout, &evec_i.vector, "%g");
    }
    }



    // double data2[4][4];

    // for (i=0; i<4 ; i++) {
    // for (j=0 ; j<4 ; j++) {
    // for (k=0 ; k<4 ; k++) {
    // data2[i][j] += eval_i *

    gsl_vector_free (eval);
    gsl_matrix_free (evec);

    return 0;
    }


    Bon sang, qu'est-ce qui ne va pas, damn it ?

    Merci à vous.

    inspiré de :
    http://www.gnu.org/software/gsl/manu...-Examples.html
    Dernière modification par julien_4230 ; 29/11/2012 à 19h42.

Discussions similaires

  1. Peut on tout mettre dans des fonctions (fichier.c)
    Par frequi1 dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 01/11/2012, 19h15
  2. Mettre plusieurs fichier c dans un même programme
    Par krimo-30 dans le forum Électronique
    Réponses: 4
    Dernier message: 25/05/2011, 08h20
  3. Un fichier dans un tableau
    Par invite437271c3 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 09/11/2010, 17h02
  4. mettre une ligne en commentaire dans un fichier toto.ini
    Par abracadabra75 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 02/07/2010, 09h40
  5. comment mettre un .bat et un .exe dans un seul fichier
    Par chatelot16 dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 31/12/2007, 15h21