408
Cerința
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 la0și sunt de tipint; - matricea folosită în apelul din funcția
mainva fi declaratăint a[100][100];și are elementele indexate de la0.
– 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.
int nr_sa(int a[][100], int n, int m){
int minlin[100], maxlin[100], mincol[100], maxcol[100];
for(int i = 0; i < n; ++i){
int mini = 2000000001;
int maxi = 0;
for(int j = 0; j < m; ++j){
if(a[i][j] < mini)
mini = a[i][j];
if(a[i][j] > maxi)
maxi = a[i][j];
}
minlin[i] = mini;
maxlin[i] = maxi;
}
for(int j = 0; j < m; ++j){
int mini = 2000000001;
int maxi = 0;
for(int i = 0; i < n; ++i){
if(a[i][j] < mini)
mini = a[i][j];
if(a[i][j] > maxi)
maxi = a[i][j];
}
maxcol[j] = maxi;
mincol[j] = mini;
}
int cnt = 0;
for(int i = 0; i < n; ++i)
for(int j = 0; j < m; ++j)
if((a[i][j] == maxlin[i] && a[i][j] == mincol[j]) ||
(a[i][j] == minlin[i] && a[i][j] == maxcol[j]))
cnt++;
return cnt;
}
Comentarii