Element_SA

Să se scrie o funcție C++ care are ca parametri două numere naturale n și m și o matrice A(n , m) avȃnd elemente numere întregi și returnează numărul de elemente „șa” din matrice. Un element A(i,j) din matrice se numește element „șa” dacă este maximul de pe coloana j si minimul de pe linia i sau invers.

Subprogramul se va numi nr_sa va avea trei parametri: a, un tablou bidimensional cu elemente întregi, nm, reprezentând numărul de linii, respectiv de coloane ale tabloului a.

Restricţii şi precizări

  • 0 < n,m ≤ 100
  • numele subprogramului cerut este nr_sa
  • parametrii sunt, în această ordine: anm
  • indicii de linie și de coloana ai tabloului a încep de la 0 și sunt de tip int;
  • matricea folosită în apelul din funcția main va fi declarată int a[100][100]; și are elementele indexate de la 0.

Exemplu

Pentru n=2m=6 și A=(572186439835)A=(528493716385) funcția va returna valoarea 2 (elementele șa sunt A0,1A0,1 și A1,4A1,4 – elementele sunt indexate de la 0).

Important

Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

SOLUTIE

int nr_sa(int a[][100], int m ,int n)
{
    int cnt = 0;
    for(int i = 0 ; i < m ; i ++)
        for(int j = 0 ; j < n ; j ++)
        {
            int min_lin, max_lin, min_col, max_col;
            min_lin = max_lin = min_col = max_col = a[i][j];
            for(int k = 0 ; k < n ; k ++)
            {
                if(a[i][k] > max_lin)
                    max_lin = a[i][k];
                if(a[i][k] < min_lin)
                    min_lin = a[i][k];
            }
            for(int k = 0 ; k < m ; k ++)
            {
                if(a[k][j] > max_col)
                    max_col = a[k][j];
                if(a[k][j] < min_col)
                    min_col = a[k][j];
            }
            if( (a[i][j] == min_col && a[i][j] == max_lin) || (a[i][j] == max_col && a[i][j] == min_lin) )
                cnt ++;
        }
    return cnt;
}