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
main
va fi declaratăint a[100][100];
și are elementele indexate de la0
.
Exemplu
Pentru n=2
, m=6
și \( A = \left( \begin{array}{cccccc}
5 & 2 & 8 & 4 & 9 & 3 \\
7 & 1 & 6 & 3 & 8 & 5 \end{array} \right)\) funcția va returna valoarea 2
(elementele șa sunt \(A_{0,1} \) și \( A_{1,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.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Element_SA :
#define N 100
void determinare_linie(int linii, int coloane, int matrice[N][N], int indice_linie, int &minim, int &maxim)
{
minim = maxim = matrice[indice_linie][0];
for(int col = 1; col < coloane; col++)
{
if(matrice[indice_linie][col] > maxim)
maxim = matrice[indice_linie][col];
if(matrice[indice_linie][col] < minim)
minim = matrice[indice_linie][col];
}
}
void determinare_coloana(int linii, int coloane, int matrice[N][N], int indice_coloana, int &minim, int &maxim)
{
minim = maxim = matrice[0][indice_coloana];
for(int lin = 1; lin < linii; lin++)
{
if(matrice[lin][indice_coloana] > maxim)
maxim = matrice[lin][indice_coloana];
if(matrice[lin][indice_coloana] < minim)
minim = matrice[lin][indice_coloana];
}
}
int nr_sa(int matrice[N][N], int linii, int coloane)
{
int minim_linie[N], minim_coloana[N], maxim_linie[N], maxim_coloana[N];
for(int lin = 0; lin < linii; lin++)
determinare_linie(linii, coloane, matrice, lin, minim_linie[lin], maxim_linie[lin]);
for(int col = 0; col < coloane; col++)
determinare_coloana(linii, coloane, matrice, col, minim_coloana[col], maxim_coloana[col]);
int numar_elemente_sa = 0;
for(int lin = 0; lin < linii; lin++)
for(int col = 0; col < coloane; col++)
if((matrice[lin][col] == maxim_coloana[col] && matrice[lin][col] == minim_linie[lin])
||
(matrice[lin][col] == minim_coloana[col] && matrice[lin][col] == maxim_linie[lin]))
numar_elemente_sa++;
return numar_elemente_sa;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1508 Element_SA
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1508 Element_SA de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!