/* Manipulations sur une matrice de int */ public class ManipulationsMatriceEntier { /* Fonction de creation d'une matrice de int */ /* initialisee avec des nombres aleatoires */ /* compris dans l'intervalle [0,max] */ static int [][] initRandMatrice(int lignes,int colonnes,int max) { int [][] tab = new int[lignes][colonnes]; for ( int i = 0 ; i < lignes ; i++ ) { for ( int j = 0 ; j < colonnes ; j++ ) { tab[i][j] =(int) (Math.random()*(max+1)); } } return tab; } /* Fonction d'affichage des valeurs contenues */ /* dans une matrice de int */ static void affichageMatrice(int [][] t) { for ( int i = 0 ; i < t.length ; i++ ) { for ( int j = 0 ; j < t[0].length ; j++ ) { Ecran.formater("%5d",t[i][j]); } Ecran.sautDeLigne(); } } ///////////////////////////////////////////////// /* Fonction de recherche et retour */ /* de la plus petite valeur contenue */ /* dans une matrice d'int */ /* t : Le tableau d'int où faire la recherche */ static int min(int [][] t) { int min = t[0][0]; for ( int i = 0 ; i < t.length ; i++ ) { for ( int j = 0 ; j < t[0].length ; j++ ) { if ( t[i][j] < min ) { min = t[i][j]; } } } return min; } /* Type agrege de stockage d'une position 2D } /* a coordonnees entières */ static class Position { int l = 0; int c = 0; }; /* Fonction de recherche et retour */ /* des coordonnees de la plus petite valeur */ /* contenue dans une matrice d'int */ /* t : La matrice d'int où faire la recherche */ static Position positionMin(int [][] t) { Position pMin = new Position(); for ( int i = 0 ; i < t.length ; i++ ) { for ( int j = 0 ; j < t[0].length ; j++ ) { if ( t[i][j] < t[pMin.l][pMin.c] ) { pMin.l = i; pMin.c = j; } } } return pMin; } /* Fonction de calcul et retour */ /* de la somme des valeurs contenues */ /* dans un tableau d'int */ /* ligne : Le tableau d'int traité */ static int sommeLigne(int [] ligne) { int somme = 0; for ( int i = 0 ; i < ligne.length ; i++ ) { somme = somme+ligne[i]; } return somme; } /* Fonction de calcul et retour */ /* de l'indice de la ligne de somme maximum */ /* des lignes contenues */ /* dans une matrice d'int */ /* t : Le tableau d'int traité */ static int ligneMax(int [][] t) { int somme; int max = sommeLigne(t[0]); int iMax = 0; for ( int i = 1 ; i < t.length ; i++ ) { somme = sommeLigne(t[i]); if ( somme > max ) { iMax = i; max = somme; } } return iMax; } ///////////////////////////////////////////////// /* Programme principal */ public static void main(String [] args) { int iMax; int [][] t = initRandMatrice(20,8,999); affichageMatrice(t); Ecran.sautDeLigne(); Ecran.afficherln("Plus petite valeur : ",min(t)); Position p = positionMin(t); Ecran.afficherln("En position : ",p.l," ",p.c); iMax = ligneMax(t); Ecran.afficherln("La ligne max est : ",iMax); } }