Somma elementi di ogni diagonale

di il
4 risposte

Somma elementi di ogni diagonale

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

  • Re: Somma elementi di ogni diagonale

    
    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];
    
  • Re: Somma elementi di ogni diagonale

    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
  • Re: Somma elementi di ogni diagonale

    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
  • Re: Somma elementi di ogni diagonale

    Ok, ti ringrazio, adesso provo
Devi accedere o registrarti per scrivere nel forum
4 risposte