fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. float **allocate_mem_m(int m, int n)
  6. {
  7. int i;
  8. float **arr = malloc(n*sizeof(*arr));
  9. for(i=0;i<n;i++)
  10. {
  11. arr[i]=malloc(m*sizeof(**arr));
  12. }
  13. return arr;
  14. }
  15.  
  16. void free_mem_m(int m, float **array) {
  17. int i;
  18. for (i = 0; i < m; i++) {
  19. free(array[i]);
  20. }
  21. free(array);
  22. }
  23.  
  24. float **transpose(int m, int n, float Xy[]) {
  25. int i,j;
  26. float **result = allocate_mem_m(m,n);
  27. for(i = 0; i < m; i++) {
  28. for(j = 0; j < n; j++) {
  29. result[i][j] = Xy[j*n+i];
  30. }
  31. }
  32. return result;
  33. }
  34.  
  35. int main(void) {
  36. float Xy[3][3] = { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 } };
  37. float **transposed = transpose(3, 3, &Xy[0][0]);
  38. int i, j;
  39. for (i = 0; i < 3; i++)
  40. for (j = 0; j < 3; j++)
  41. printf("%f ", transposed[i][j]);
  42. printf("\n");
  43. free_mem_m(3, transposed);
  44. return 0;
  45. }
  46.  
  47.  
Success #stdin #stdout 0s 2380KB
stdin
Standard input is empty
stdout
0.000000 3.000000 6.000000 1.000000 4.000000 7.000000 2.000000 5.000000 8.000000