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

. Se dă matricea T[n][n] cu elemente numere întregi. Se consideră că cele două diagonale

împart matricea în patru zone: nord, sud, est, vest(elementele de pe diagonale nu fac parte din

nici o zonă). Să se compună un program care va număra elementele situate în zona nord. (C++)


scerbanin: Ajutati please

Răspunsuri la întrebare

Răspuns de OiLoveYouO
2

#include <iostream>

using namespace std;

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

int main ()

{

cin >> n;

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

for (j = 1; j <= n; j ++) cin >> T[i][j];

/*daca n e impar nr de elemente Nord va fi 1+3+5+...+n-2; daca n e par nr de elemente Nord va fi: 2+4+...+n-2*/

/*sumele lui gauss:

1+2+3+...+n=n(n+1)/2

1+3+5+...+(2n-1)=n*n; */

/* 2+4+..+n-2=2(1+2+...+(n-2)/2)=n(n-2)/4

1+3+...+n-2=1+3+...+(2*(n-1)/2-1)=(n-1)*(n-1)/4; */

if (n%2 == 0) cout << n*(n-2)/4;

else cout << (n-1)*(n-1)/4;

}

*Nici nu e nevoie sa cunoastem ce elemente sunt in matrice

Puteam sa facem si altfel: din nr total de elem (n*n) scadeam nr de elem de pe diagonale (tot pe cazuri cu n par si n impar), iar rezultatul se impartea la 4

Anexe:
Răspuns de adrianbuf18
2

#include

using namespace std;

int main()

{

   int n;

   cout << "n="; cin >> n;

   int t[n][n], nr=0;

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

   {

       nr=nr+(n-2*i);  

   }

   cout << nr;

}

i reprezinta numarul liniei in matrice si de aceea mergem de la linia 1 pana la linia n/2, adica liniile din jumatatea de sus a matricii

pe fiecare dintre aceste linii avem un anumit numar de elemente ale matricii, iar numarul este egal cu n (numarul tuturor elementelor de pe o linie) minus dublul numarului liniei la care suntem, fiindca pe prima linie avem 2 elemente marginale care nu fac parte din zona de nord, pe a doua linie avem 4 elemente marginale care nu fac parte si asa mai departe

Anexe:
Alte întrebări interesante