III.2 testul 11 (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 [2,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, interschimbând șirul elementelor situate pe linia a k-a, în stânga diagonalei principale, parcurse de la stânga la dreapta, cu șirul elementelor situate pe coloana a k-a, deasupra diagonalei principale, parcurse de sus în jos, 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=4 ș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 parcurg primele k linii ale matricei, interschimbând folosind variabila aux elementul aflat pe linia k, coloana j (a[k][i]) cu elementul aflat pe linia i, coloana k (a[i][k])

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

        {

            aux=a[k][i];

            a[k][i]=a[i][k];

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