Somma elementi di ogni diagonale

di Anonimizzato21178 il
4 risposte
Salve dovrei scrivere un programma che somma gli elementi delle diagonali parallele alla diagonale secondaria di una matrice per poi trovare la diagonale con gli elementi maggiori.
Per esempio

1 2 3
5 7 9
0 2 3

In questo caso la diagonale maggiore sarebbe la penultima con 9+2=11

Non ho problemi con l'inserimento e la stampa della matrice. Nè con la somma degli elementi. Ma non riesco a capire come passare alle diagonali successive.
Vi posto il codice che ho scritto fino adesso.


#include<iostream>
#include<iomanip>
#include<stdlib.h>
using namespace std;
const int num = 4;
int main()
{
	int somma;
	int matrice[num][num];
	int i, j;
	
	cout << "Inserisci valori della matrice: " << endl;
	for (i = 0; i < num; i++) 
	{
		for (j = 0; j < num; j++) 
		{
			cout << "Inserisci valore: " << "[" <<  i << "]" << "[" << j << "]" << "  ";
			cin >> matrice[i][j];
		}
	}

	cout << endl << endl;
	
	for (i = 0; i < num; i++) 
	{
		for (j = 0; j < num; j++)
		{
			cout << setw(4) << matrice[i][j];
		}
		cout << endl;
	}
	somma = 0;
	
	// come posso incorporare il codice successivo in modo che sommi tutte le diagonali? 
	
		while (i >= 0 && j < num) // ciclo while per sommare i valori di una diagonale
		{
			somma = somma + matrice[i][j];

			i--;
			j++;
		}
		
	return 0;
}

4 Risposte

  • 
    int d, diagonali = 2 * num - 1;
    int somme[diagonali] = {0};
    for(d=0; d < diagonali; d++)
        for(i=d, j=0; i >= 0; i--, j++)
            if(i < num && j < num)
                somme[d] += matrice[i][j];
    
  • Ti ringrazio per la risposta. Ma quindi con il codice che hai scritto calcoli dalla prima all'ultima diagonale, è corretto?
    Dopodichè la somma di ogni diagonale la salvi all'interno di un array.
    Non riesco a capire la logica dell'ultimo ciclo for? Potresti spiegarmela se non ti annoia? Grazie
  • Nell'ultimo for percorro tutte le diagonali (le ipotenuse dei triangoli rettangoli isosceli). Gli elementi li aggiungo solo se stanno dentro al quadrato della matrice
  • Ok, ti ringrazio, adesso provo
Devi accedere o registrarti per scrivere nel forum
4 risposte