Witam!
Potrzebuję zsumować elementy przekątnych tablicy 2-wymiarowej. Udało mi się napisać skrypt zliczający owe elementy z obu stron (od lewej do prawej oraz od prawej do lewej).
Z czym mam teraz problem: w przypadku tablicy parzystej, środkowy element nie występuje - ok, ale w przypadku tablicy nieparzystej, np. 3x3 występuje środkowy element którego nie chcę dodawać przy drugim zliczaniu.
Np. mam taką tablicę
1 2 3
1 2 3
1 2 3
Zliczając od lewej do prawej, wychodzi 6, natomiast zliczając od prawej do lewej, chcę pominąć element środkowy, czyli zamiast 6 ma wyjść 4. Jak to zrobić?
Mój obecny kod:
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int Liczenie( int RandomCount ) {
int **tab;
int SumaPrzekatnejRL = 0,
SumaPrzekatnejLR = 0;
srand(time(0));
tab = new int *[RandomCount];
for ( int i = 0; i < RandomCount; i++ )
tab[i] = new int[RandomCount];
for ( int i = 0; i < RandomCount; i++ ) {
for ( int j = 0; j < RandomCount; j++ ) {
tab[i][j] = rand() % 90 + 10;
}
}
for ( int i = 0; i < RandomCount; i++ ) {
for ( int j = 0; j < RandomCount; j++ ) {
cout << tab[i][j] << " ";
}
cout << endl;
}
cout << endl;
for( int i=0; i < RandomCount; i++ ) {
SumaPrzekatnejRL = SumaPrzekatnejRL + tab[i][i];
}
for( int i=0; i < RandomCount; i++ ) {
SumaPrzekatnejLR=SumaPrzekatnejLR+tab[i][(RandomCount-1)-i];
}
cout << "Suma od lewej do prawej: " << SumaPrzekatnejRL << endl;
cout << "Suma od prawej do lewej: " << SumaPrzekatnejLR << endl << endl;
}
int main() {
int RandomCount;
cout << "#####################################################" << endl;
cout << "## " << "Sumowanie po przekatnej w tablicy 2-wymiarowej" << " ##" << endl;
cout << "#####################################################" << endl;
cout << endl << "Wprowadz rozmiar tablicy: " << endl << "==> ";
cin >> RandomCount;
Liczenie( RandomCount );
system("pause");
}