fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct
  5. {
  6. size_t rows,cols;
  7. double *data;
  8. } Matrix;
  9.  
  10. Matrix makeMatrix(size_t rows,size_t cols)
  11. {
  12. Matrix m={rows,cols,0};
  13. m.data=(double*)malloc(rows*cols*sizeof(double));
  14. return m;
  15. }
  16.  
  17. double *valueMatrix(Matrix *m,size_t r,size_t c)
  18. {
  19. return &m->data[r*m->cols+c];
  20. }
  21.  
  22. void showMatrix(Matrix *m)
  23. {
  24. size_t r,c;
  25. for(r=0;r<m->rows;++r,printf("\n")) for(c=0;c<m->cols;++c) printf("\t%7.2lf"+!c,*valueMatrix(m,r,c));
  26. }
  27.  
  28. void scanMatrix(Matrix *m)
  29. {
  30. size_t r,c;
  31. for(r=0;r<m->rows;++r) for(c=0;c<m->cols;++c) scanf("%lf",valueMatrix(m,r,c));
  32. }
  33.  
  34. void freeMatrix(Matrix *m)
  35. {
  36. free(m->data);
  37. memset(m,sizeof(Matrix),0);
  38. }
  39.  
  40. int main()
  41. {
  42. Matrix m=makeMatrix(3,4);
  43. scanMatrix(&m);
  44. showMatrix(&m);
  45. freeMatrix(&m);
  46. return 0;
  47. }
Success #stdin #stdout 0s 5704KB
stdin
1 2 3 4
3 4 5 6
5 6 7 8
stdout
   1.00	   2.00	   3.00	   4.00
   3.00	   4.00	   5.00	   6.00
   5.00	   6.00	   7.00	   8.00