Esempio:
1 2 3 4
5 6 7 8
10 11 12 13
In questo caso la diagonale con i valori più alti è quella con 11+7+4 =22
Il codice che ho scritto penso sia errato in quanto mi restituisce valori errati. Cosa mi sfugge?
Grazie
- Codice:
//Scansione Matrice. Massimo diagonale.
#include<iostream>
#include<iomanip>
#include<stdlib.h>
using namespace std;
const int num = 3;
int main()
{
int somma;
int matrice[num][num];
int i, j;
int somma, massimo;
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;
}
massimo = 0;
somma = 0;
for (int d = 0; d < num; d++)
{
for (i = d, j = 0; i >= 0, j < num; i--, j++)
{
somma += matrice[i][j];
}
if (somma > massimo)
{
massimo = somma;
}
}
for (int d = 1; d < num; d++)
{
for (j = d, i = num - 1; j < num, i > 1; j++, i--)
{
somma += matrice[i][j];
}
if (somma > massimo)
{
massimo = somma;
}
}
cout << massimo;
}