. 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++)
Răspunsuri la întrebare
#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
#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