Ciao a tutti, ho scritto un programma che stampa TUTTE le sottomatrici della matrice data, l'esercizio però mi chiede di trovare la somma degli elementi sulla diagonale, e quelli sull'antidiagonale, e conforntarli: se la somma degli elementi sulla diagonale è maggiore di quelli sull'antidiagonale stampare 1, ma questa non è la parte difficile. Quella difficile è trovare le somme di ciascuna matrice. Ho trovato un metodo un po' particolare che consiste nel sommare al primo elemento di ciascuna matrice n (=ordine sottomatrice)+1, e così via fino all'ultima riga. Per quanto riguarda invece la somma degli elementi sull'antidiagonale partire dal primo elemento a sx della sottomatrice e sottrargli (n+1), (n è sempre l'ordine della sottomatrice), ma non saprei come implementarlo. Tra l'altro il codice presenta un errore che non riesco a trovare: stampa delle sottomatrici in più, ho cercato errori nelle condizioni dei cicli, ma non ne ho trovati.
Sarei grata a chiunque potesse aiutarmi, grazie in anticipo
#include <iostream>
using namespace std;
int main () {
int matrix [4][6]= {
{8, 26, 15, 8, 9, 9},
{1, 5, -4, 3, 5, 17},
{5, 3, 2, 5, 8, 6},
{3, 14, 5, 4, 2, -18}
};
int c_righe=0;
int c_colonne=0;
int c;
cout<<"Inserisci dimensione sottomatrici"<<endl;
cin>>c;
int r=c;
int l=c;
do {
for(int i=c_righe;i<r;i++) { //stampa di ciascuna sottomatrice
for(int j=c_colonne;j<l;j++) {
cout<<matrix[i][j]<<" ";
}
cout<<endl;
}
c_colonne++; //incremento indici ciclo for, con i fisso
l++;
if (c_colonne>5) { //se ciclo for arriva all'ultima colonna incremento i per ripartire dalla seconda riga
c_colonne=0;
l=c;
c_righe++;
r++;
}
} while (c_righe<=3);
}