fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct matrix{
  5. double **data;
  6. int lines;
  7. int columns;
  8. }matrix;
  9.  
  10. // Returns an empty matrix ready for use. Should be called in every matrix initialization;
  11. matrix emptyMatrix()
  12. {
  13. matrix var;
  14.  
  15. var.data = NULL;
  16. var.lines = 0;
  17. var.columns = 0;
  18.  
  19. return var;
  20. }
  21.  
  22. // Starts a matriz by dynamic allocation
  23. matrix startMatrix(int lin, int col)
  24. {
  25. matrix var;
  26.  
  27. // Make the atribuition of the matrix lines and columns size
  28. var.lines = lin;
  29. var.columns = col;
  30.  
  31. // Starts the matrix lines
  32. var.data = (double **) malloc( lin * sizeof(double *) );
  33.  
  34. for(int i = 0 ; i < lin ; i++)
  35. {
  36. *(var.data + i) = (double *) malloc( col * sizeof(double) );
  37. }
  38.  
  39. return var;
  40.  
  41. }
  42.  
  43. // Frees the dynamically allocated memory
  44. void endMatrix(matrix mat)
  45. {
  46. for(int i = 0 ; i < mat.lines ; i++)
  47. {
  48. free( *(mat.data + i) );
  49. }
  50.  
  51. free( mat.data );
  52.  
  53. mat.lines = 0;
  54. mat.columns = 0;
  55.  
  56. return;
  57. }
  58.  
  59. int main()
  60. {
  61. matrix var = emptyMatrix();
  62.  
  63. var = startMatrix(3, 3);
  64.  
  65. for(int i = 0 ; i < var.lines ; i++)
  66. for(int j = 0 ; j < var.columns ; j++)
  67. var.data[i][j] = i+j;
  68.  
  69.  
  70. for(int i = 0 ; i < var.lines ; i++)
  71. {
  72. for(int j = 0 ; j < var.columns ; j++)
  73. printf("%lf ", var.data[i][j]);
  74.  
  75. putchar('\n');
  76. }
  77.  
  78. endMatrix(var);
  79.  
  80. return 0;
  81. }
Success #stdin #stdout 0s 5296KB
stdin
Standard input is empty
stdout
0.000000 1.000000 2.000000 
1.000000 2.000000 3.000000 
2.000000 3.000000 4.000000