Advertisement
KvArt

memcpy upotreba

Jul 12th, 2022
666
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.67 KB | None | 0 0
  1. /*Napisati program na programskom jeziku C koji
  2. vrši određenu obradu nad dinamičkom matricom
  3. realnih brojeva. Program treba učita dimenzije i
  4. elemente matrice, a zatim formira novu matricu
  5. koja sadrži samo one vrste čija je aritmetička
  6. sredina elemenata veća od aritmetičke sredine
  7. svih elemenata u polaznoj matrici. Nakon obrade
  8. ispisati rezultujuću matricu. Voditi računa o
  9. korektnoj upotrebi dinamičke memorije.
  10. void* memcpy(void* dest, const void* src, size_t bytes);
  11. Neophodno je uključiti zaglavlje <string.h>*/
  12.  
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include <string.h>
  16. int main(void) {
  17. double **mat;
  18. int m, n;
  19. scanf("%d%d", &m, &n);
  20. mat = malloc(m * sizeof(*mat));
  21. if(!mat) {
  22. printf("Error\n"); exit(1);
  23. }
  24. double as = 0;
  25. for(int i=0; i<m; i++) {
  26. mat[i] = malloc(n * sizeof(**mat));
  27. if(!mat[i]) {
  28. printf("Error\n"); exit(1);
  29. }
  30. for(int j=0; j<n; j++) {
  31. scanf("%lf", mat[i] + j);
  32. as += mat[i][j];
  33. }
  34. }
  35. if(as)
  36. as /= (m*n);
  37. printf("as: %.2f\n", as);
  38. double **as_mat;
  39. as_mat = malloc(m * sizeof(*as_mat));
  40. if(!as_mat) {
  41. printf("Error\n");
  42. exit(1);
  43. }
  44. int as_vrs = 0;
  45. for(int i=0; i<m; i++) {
  46. double as_red = 0;
  47. for(int j=0; j<n; j++)
  48. as_red += mat[i][j];
  49. if(as_red)
  50. as_red /= n;
  51. if(as_red > as) {
  52. as_mat[as_vrs]=malloc(n*sizeof(**mat));
  53. if(!as_mat[as_vrs]) {
  54. printf("Error\n"); exit(1);
  55. }
  56. memcpy(as_mat[as_vrs],
  57. mat[i], n * sizeof(*mat[i]));
  58. as_vrs++;
  59. }
  60. }
  61. as_mat=realloc(as_mat, as_vrs*sizeof(*as_mat));
  62. if(!as_mat) {
  63. printf("Error\n"); exit(1);
  64. }
  65. for(int i=0; i<m; i++) {
  66. free(mat[i]);
  67. if(i < as_vrs) {
  68. for(int j=0; j<n; j++)
  69. printf("%.2f ", as_mat[i][j]);
  70. putchar('\n');
  71. free(as_mat[i]);
  72. }
  73. }
  74. free(mat);
  75. free(as_mat);
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement