III.2 testul 2 (antrenament) 2021
Subiectul al III-lea – Exerciţiul 2
| Scrieți un program C/C++ care citește de la tastatură un număr natural, n (n∈[2,20]), și construiește în memorie un tablou bidimensional cu n linii și n coloane, astfel încât fiecare linie a sa are proprietățile: · Elementul situat pe diagonala secundară are valoarea n; · Începând de la diagonala secundară, spre stânga, elementele formează un șir strict descrescător de numere consecutive, iar începând de la diagonala secundară spre dreapta, elementele formează tot un șir strict descrescător de numere consecutive. Programul afișează pe ecran tabloul construit, fiecare linie a tabloului pe câte o linie a ecranului, cu elementele aflate pe aceeași linie separate prin câte un spațiu. Exemplu: dacă n = 5 se afișează pe ecran tabloul alăturat. |

- variabilă de tip tablou bidimensional, declarată conform cerinței
int a[21][21];
- se parcurge matricea și se verifică poziționarea elementelor în funcție de diagonala secundară
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
- dacă elementul se află deasupra diagonalei secundare(i+j<n+1), acesta devine i+j-1
if(i+j<n+1)
a[i][j]=i+j-1;
- dacă elementul se află pe diagonala secundară(i+j=n+1), acesta devine n
else if(i+j==n+1)
a[i][j]=n;
- dacă elementul se află sub diagonala secundară, acesta devine valoarea elementului aflat în stânga lui – 1
else a[i][j]=a[i][j-1]-1;
- se afișează matricea
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
cout<<a[i][j]<<” „;
cout<<endl;
}
#include <iostream>
using namespace std;
int main()
{
int a[21][21],i,j,n;
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i+j<n+1)
a[i][j]=i+j-1;
else if(i+j==n+1)
a[i][j]=n;
else a[i][j]=a[i][j-1]-1;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
