III.2 iulie 2019

Subiectul al III-lea – Exerciţiul 2

Un tablou bidimensional cu număr impar de coloane este numit simetric faţă de coloana din mijloc dacă, pe fiecare linie a tabloului, elementele dispuse simetric faţă de elementul din mijloc al liniei respective au valori egale.
Scrieţi un program C/C++ care citeşte de la tastatură două numere naturale din intervalul [3,21], m şi n (n impar), şi elementele unui tablou bidimensional cu m linii şi n coloane, numere naturale din intervalul [0,104]. Programul afişează pe ecran mesajul DA, dacă tabloul este simetric faţă de coloana din mijloc, sau mesajul NU în caz contrar.
Exemplu: pentru m=4, n=5 și tabloul alăturat, se afişează pe ecran DA

Variabila ok este inițializată cu 1, pentru că la început presupunem că tabloul este simetric. Se parcurge fiecare linie a tabloului până la jumătate, comparând fiecare element a[i][j] cu simetricul său față de elementul din mijlocul liniei, elementul a[i][n+1-j]. Dacă un element este diferit de simetricul său atunci variabila ok devine 0. Afișarea rezultatului se face în funcție de valoarea variabilei ok. Astfel, dacă ok a rămas cu valoarea 1, se afișează mesajul DA, iar dacă ok arevaloarea 0, se afișează mesajul NU.

#include <iostream>
using namespace std;
int main()
{
int a[22][22],i,j,m,n,ok=1;
cin>>m>>n;
for(i=1;i<=m;i++) for(j=1;j<=n;j++) cin>>a[i][j];
for(i=1;i<=m && ok;i++)
for(j=1;j<=n/2 && ok;j++)
if(a[i][j]!=a[i][n+1-j])
ok=0;
if(ok)
cout<<"DA";
else
cout<<"NU";
return 0;
}