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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int lig;
int col;
double* data;
}Matrice;
Matrice* creerMatrice(int,int);
void saisirMatrice(Matrice*);
void detruireMatrice(Matrice*);
void afficherMatrice(Matrice*);
int sauverMatrice(char*,Matrice*);
Matrice* lireMatrice(char*);
int main(void){
Matrice dim;
Matrice* pointeur;
Matrice* pmat;
char* nom="matrice";
int retour=0;
printf("\n\nVeuillez saisir la dimension de votre matrice(EX: X,Y): ");
scanf("%d,%d",&dim.lig,&dim.col);
pointeur= creerMatrice(dim.lig,dim.col);
saisirMatrice(pointeur);
afficherMatrice(pointeur);
retour= sauverMatrice(nom,pointeur);
if(retour!=1) printf("\n\nErreur en ecriture !");
detruireMatrice(pointeur);
pmat= lireMatrice(nom);
afficherMatrice(pmat);
printf("\n\n");
return 0;
}
Matrice* creerMatrice(int X,int Y){
Matrice* pointeur;
pointeur= (Matrice*)malloc(sizeof(Matrice));
pointeur->lig= X;
pointeur->col= Y;
pointeur->data= (double*)calloc(X*Y,sizeof(double));
return pointeur;
}
void saisirMatrice(Matrice* pointeur){
int i=0;
for(i=0;i<(pointeur->lig*pointeur->col);i++){
printf("\n\nVeuillez saisir l'element[%d]: ",i+1);
scanf("%lf",&pointeur->data[i]);
}
}
void afficherMatrice(Matrice* pointeur){
int i=0;
printf("\n\nVoici un recapitulatif de votre matrice...\n\n");
while(i<pointeur->lig*pointeur->col){
if(i%pointeur->lig!=0){
printf("| %lf |",pointeur->data[i]);
printf("\n");
i++;
}
else {
printf("| %lf |",pointeur->data[i]);
i++;
}
}
}
void detruireMatrice(Matrice* pointeur){
free(pointeur->data);
free(pointeur);
}
int sauverMatrice(char* nom,Matrice* pointeur){
FILE* downStream;
if(!(downStream= fopen(nom,"w+"))){
printf("\nMemoire insuffisante!");
return 0 ;
}
if(fwrite(&pointeur->lig,sizeof(int),1,downStream) !=1) return 0;
if(fwrite(&pointeur->col,sizeof(int),1,downStream) !=1) return 0;
if(fwrite(pointeur->data,sizeof(double),(pointeur->lig*pointeur->col),downStream) !=(pointeur->lig*pointeur->col)) return 0;
fclose(downStream);
return 1;
}
Matrice* lireMatrice(char* nom){
Matrice* pointeur;
FILE* downStream;
if(!(downStream= fopen(nom,"r"))){
printf("\nErreur d'ouverture!");
return 0 ;
}
if(fread(&pointeur->lig,sizeof(int),1,downStream) !=1) printf("\n\nErreur de lecture");
if(fread(&pointeur->col,sizeof(int),1,downStream) !=1) printf("\n\nErreur de lecture");
if(fread(pointeur->data,sizeof(double),(pointeur->lig*pointeur->col),downStream) !=(pointeur->lig*pointeur->col)) printf("\n\nErreur de lecture");
fclose(downStream);
return pointeur;
} |
Partager