Advertisement
Mazamin

Trasponi Matrice

Dec 12th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.49 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #define MAX_LEN 32
  5. #define Begin {
  6. #define End }
  7. #define a aarray[i][j]
  8. #define b aarray[j][i]
  9.  
  10. void file_to_matrix(FILE *, int (*)[MAX_LEN], int *, int *);
  11. void matrix_to_file(int (*)[MAX_LEN], int, int, FILE *);
  12. void transpose_matrix(int (*)[MAX_LEN], int, int);
  13.  
  14. main()
  15. Begin
  16.     int array[MAX_LEN][MAX_LEN], rows=0, columns=0;
  17.     FILE * fi, *fo;
  18.     fi=fopen("matrix.dat", "r");
  19.     fo=fopen("matrix_output.dat", "w");
  20.     file_to_matrix(fi, array, &rows, &columns);
  21.     transpose_matrix(array, rows, columns);
  22.     matrix_to_file(array, columns, rows, fo);
  23.     fclose(fi);
  24.     fclose(fo);
  25.     return 0;
  26. End
  27.  
  28. void file_to_matrix(FILE * fp, int (*aarray)[MAX_LEN], int *m, int *n)
  29. Begin
  30.     int j=0;
  31.     char c;
  32.     while(feof(fp)==0)
  33.     Begin
  34.         c=fgetc(fp);
  35.         if(isdigit(c))
  36.         Begin
  37.             aarray[*m][j++]=c-'0';
  38.             ++*n;
  39.         End
  40.         else if(c=='\n')
  41.         Begin
  42.             ++*m;
  43.             j=0;
  44.         End
  45.     End
  46.     ++*m;
  47.     (*n)/=(*m);
  48. End
  49.            
  50. void transpose_matrix(int (*aarray)[MAX_LEN], int m, int n)
  51. Begin
  52.     int i, j;
  53.     for(i=0;i<m;i++)
  54.         for(j=0;j<n;j++)
  55.             (i>=j)?:(a^=b^=a^=b);
  56. End
  57.  
  58. void matrix_to_file(int (*aarray)[MAX_LEN], int m, int n, FILE * fp)
  59. Begin
  60.     int i, j;
  61.     for(i=0;i<m;i++)
  62.     Begin
  63.         for(j=0;j<n;j++)
  64.             fprintf(fp, "%1d\t", aarray[i][j]);
  65.         fprintf(fp, "\n");
  66.     End
  67. End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement