Advertisement
Guest User

p4

a guest
Dec 9th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. //Rezolvaþi problema 3. cu referire la o matrice de numere întregi. Observaþi specificul lucrului cu alocare staticã, respectiv dinamicã. Scrieþi variante în care sã memoraþi/sã nu memoraþi în fiºiere ºi dimensiunile matricei - numãr de linii ºi de coloane sau numãr total de elemente. Solicitaþi îndrumare din partea cadrelor didactice care coordoneazã laboratorul!.
  5. // matrice. alocare dinamica. numar de elemente in fisier( numar de linii, coloane in fisier) + Fisier Text si Fisier Binar
  6. int main()
  7. {
  8.     int i,j,n,m,*v,a;
  9.     FILE  *f,*g;
  10.     char *fn="file4a.txt",*gn="file4b.txt";
  11.  
  12.     if( (f=fopen(fn,"w"))==NULL ){
  13.         perror(fn);
  14.         return EXIT_FAILURE;
  15.     }
  16.  
  17.     printf("dati numarul de linii ale matricei: ");
  18.     scanf("%d",&n);
  19.     fprintf(f,"%d ",n);
  20.  
  21.     printf("dati numarul de coloane ale matricei: ");
  22.     scanf("%d",&m);
  23.     fprintf(f,"%d\n",m);
  24.  
  25.     v=(int*)malloc(sizeof(int)*n*m);
  26.  
  27.      for(i=0;i<n;i++)
  28.         {
  29.             for(j=0;j<m;j++)
  30.             {
  31.                 printf("v[%d][%d]= ",i,j);
  32.                 scanf("%d",v+i*m+j);
  33.                 fprintf(f,"%d ",*(v+i*m+j));
  34.             }
  35.             fprintf(f,"\n");
  36.         }
  37.  
  38.     fclose(f);
  39.  
  40.       if( (f=fopen(fn,"r"))==NULL ){
  41.         perror(fn);
  42.         return EXIT_FAILURE;
  43.     }
  44.  
  45.  
  46.     fscanf(f,"%d%d",&n,&m);
  47.  
  48.     printf("\nMatricea din fisierul text:\n");
  49.     printf("Numarul de linii: %d\nNumarul de coloane: %d\n",n,m);
  50.  
  51.     for(i=0;i<n;i++)
  52.     {
  53.         for(j=0;j<m;j++){
  54.         fscanf(f,"%d",&a);
  55.         printf("%d ",a);
  56.     }
  57.     printf("\n");
  58.  
  59.     }
  60.  
  61.  
  62.    fclose(f);
  63.  
  64.   ///////////////////////////////////////////////
  65.  
  66.  
  67.     if((g=fopen(gn,"wb"))==NULL){
  68.         perror(gn);
  69.         return EXIT_FAILURE;
  70.     }
  71.  
  72.     printf("dati numarul de linii ale matricei: ");
  73.     scanf("%d",&n);
  74.     fwrite(&n,sizeof(int),1,g);
  75.  
  76.     printf("dati numarul de coloane ale matricei: ");
  77.     scanf("%d",&m);
  78.     fwrite(&m,sizeof(int),1,g);
  79.  
  80.    v=(int*)realloc(v,sizeof(int)*n*m);
  81.  
  82.     for(i=0;i<n;i++)
  83.         {
  84.             for(j=0;j<m;j++){
  85.                 printf("v[%d][%d]= ",i,j);
  86.                 scanf("%d",v+i*m+j);
  87.                 fwrite(v+i*m+j,sizeof(int),1,g);
  88.             }
  89.            // fwrite(&spatiere,sizeof(char),sizeof(spatiere),g);
  90.         }
  91.  
  92.     fclose(g);
  93.  
  94.     if((g=fopen(gn,"rb"))==NULL){
  95.         perror(gn);
  96.         return EXIT_FAILURE;
  97.     }
  98.  
  99.     fread(&n,sizeof(int),1,g);
  100.     fread(&m,sizeof(int),1,g);
  101.  
  102.        printf("\nMatricea citita din fisierul binar: \n");
  103.     printf("nr de linii: %d\nnr de coloane: %d\n",n,m);
  104.  
  105.     for(i=0;i<n;i++)
  106.     {for(j=0;j<m;j++){
  107.         fread(&a,sizeof(int),1,g);
  108.         printf("%d ",a);
  109.     }
  110.     printf("\n");
  111.     }
  112.  
  113.     fclose(g);
  114.  
  115.     return 0;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement