Scrieţi un program C/C++ care citeşte de la tastatură un număr natural nenul n (n≤24) şi construieşte în memorie un
tablou bidimensional cu n linii şi n coloane care să conţină primele n numere naturale nenule. Prima linie a tabloului va
conţine, în această ordine, valorile 1,2,...,n; a doua linie va conţine, în ordine, valorile 2,2,3,...,n; a treia linie va conţine,
în ordine, valorile 3,3,3,4,...,n, iar ultima linie va conţine valorile n, n,..., n.
Programul afişează pe ecran matricea construită, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei
linii fiind despărţite prin câte un spaţiu. Exemplu: pentru n=5 se va afişa matricea alăturată.
1 2 3 4 5
2 2 3 4 5
3 3 3 4 5
4 4 4 4 5
5 5 5 5 5

Răspuns :

1. Asta e varaianta in care folosesti o matrice si poate pare mai usor:

#include <iostream>

#include <cmath>

using namespace std;

int main()

{

  int n, E[21][21], c, g;

  cin>>n;

  c=n;

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

  {

      c--, g=c;

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

      {

          if(i+j==n+1) E[i][j]=0;

          else if(i+j<n+1) E[i][j]=g;

          else E[i][j]=abs(g);

          g--;

      }

  }

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

  {

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

      {

          cout<<E[i][j]<<" ";

      }

      cout<<"\n";

  }

  return 0;

}

2. Asta e varianta fara matrice, dar mai rapida:

#include <iostream>

#include <cmath>

using namespace std;

int main() {

  int n, c, g;

  cin>>n;

  c=n;

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

      c--, g=c;

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

          if(i+j==n+1) cout<<0<<" ";

          else if(i+j<n+1) cout<<g<<" ";

          else cout<<abs(g)<<" ";

          g--;

      }

      cout<<"\n";

  }

  return 0;

}

Le ai si in notepad.