III.2 testul 12 (antrenament) 2021

Subiectul al III-lea – Exerciţiul 2

Scrieți un program C/C++ care citește de la tastatură numere naturale: n (n aparține [2,20]), k (k aparține [1,n]) și n∙n numere din intervalul [0,109], elemente ale unui tablou bidimensional cu n linii și n coloane. Programul transformă tabloul în memorie, deplasând circular spre dreapta, cu câte o poziție, toate elementele situate pe linia a k-a, în stânga diagonalei secundare, ca în exemplu. Elementele tabloului obținut sunt afișate pe ecran, fiecare linie pe câte o linie a ecranului, cu elementele fiecărei linii separate prin câte un spațiu.
Exemplu: pentru n=5, k=2 și tabloul
  • variabilă de tip tablou bidimensional, declarată conform cerinței

int a[21][21];

  • date citite conform cerinței

cin>>n>>k;

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

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

        cin>>a[i][j];

  • se inițializează variabila aux cu valoarea elementului aflat pe linia k, coloana n-k

aux=a[k][n-k];

  • se parcurg coloanele matricei de la coloana n-k la coloana a doua, actualizându-se valoarea elementului aflat pe linia k, coloana j(a[k][j]) cu elementul aflat pe aceeași linie, în stânga lui(a[k][j-1]).

for(j=n-k;j>=2;j–)

    {

        a[k][j]=a[k][j-1];

    }

  • se inițializează primul element de pe linia k cu valoarea variabilei aux

    a[k][1]=aux;

  • 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,k,aux;
    cin>>n>>k;
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    cin>>a[i][j];
    aux=a[k][n-k];
    for(j=n-k;j>=2;j--)
    {
        a[k][j]=a[k][j-1];
    }
    a[k][1]=aux;
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++)
        cout<<a[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}