#include <iostream>
#include <conio.h>//para usar el getch();
#include <ctime> //para utilizar el time(0) y genere numeros al azar
#include <cstdlib>//para el uso de srand() y rand()
#include <windows.h>//esto solamente para el color
using namespace std;
int filas, columnas, numeroequis;
int i, j, diagonalprincipal=0, diagonalsecundaria=0;
int **matriz;
//use la funcion setcolor para ver la diagonal principal y secundaria
//y comprobar que funcionara correctamente puedes eliminarlo
//si asi lo deseas.
//string setcolor(unsigned short color)
//{
// HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
// SetConsoleTextAttribute(hcon, color);
// return "";
//}
int main(int argc, char** argv) {
srand(time(0));//con esta funcion se genera numeros al azar sin un patron especifico
cout << "Introduzca el tamano de la matriz ";
cin >> filas;
columnas = filas;
//si en el for iniciamos la i, j = 0 entonces la cantidad maxima de filas y columnas
//es tal que filas - 1 y columnas - 1
//por ejemplo si se introduce el numero 7 entonces el valor maximo de
//i y j es 6 pero si iniciamos la i, j = 1 la cantidad maxima de i y j es
//la que introduce por teclado.
numeroequis = filas - 1;
//generamos la matriz según la cantidad introducida por teclado
//que otorgar el tamaño de la matriz.
matriz = new int *[filas];
for(i=0;i<filas;i++)
{
matriz[i] = new int[columnas];
}
for(i=0;i<filas;i++)
{
for(j=0;j<columnas;j++)
{
matriz[i][j] = rand() % 10;//le damos un valor al azar a la matriz con numeros entre 0 y 9
if(i==j) //diagonal principal cuando filas (i) y comlumas (j) son iguales.
{
//sumando los elementos de la diagonal principal y mostrando en pantalla matriz
diagonalprincipal=diagonalprincipal + matriz[i][j];
//setcolor(12);
cout << matriz[i][j] << " ";
}
//la diagonal secundaria es tal que i = 9 y j = 0
//despues i = 8 y j = 1.... i = 0 y j = 9
//que es justamente lo que determina esta condicinal
else if(i==(numeroequis-j))
{
//sumando los elementos de la diagonal secundaria y mostrando en pantalla matriz
diagonalsecundaria=diagonalsecundaria + matriz[i][j];
//setcolor(10);
cout << matriz[i][j] << " ";
}
else
{
//muestra en pantalla los demas numeros que no cayeron en las anteriores condicionales
//setcolor(7);
cout << matriz[i][j] << " ";
}
}
cout << endl;
}
//setcolor(7);
cout << "Suma de la diagonal pincipal = " << diagonalprincipal << endl;;
cout << "Suma de la diagonal secundaria = " << diagonalsecundaria << endl;
getch();
return 0;
}