III.2 testul 10 (antrenament) 2021

Subiectul al III-lea – Exerciţiul 2

O valoare filtrează două șiruri dacă există doi termeni care au acea valoare, unul fiind în primul șir, iar celălalt în al doilea șir.
Scrieți  un  program  C/C++  care  citește  de  la  tastatură  numere  naturale  din  intervalul  [2,20]:  m,  n și elementele unui tablou bidimensional cu m linii și n coloane, cu proprietatea că nu există două elemente egale situate pe aceeași linie sau pe aceeași coloană.
Programul afișează pe ecran valorile care pot filtra șirul format din primele n-1 elemente de pe prima linie, respectiv șirul format din ultimele m-1 elemente ale ultimei coloane a tabloului, ca în exemplu. Valorile sunt afișate într-o ordine oarecare, separate prin câte un spațiu, sau mesajul nu exista, dacă nu există astfel de valori.
Exemplu: pentru m=5, n=4 și tabloul alăturat, se afișează pe ecran, nu neapărat în această ordine, numerele 4 7
  • variabilă de tip tablou bidimensional, declarată conform cerinței

int a[21][21];

  • date citite conform cerinței

cin>>m>>n;

    for(i=1;i<=m;i++)

        for(j=1;j<=n;j++)

        cin>>a[i][j];

  • se parcurge matricea fără prima linie și ultima coloană și se verifică dacă elementele aflate pe prima linie(a[1][j]) se găsesc pe ultima coloană(a[i][n]), dacă condiția este îndeplinită atunci se afișează elementul(cout<<a[1][j]<<” „;).

    for(j=1;j<=n-1;j++)

         for(i=2;i<=m;i++)

         if(a[1][j]==a[i][n])

         cout<<a[1][j]<<” „;

 #include <iostream>

using namespace std;
int main()
{
    int a[21][21],i,j,n,m;
    cin>>m>>n;
    for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
    cin>>a[i][j];
    for(j=1;j<=n-1;j++)
         for(i=2;i<=m;i++)
         if(a[1][j]==a[i][n])
         cout<<a[1][j]<<" ";
    return 0;
}