Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Napisati program na programskom jeziku C koji
- vrši određenu obradu nad dinamičkom matricom
- realnih brojeva. Program treba učita dimenzije i
- elemente matrice, a zatim formira novu matricu
- koja sadrži samo one vrste čija je aritmetička
- sredina elemenata veća od aritmetičke sredine
- svih elemenata u polaznoj matrici. Nakon obrade
- ispisati rezultujuću matricu. Voditi računa o
- korektnoj upotrebi dinamičke memorije.
- void* memcpy(void* dest, const void* src, size_t bytes);
- Neophodno je uključiti zaglavlje <string.h>*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main(void) {
- double **mat;
- int m, n;
- scanf("%d%d", &m, &n);
- mat = malloc(m * sizeof(*mat));
- if(!mat) {
- printf("Error\n"); exit(1);
- }
- double as = 0;
- for(int i=0; i<m; i++) {
- mat[i] = malloc(n * sizeof(**mat));
- if(!mat[i]) {
- printf("Error\n"); exit(1);
- }
- for(int j=0; j<n; j++) {
- scanf("%lf", mat[i] + j);
- as += mat[i][j];
- }
- }
- if(as)
- as /= (m*n);
- printf("as: %.2f\n", as);
- double **as_mat;
- as_mat = malloc(m * sizeof(*as_mat));
- if(!as_mat) {
- printf("Error\n");
- exit(1);
- }
- int as_vrs = 0;
- for(int i=0; i<m; i++) {
- double as_red = 0;
- for(int j=0; j<n; j++)
- as_red += mat[i][j];
- if(as_red)
- as_red /= n;
- if(as_red > as) {
- as_mat[as_vrs]=malloc(n*sizeof(**mat));
- if(!as_mat[as_vrs]) {
- printf("Error\n"); exit(1);
- }
- memcpy(as_mat[as_vrs],
- mat[i], n * sizeof(*mat[i]));
- as_vrs++;
- }
- }
- as_mat=realloc(as_mat, as_vrs*sizeof(*as_mat));
- if(!as_mat) {
- printf("Error\n"); exit(1);
- }
- for(int i=0; i<m; i++) {
- free(mat[i]);
- if(i < as_vrs) {
- for(int j=0; j<n; j++)
- printf("%.2f ", as_mat[i][j]);
- putchar('\n');
- free(as_mat[i]);
- }
- }
- free(mat);
- free(as_mat);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement