Informatică, întrebare adresată de eleva10, 9 ani în urmă

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, n, m, 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: a, n, m
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=2, m=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).

Răspunsuri la întrebare

Răspuns de express
27
int nr_sa(int a[100][100], int n, int m)
{
    int i, j, c, nr = 0, maxx, minn, k, p, min1, max1;
    for(i = 0; i < n; i ++)
    {
        for(j = 0; j < m; j ++)
        {
            minn = 2147148001;
            maxx = - minn;
            min1 = minn;
            max1 = maxx;
            for(k = 0; k < m; k ++)
            {
                if(a[i][k] > maxx) maxx = a[i][k];
                if(a[i][k] < minn) minn = a[i][k];
            }
            for(k = 0; k < n; k ++)
            {
                if(a[k][j] > max1) max1 = a[k][j];
                if(a[k][j] < min1) min1 = a[k][j];
            }
            if(a[i][j] == maxx && a[i][j] == min1) nr ++;
                    else
            if(a[i][j] == max1 && a[i][j] == minn) nr ++;
        }
    }
    return nr;
}

Alte întrebări interesante