Advertisement
filip710

2016KOL1_Z3_GRUPA C

Jul 6th, 2016
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.26 KB | None | 0 0
  1. /* Napisite C program koji ce omoguciti unos elemenata kvadratne 2D matrice.
  2.  * Memoriju za matricu alocirati dinamicki. Ako je matrica dimenzija NxN,
  3.  * zamislite da je matrica podjeljena horizontalno po pola (prvih N/2
  4.  * redova pripadaju gornjoj polumatrici, a drugih N/2 redova donjoj polumatrici).
  5.  *
  6.  * Vas program treba ispisati sumu svih elemenata matrice koji su veći od
  7.  * prosječne vrijednosti elemenata polumatrice u kojoj se nalaze.  
  8.  *
  9.  * Kod razdvojiti u funkcije čije će implementacije biti u functions.c, a
  10.  * deklaracije funkcija u functions.h
  11.  * Vas program mora imati minimalno 3 funkcije:
  12.  *
  13.  * void printMatrix(float **M, int n);
  14.  * void inputMatrix(float **M, int n);
  15.  * float findSum(float **M, int n);
  16.  *
  17.  * funkcija printMatrix() ispisuje cijelu matricu na ekran
  18.  * funkcija inputMatrix() učitava podatke s tipkovnice u matricu
  19.  * funkcija findSum() pronalazi sumu svih onih elemenata matrice čija je vrijednost
  20.  * veća od prosječne vrijednosti polumatrice u kojoj se nalaze.
  21.  *
  22.  * Deklaracije ovih funkcija su vec postavljene u functions.h datoteku. Iz main
  23.  * funkcije trebate pozvati ove funkcije. Ispis rezultata odraditi u formatu:
  24.  * printf("REZULTATI:\n%.2f", suma_koju_je_vratila_funkcija_findSum);
  25.  *
  26.  * Ulaz u program su: jedan cijeli broj koji predstavlja broj redaka i stupaca
  27.  * kvadratne matrice, nakon cega ulaze vrijednosti elemenata matrice, svaki u svom redu.
  28.  *
  29.  * VPL ne provjerava ispis matrice, ali tu funkciju isto morate implementirati
  30.  * i pozvati ju iz maina kako bi ispisali učitanu matricu.  
  31.  */
  32.  
  33. //PROGRAM.C
  34. #include"functions.h"
  35. #include<stdio.h>
  36. #include<stdlib.h>
  37. int main()
  38. {
  39.     float **M;
  40.     int i, j, n, m;
  41.    
  42.     scanf("%d", &n);
  43.    
  44.     M=(float**)malloc(n*sizeof(float*));
  45.     for(i=0;i<n;i++)
  46.     {
  47.         *(M+i)=(float*)malloc(n*sizeof(float));
  48.     }
  49.     inputMatrix(M, n);
  50.    
  51.     printMatrix(M, n);
  52.  
  53.     printf("REZULTATI:\n%.2f", findSum(M, n));
  54.    
  55.     return 0;    
  56. }
  57.  
  58. //HEADER
  59. #ifndef FUNCTIONS_H
  60. #define FUNCTIONS_H
  61.  
  62. void printMatrix(float **M, int n);
  63. void inputMatrix(float **M, int n);
  64. float findSum(float **M, int n);
  65.  
  66. #endif
  67.  
  68. //FUNKCIJE
  69. #include"functions.h"
  70. #include<stdio.h>
  71. #include<stdlib.h>
  72.  
  73. void inputMatrix(float **M, int n)
  74. {
  75.     int i, j;
  76.     for(i=0;i<n;i++)
  77.     {
  78.         for(j=0;j<n;j++)
  79.         {
  80.             scanf("%f", &M[i][j]);
  81.         }
  82.     }
  83. }
  84. void printMatrix(float **M, int n)
  85. {
  86.     int i, j;
  87.     for(i=0;i<n;i++)
  88.     {
  89.         for(j=0;j<n;j++)
  90.         {
  91.             printf("%.2f\t", M[i][j]);
  92.         }
  93.         printf("\n");
  94.     }
  95. }
  96. float findSum(float **M, int n)
  97. {
  98.     int i, j;
  99.     float uppersum=0, lowersum=0, sum=0;
  100.    
  101.     for(i=0;i<n/2;i++)
  102.     {
  103.         for(j=0;j<n;j++)
  104.         {
  105.             uppersum+=M[i][j];
  106.         }
  107.     }
  108.    
  109.     for(i=n/2;i<n;i++)
  110.     {
  111.         for(j=0;j<n;j++)
  112.         {
  113.             lowersum+=M[i][j];
  114.         }
  115.     }
  116.    
  117.     uppersum/=(n/2)*n;
  118.     lowersum/=(n/2)*n;
  119.    
  120.     for(i=0;i<n/2;i++)
  121.     {
  122.         for(j=0;j<n;j++)
  123.         {
  124.             if(M[i][j]>uppersum) sum+=M[i][j];
  125.         }
  126.     }
  127.    
  128.     for(i=n/2;i<n;i++)
  129.     {
  130.         for(j=0;j<n;j++)
  131.         {
  132.             if(M[i][j]>lowersum) sum+=M[i][j];
  133.         }
  134.     }
  135.     return sum;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement