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

vreau sa afisez paralelele la o diagonala secundara a unei matrici patratice daca se poare o metoda cat mai simplista si bine explicata de oarece sunt la inceput :)))


boiustef: la diagonala secundară... pe toate? inclusiv şi pe ea?
boiustef: şi afişarea o faci de în direcţia NordEst sau SudWest ?

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n, i, j, a, b, v[30][30];

   cin >> n;

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

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

       cin >> v[i][j];

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

   {

       a=i; b=1;

       while (a>=1)

       {

           cout << v[a][b] << " ";

           --a; ++b;

       }

       cout << endl;

   }

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

   {

       a=n; b=j;

       while (b<=n)

       {

           cout << v[a][b] << " ";

           --a; ++b;

       }

       cout << endl;

   }

   return 0;

}

Explicație:

Fie n=4 şi matricea v, la general:

v11  v12  v13   v14

v21 v22 v23  v24

v31  v32  v33  v34

v41  v42  v43  v44

Diagonala secundară este v41 v32 v23 v14,

Vom afişa paralele la ea în direcţia NordEst, adică de jos în sus.

Observăm că la o paralelă, de exemplu v31  v22  v13 indicii elementelor descresc pentru linie şi cresc pentru coloană.

 Cu primul for vom afişa paralele (inclusiv şi diagonala secundară) pentru care i porneşte de la 1 la n. Începuturile paralelelor sunt de pe prima coloană, deaceea a ia valoarea lui i, care se va schimba, iar b porneşte cu valoarea 1. Cu un while vom afişa elementele unei diagonale folosind ca indici a şi b, unde a ia valoarea lui i, iar b de la 1 şi afişem elementul, şi pentru deplasare paralel cu diagonala secundară, descreştem a, indicele liniei şi creştem b, indicele coloanei. Condiţia de oprire a ciclului while este ca indicele linie (ridicându-se în sus) să fie mai mare egal cu 1 ( ca să nu iasă din limitele matricei).

  Cu al doilea for vom afişa paralelele de sub diagonala secundară. Începuturile paralelelor sunt de pe ultima linie şi raţionamentele sun la fel...

Sper că am fost explicit... Dacă apar întrebări, neclarităţi, adresează-te. Succese !

Alte întrebări interesante