III.2 testul 6 (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 (din intervalul [3,20]), și construiește în memorie un tablou bidimensional cu n linii și n coloane, având proprietățile:
·       toate elementele situate pe diagonala secundară sunt nule;
·       prima linie conține un șir strict descrescător de numere consecutive, iar ultima linie conține un șir strict crescător de numere consecutive;
·       fiecare dintre celelalte linii conține, începând cu prima poziție, până la diagonala secundară inclusiv, de la stânga la dreapta, un șir strict descrescător de numere consecutive, iar începând de la diagonala secundară, inclusiv, până la ultima poziție, de la stânga la dreapta, un șir strict crescă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=4 se afișează pe ecran tabloul alăturat.
  • variabilă de tip tablou bidimensional, declarată conform cerinței

int a[21][21];

  • se parcurg elementele matricei începând cu prima linie și ultima coloană și se verifică poziționarea elementelor în funcție de diagonala secundară

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

    for(j=n;j>=1;j–)

  • dacă elementul se află pe diagonala secundară(i+j=n+1), acesta devine 0

if(i+j==n+1)

        a[i][j]=0;

  • dacă elementul se află deasupra diagonalei secundare(i+j<n+1), acesta devine valoarea elementului aflat în dreapta lui +1 (a[i][j+1]+1)

  if(i+j<n+1)

       a[i][j]=a[i][j+1]+1;

  • se parcurge matricea verificând dacă elementul se află sub diagonala secundară(i+j>n+1), acesta devine valoarea elementului aflat în stânga lui + 1

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

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

    if(i+j>n+1)

    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=n;j>=1;j--)
    if(i+j==n+1)
    a[i][j]=0;
    else if(i+j<n+1)
    a[i][j]=a[i][j+1]+1;
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    if(i+j>n+1)
    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;
}