! Este programa le uma matriz quadrada e calcula
! a soma dos elementos de cada diagonal    
program diagonais_matriz
	implicit none
    integer matriz(10,10), dimensao, soma_principal,&
            &soma_secundaria, i, j
    
    !Inicializa Programa    
    write(*, *) "Este programa le uma matriz quadrada e calcula"
    write(*, *) "a soma dos elementos de cada diagonal" 
    write(*, *)
    
    !Lê a dimensão da matriz que o usuario deseja trabalhar    
    write(*, *)
    write(*, *) "Digite a dimensao da matriz quadrada (maximo 10)"
	read (*, *) dimensao
    
    !Lê a matriz apresentando uma única mensagem de leitura
    write(*, *)"Digite os elementos da matriz. Cada linha da matriz numa linha de entrada"  
	read (*, *) ((matriz(i,j), j = 1, dimensao, 1), i = 1, dimensao, 1)
    
    !Imprime a matriz por linha
    write(*, *)
    write(*, *) " Matriz Lida"
    do i = 1, dimensao, 1
	    write(*, *) (matriz(i,j), j = 1, dimensao, 1)
  	end do

    write(*, *)
    write(*, *)
    write(*, *) " Soma dos elementos da diagonal principal =  ",&
                &soma_principal(matriz, dimensao)
    write(*, *) " Soma dos elementos da diagonal secundaria = ",&
                &soma_secundaria(matriz, dimensao)                
   stop
end program diagonais_matriz
!
! Funcao que calcula a soma da diagonal principal de uma matriz
!
function soma_principal(matriz, dimensao)
	implicit none
    integer dimensao, matriz(10, dimensao), i, soma_principal 
    soma_principal = 0
	do i = 1, dimensao, 1
		soma_principal = soma_principal + matriz(i,i)
    end do
    return
end function soma_principal    

!
! Funcao que calcula a soma da diagonal principal de uma matriz
!
function soma_secundaria(matriz, dimensao)
	implicit none
    integer soma_secundaria, dimensao, matriz(10, dimensao), i, j
    soma_secundaria = 0
	do i = 1, dimensao, 1
      do j = 1, dimensao, 1
        if (i + j == dimensao + 1) then
		   soma_secundaria = soma_secundaria + matriz(i, j)
        end if
      end do  
    end do
    return
end function soma_secundaria    
        