/* Auteur: Nicolas JANEY          */
/* nicolas.janey@univ-fcomte.fr   */
/* Mars 2006                      */

import java.io.*;
import java.text.*;

public class SommesDiagonalesMatrice {
  static BufferedReader flux = new BufferedReader(new InputStreamReader(System.in));
  static DecimalFormat df = new DecimalFormat("0.0000 ");

  /* Creation d'une chaine de caracteres                  */
  /* representant un nombre reel complemente par          */
  /* des espaces pour obtenir une longueur totale fixee   */
  
  public static String format(float v) {
    if ( v < 10.0F )
      return("  "+df.format(v));
      else
      if ( v < 100.0F )
        return(" "+df.format(v));
        else
        return(df.format(v));
  }
  
  /* Affichage d'une matrice de reelss formatee           */
  /* en lignes et en colonnes                             */

  public static void affichageMatrice(float [][] m) {
    for ( int i = 0 ; i < m.length ; i++ ) {
      for ( int j = 0 ; j < m[i].length ; j++ )
        System.out.print(format(m[i][j]));
      System.out.println(); }
  }
  
  /* Creation d'une matrice de reels tires au sort entre  */
  /* 0 et une valeur limite pour un nombre arbitraire     */
  /* de lignes et de colonnes                             */
  
  public static float [][] matriceAuHasard(int lignes,int colonnes,float max) {
    float [][] m = new float[lignes][colonnes];
    for ( int i = 0 ; i < lignes ; i++ )
      for ( int j = 0 ; j < colonnes ; j++ )
        m[i][j] =(float) Math.random()*max;
    return(m);
  }

  /* Calcul de la somme des valeurs de la diagonale       */
  /* principale d'une matrice de reels                    */
  
  public static float sommeDiagonalePrincipaleMatrice(float [][] m) {
    float cumul = 0.0F;
    for ( int i = 0 ; i < m.length ; i++ )
      cumul += m[i][i];
    return(cumul);
  }
  
  /* Calcul de la somme des valeurs de la diagonale       */
  /* secondaire d'une matrice de reels                    */
  
  public static float sommeDiagonaleSecondaireMatrice(float [][] m) {
    float cumul = 0.0F;
    for ( int i = 0 ; i < m.length ; i++ )
      cumul += m[i][m.length-1-i];
    return(cumul);
  }
  
  /* Fonction principale                                  */

  public static void main(String [] args) throws IOException {
    float [][] mat = matriceAuHasard(5,5,100.0F);
    System.out.println("Matrice");
    affichageMatrice(mat);
    System.out.println();
    float s1 = sommeDiagonalePrincipaleMatrice(mat);
    System.out.println("Somme diagonale principale : "+s1);
    float s2 = sommeDiagonaleSecondaireMatrice(mat);
    System.out.println("Somme diagonale secondaire : "+s2);
  }
}