Informatică, întrebare adresată de puscascasian, 8 ani în urmă

Scrieti un program care construieste in memorie un tablou T cu n linii si n coloane, cu elemente numere naturale, astfel incat pe ultima coloana si pe ultima linie a tabloului sa se afle numai elemente egale cu 1, iar oricare alt element al tabloului sa fie suma dintre elementul aflat imediat sub el si elementul aflat imediat in dreapta lui.
Valoarea lui n (n<20) se citeste de la tastatura. Tabloul se va afisa pe ecran standard: de la prima la ultima linie, elementele unei linii fiind scrise de la stanga la dreapta, cu spatii intre elementele fiecarei linii.

Răspunsuri la întrebare

Răspuns de NoxNostraEst
2

#include <iostream>

using namespace std;

int main()

{

   int t[100][100], i, j, n;

   

   cin >> n;

(Prin aceste doua for-uri de mai jos, se stabileste valoarea '1' elementelor aflate atat pe ultima linie, cat si pe ultima coloana).

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

       t[i][n] = 1;

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

       t[n][j] = 1;

(Prin aceste doua for-uri de mai jos, se lucreaza cu restul elementelor aflate in tablou. Parcurgem matricea in sens invers: normal se incepe din coltul din stanga-sus, reprezentat de valoarea t[1][1]. In problema ta, avand doar datele de pe ultima linia si ultima coloana, trebuie sa incepem sa lucram de la acestea, astfel, incepem din coltul din dreapta-jos, reprezentat de valoarea t[n][n], si mergem inapoi, de asta avem 'i--'. Lucram cu 'n-1' pentru ca daca am incepe direct cu 'n', atunci programul ar modifica valorile ultimei linii si ultimei coloane pe care le-am introdus mai sus, prin celalalte doua 'for'-uri. 'n-1' reprezinta astfel penultima linie/coloana).

   for (i = n-1; i >= 1; i--)

    for (j = n-1; j >= 1; j--)

     t[i][j] = t[i+1][j] + t[i][j+1];

(Prin aceste functii 'for' de mai jos, afisam matricea exact asa cum se cere, inclusiv cu spatii intre elementele fiecarei linii)

     

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

   {

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

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

    cout << endl;

   }

   return 0;

}

Daca ai intrebari, lasa-le mai jos.

Alte întrebări interesante