Comment sauvegarder une matrice sous fichier et la racharger qu'on veut??

Signaler
Messages postés
3
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
5 novembre 2004
-
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
-
salut tt le monde j'aimerais bien que qqn puisse m'aider sur le sujet que j'ai posais d'avance merci en core
A voir également:

10 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
1
Pour une matrice x*y c'est pas très compliqué.
Tu lis ta matrice selon les abscisse et les ordonnés et tu stoques les valeurs au fur et a mesure dans le fichier:

FILE *fp;
int mat[10][10];
int i;
int j;

//Tu initialises ta matrice avec les valeurs souhaitées.
[...]

//On ouvre le fichier en écriture.
fp = fopen("c:\\monfichier.txt","w+t");

for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
fprintf(fp,"%i ", mat[i][j]);
}
fprintf(fp," \n");
}


Le code d'écriture ressemble a ca a quelques choses pret.

Shell
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
vi.
Mais si la vitesse est importante dans ton prog, évites le
mat[10][10]
Mieux vaut un mat[10*10]
c'est beaucoup plus rapide
(et en plus dans ce cas t'as pas besoin d'imbriquer les for())
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
1
Niveau rapidité ya quand meme mieux que ta solution.
Avec une matrice [x*y], tu va devoir a chaque ligne appellé y fois strcat pour concaténér les valeurs et e ajouter au final a la matrice, et je doute que se soit plus rapide que d'utiliser une matrice [x][y].

Shell
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
???pourquoi ca???
qu'est ce que strcat a a voit la dedans? c'est des nombres non?
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
1
Dans mon exemple oui mais dans son cas on n'en sait rien!
Puis j'aimerais bien que tu me montres un exemple avec ta matrice [x*y] si c'est vraiment plus rapide.

J'en profite au passage pour te rappeler qu'il souhaite stoquer les valeurs dans un fichier puis les récuperer.
Pour la récupération ta méthode lui poserai pas mal de problème.

Shell
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
ben non...
bon en fait c'est vrai que dans cet exemple ya pas vraiement besoin de se compliquer la vie comme ca, c'est surtout dans la manipulation dee matrices 3d que c'est utile, car plus rapide (tre) de faire
if (mat[16]==....
que
if (mat[4][4]...
ici pour récupérer la valeur il aurait pu faire une macro...
mat[a][b] == mat[a*largeur+b]
c'est exactement la méthode utilisée par windows si je ne m'abuse. (et si je ne me sui pas gourré dans la formule, mais je crois que c'est ca)
Messages postés
3
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
5 novembre 2004

salut tt le monde j'aimerais bien eclaircir qq chose je travail sous c++ builder je voudrais sauvegarder des vecteur de 48 elements dans un fichier pour pouvoir les recupere plutard et les comparere avec d'autre vecteur que j'aurais au cour de mon processus,je travail sur la classification des empreintes digitales ces vecteurs la constiiturons une ptite base donne pour se referer dans cette classification
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
tu peux donner ta class vecteur please?
Messages postés
3
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
5 novembre 2004

je ne sais ce que tu voulais dire par classe mais c un stringgrid de 4*48
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
je comprend pas (moi non plus)

pour ouvrir un fichier:
FILE *fp;
fp = fopen("c:\\monfichier.txt","w+t");

pour écrire une valeur:
fprintf(fp,"%i ", ma_valeur);// pour un entier

pour lire une valeur qui se trouve juste apres celle que tu as LUE en dernier (ou la premiere si t'as encore rien lu)
fscanf(fp,"%i", &ma_valeur);//pour un entier.

pour fermer le ficier qd t'en as plus besoin
fclose(fp);

"w+t" est une sorte de flag, ya plusieurs possibilités, cherches fopen sur google.

tu peux remplacer "%i" par ce que tu veux, genre: "%i %s %d \n" (un entier, une chaine dee caracteres, un float, un retour a la ligne)