III.2 testul 7 (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, x ( din intervalul [1,109]), și construiește în memorie un tablou bidimensional, pentru care atât numărul de linii, cât și numărul de coloane sunt egale cu numărul de cifre ale lui x, iar elementele fiecărei linii au ca valori cifrele lui x, în ordine, ca în exemplu.
Elementele tabloului obținut sunt afișate pe ecran, linie cu linie, fiecare linie a tabloului pe câte o linie a ecranului, cu elementele de pe aceeași linie separate prin câte un spațiu.
Exemplu: dacă x=1359, se afișează tabloul alăturat.
  • variabilă de tip tablou bidimensional, declarată conform cerinței

int a[][];

  • variabilă citită conform cerinței

cin>>x;

  • se calculează inversul numărului x în variabila inv, contorizând numărul de cifre în variabila n(n++;)

while(x!=0)

    {

        inv=inv*10+x%10;

        n++;

        x=x/10;

    }

  • se parcurge matricea pe coloane și apoi pe linii și se atribuie elementului ultima cifră a variabilei inv(a[i][j]=inv%10), iar înainte de trecerea la următoarea coloană se elimină ultima cifră a inversului(inv=inv/10).

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

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

            a[i][j]=inv%10;

        inv=inv/10;

    }

  • 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[][],i,j,n=0,x,inv=0;
    cin>>x;
    while(x!=0)
    {
        inv=inv*10+x%10;
        n++;
        x=x/10;
    }
    for(j=1;j<=n;j++){
        for(i=1;i<=n;i++)
            a[i][j]=inv%10;
        inv=inv/10;
    }
       for(i=1;i<=n;i++){
        for(j=1;j<=n;j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}