fork download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. #define FOR(i, end) for ((i) = 0; (i) < (end); ++(i))
  5.  
  6. float **utworz_macierz(int w, int k)
  7. {
  8. float **m;
  9. int i;
  10. m = (float **) malloc(w * sizeof(float*));
  11. if(m == NULL) return NULL;
  12. for(i=0 ; i<w ; i++)
  13. {
  14. m[i] = (float *) malloc(k *sizeof(float));
  15. if(m[i]==NULL)
  16. {
  17. /* sprzatanie juz przydzielonej pamieci */
  18. zwolnij_macierz(m,i);
  19. return NULL;
  20. }
  21. }
  22. return m;
  23. }
  24.  
  25. void wyswietl_macierz(float **m,int w,int k)
  26. {
  27. int i,j;
  28. for(i=0 ; i<w ; i++)
  29. {
  30. for(j=0 ; j<k ; j++)
  31. printf(" %6.1f", *(*(m+i)+j) );
  32. printf("\n");
  33. }
  34. }
  35.  
  36. float** wczytaj_macierz(float **m,int w,int k)
  37. {
  38. int i,j;
  39. for(i=0 ; i<w ; i++)
  40. {
  41. for(j=0 ; j<k ; j++)
  42. {
  43. printf(" [%d,%d] = ", i,j);
  44. scanf("%f",*(m+i)+j);
  45. }
  46. }
  47. return m;
  48. }
  49.  
  50. void zwolnij_macierz(float **m, int w)
  51. {
  52. while(--w > 0) free(*(m+w));
  53. free(m);
  54. }
  55.  
  56. void LiczSrednia( float **m,int w, int k, float srednia, int suma)
  57. {
  58. int i, j;
  59. suma=0;
  60. FOR(i, w)
  61. FOR(j, k)
  62. suma = suma + m[i][j];
  63. srednia = (float ) suma/(w*k);
  64. printf("Suma elementow: %d\n",suma);
  65. printf("Srednia arytmetyczna: %f\n\n",srednia);
  66. }
  67.  
  68. int main(int argc, char** argv)
  69. {
  70. float **m, srednia;
  71. int w, k, suma;
  72. printf("Podaj wymiary macierzy:");
  73. scanf("%d %d",&w,&k);
  74. m = utworz_macierz(w,k);
  75. wyswietl_macierz(wczytaj_macierz(m,w,k),w,k);
  76. LiczSrednia(m, w, k, srednia, suma);
  77. zwolnij_macierz(m,w);
  78. }
  79.  
Success #stdin #stdout 0s 2292KB
stdin
3 3
1 2 3
4 5 6
7 8 9
stdout
Podaj wymiary macierzy: [0,0] =  [0,1] =  [0,2] =  [1,0] =  [1,1] =  [1,2] =  [2,0] =  [2,1] =  [2,2] =     1.0    2.0    3.0
    4.0    5.0    6.0
    7.0    8.0    9.0
Suma elementow: 45
Srednia arytmetyczna: 5.000000