Sunteți pe pagina 1din 2

/*

DEF. (Puncte ȘA)


Fie a un tablou bidimensional (m x n).
Un punct șa al acestui tablou este un element a[i0,j0] cu proprietatea:
a[i0,j0]= min{a[i0,j]: 0<=j<=n-1}
= max{a[i,j0]: 0<=i<=m-1}
(valoare minimă pe linie și maximă pe coloană);

PROBLEMA
Se citesc de la tastatură: un nr. natural n (1<n<10) si cele n x n componente ale unui tablou A.
Scrieți un program care determină câte "puncte șa" există în A și afișează coordonatele lor
(linie, coloană).
*/

#include<iostream >
using namespace std;
int a[10][10], n;

/* returneaza elementul minim al liniei i*/


int minim_linie(int i)
{ int min=a[i][0];
for(int j=0; j<n; j++)
if (min>a[i][j]) min=a[i][j];
return min;
}

/* returneaza elementul maxim al coloanei j */


int maxim_coloana(int j)
{ int max=a[0][j];
for(int i=0; i<n; i++)
if (max<a[i][j]) max=a[i][j];
return max;
}

void determina_puncte_sa(void)
{ int min_linie, kon=0;
cout<<"Rezultatul determinarii punctelor sa :"<<endl;
for(int i=0; i<n; i++)
{ min_linie=minim_linie(i);
for(int j=0; j<n; j++)
if ((a[i][j]==min_linie)&&(a[i][j]==maxim_coloana(j)))
{ kon++;
cout<<a[i][j]<<" ";
}
}
if(kon) cout<<"Exista "<<kon<<" puncte sa"<<endl;
else cout<<"Nu exista puncte sa"<<endl;
}
int main()
{ do
{ cin>>n;
}
while ((n<1)||(n>10));

/*Citeste de la tastatura elementele matricii*/


for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
cin>>a[i][j];

determina_puncte_sa();
return 0;
}

S-ar putea să vă placă și