Advertisement
AbidK

Vremenska prognoza

Jan 19th, 2018
362
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.24 KB | None | 0 0
  1. /*Uz pomoć matrice realnih brojeva dimenzija 5x7 izraditi program za evidenciju i kalkulaciju uspješnosti
  2. vremenskih prognoza (prosječnih dnevnih temperatura) određenog grada. Redovi matrice predstavljaju
  3. meteorologe čije se prognoze unose, dok se kolone odnose na vremenski period od 7 dana. Uz matricu je
  4. neophodno krerati globalni jednodimenzionalni niz od 7 elemenata koji će čuvati stvarna mjerenja temperatura
  5. za isti vremenski period, a na osnovu kojeg će se procijeniti uspješnost prognoza pojedinih meteorologa.
  6. Vrijednosti elemenata ovog niza prilikom deklaracije postaviti na: 25.5, 26.8, 21, 32, 35.6, 36, 33.5.
  7. Implementaciju programa uraditi pomoću sljedećih funkcija:
  8. • UnesiPrognoze – funkcija za unos prognoza određenog meteorologa za kompletan period od 7 dana.
  9.     Vrijednosti prosječnih temperatura moraju biti unutar intervala [-20, 50] °C.
  10.     (Pojasnjenje: unose se podaci za samo jedan izabrani red. Tako ce se korisniku omoguciti da unese prognoze
  11.     za jednog po jednog meteorologa.)
  12. • IzracunajUspjesnost – funkciju koja vraća procentualnu vrijednost uspješnosti prognoza za željenog meteor
  13.     Prognoza, odnosno prosječna temperatura na određeni dan, smatra se uspješnom ako od stvarnog mjerenja ne
  14.     odstupa više od 5 °C.
  15.     (Pojasnjenje: poredi se podaci iz jednog reda odnosno za jednog meteorologa sa podacima iz posebnog niza
  16.     koji sadrži stvarne vrijednosti mjerenja, te ako je razlika manja od +/-5 taj podatak se smatra uspjesnom
  17.     prognozom. Na kraju treba podjeliti broj uspjesnih prognoza sa 7 koliko ima dana u sedmici i vratiti
  18.     procenat uspjesnosti.)
  19. • PronadjiNajuspjesnijegMeteorologa – funkciju koja pronalazi meteorologa sa najtačnijim vremenskim
  20.     prognozama, odnosno najvećim procentom uspjeha.
  21.     (Pojasnjenje: Red koji ima najveci procenat koji se dobije iz prethodno opisane funkcije
  22.     IzracunajUspjesnost je u stvari red sa najuspjesnijim meteorologom.)
  23. • PronadjiDanSaNajnizimPrognozama – funkciju koja pronalazi dan koji je imao u prosjeku najnize prognoze.
  24.     (Pojasnjenje: Naci kolonu sa najnizom aritmetickom sredinom svih svojih vrijednosti.
  25.     Nije potrebno porediti sa nizom sa stvarnim temperaturama.)
  26. Napisati i kratak testni program za provjeru ispravnosti implementiranih funkcija.
  27.  
  28.  
  29. */
  30.  
  31. const double temp[7] = { 25.5, 26.8, 21, 32, 35.6, 36, 33.5 };
  32. const int r = 5, k = 7;
  33.  
  34. void unos(double[]);
  35. void ispis(double[][k]);
  36. double uspjesnost(double[]);
  37. int najm(double[][k]);
  38. int najdan(double[][k]);
  39.  
  40. int main() {
  41.  
  42.     double niz[r][k] = {};
  43.     int izbor, iz2, iz3;
  44.     do {
  45.         cout << "Za kojeg meteorologa zelite unijeti prognozu ?" << endl;
  46.         do {
  47.             cin >> izbor;
  48.         } while (izbor < 1 || izbor>5);
  49.  
  50.         unos(niz[izbor - 1]);
  51.         cout << "Da li zelite unijeti za jos nekog meteorologa ?" << endl;
  52.         cin >> iz2;
  53.         system("CLS");
  54.     } while (iz2 != 0);
  55.  
  56.     cout << "Za kojeg meteorologa zelite provjeriti uspjesnost ? " << endl;
  57.     do{
  58.     cin >> iz3;
  59.     } while (iz3 < 1 || iz3>5);
  60.     cout << "Uspjesnost za odabranog meteorologa je " << uspjesnost(niz[iz3 - 1]) << "%." << endl;
  61.  
  62.     cout << "Najuspjesniji meteorolog je : " << najm(niz) << endl;
  63.     cout << "Dan sa najnizim temperaturama je : " << najdan(niz) << ". dan" << endl;
  64.     ispis(niz);
  65.  
  66.     system("pause>0");
  67.     return 0;
  68. }
  69.  
  70. void unos(double niz[]) {
  71.     for (int i = 0; i < k; i++)
  72.     {
  73.         cin >> niz[i];
  74.         if (niz[i] > 50 || niz[i] < -20)
  75.             i--;
  76.     }
  77. }
  78.  
  79. void ispis(double niz[][k]) {
  80.     for (int i = 0; i < r; i++)
  81.     {
  82.         for (int j = 0; j < k; j++) {
  83.             cout << setw(7) << niz[i][j];
  84.         }
  85.         cout << endl;
  86.     }
  87. }
  88.  
  89. double uspjesnost(double niz[]) {
  90.     double uspjesnost = 0;
  91.     for (int i = 0; i < k; i++) {
  92.         if (niz[i] > temp[i] - 5 && niz[i] < temp[i] + 5)
  93.             uspjesnost += 100;
  94.     }
  95.     return uspjesnost = uspjesnost/7;
  96. }
  97.  
  98. int najm(double niz[][k]) {
  99.     double naj = uspjesnost(niz[0]);
  100.     int najindex = 1;
  101.     for (int i = 1; i < r; i++) {
  102.         if (uspjesnost(niz[i]) > naj) {
  103.             naj = uspjesnost(niz[i]);
  104.             najindex = i + 1;
  105.         }
  106.     }
  107.     return najindex;
  108. }
  109.  
  110. int najdan(double niz[][k]) {
  111.     int naj =0;
  112.     double art = 0, najart = INT_MAX;
  113.     for (int i = 0; i < k; i++) {
  114.         for (int j = 0; j < r; j++) {
  115.             art += niz[j][i];
  116.         }
  117.         art = art / r;
  118.         if (art < najart) {
  119.             najart = art;
  120.             naj = i + 1;
  121.         }
  122.         art = 0;
  123.     }
  124.     return naj;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement