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;
}