fbpx

Problema #234 – MedPoz – Rezolvari PBInfo

de Mihai-Alexandru

Se consideră un tablou bidimensional cu n linii şi n coloane ce conţine numere intregi din intervalul [-100,100].

Cerinţa

Să se determine media aritmetică a elementelor strict pozitive din matrice, care sunt situate sub diagonala principală.

Date de intrare

Fişierul de intrare medpoz.in conţine pe prima linie numărul n, iar pe următoarele n linii câte n numere naturale separate prin spaţii, reprezentând elementele tabloului.

Date de ieşire

Fişierul de ieşire medpoz.out va conţine pe prima linie un singur număr, reprezentând valoarea cerută.

Restricţii şi precizări

  • 2 ≤ n ≤ 20;
  • dacă în matrice nu există elemente strict pozitive, situate sub diagonala principală, se va afișa mesajul NU EXISTA;
  • media se va afişa cu exact trei zecimale, fără rotunjire;

Exemplu

medpoz.in

4
-1 2 4 5
0 6 3 1
2 4 2 0
3 -5 1 -3

medpoz.out

2.500

Explicaţie

Valorile strict pozitive situate sub diagonala principală sunt 2, 4, 3 şi 1, iar media lor aritmetică este 2.5. Se va afişa cu trei zecimale, adică 2.500

#include <bits/stdc++.h>


using namespace std;
ifstream fin("medpoz.in");
ofstream fout("medpoz.out");
int main()
{
    long long n , a[201][201], cnt = 0 , v[205] , ok = 0 , s = 0;
    fin >> n;
    for(int i = 0 ; i < n ; i++)
        for(int j = 0 ; j < n ; j++)
        fin >> a[i][j];
    for(int i = 0 ; i < n ; i++)
        for(int j = 0 ; j < n ; j++)
        {
            if(i > j && a[i][j] > 0)
            {
                s += a[i][j];
                cnt++;
                ok = 1;
            }
        }
    if(ok!=0)
    {
    double x = trunc((double)s/cnt*1000)/1000.0;
    fout << fixed << setprecision(3) << x;
    }
    else
        fout << "NU EXISTA";
    
    fin.close();
    fout.close();
    
    return 0;

}
Comentarii

S-ar putea sa iti placa