Bonsoir à tous,
J'ai construit une classe Matrice, cependant je dois créer une classe Essai, pour tester toutes les méthodes...
Malheureusement je vois pas comment s'y prendre...On m'a dit que je devais crée (Par Exemple) une liste d'étudiants avec plusieurs notes, avec laquel on leur attribué une coefficient. Ainsi on pourrai faire différentes moyennes (moyenne classe, dans chaque matière...)
C'est pourquoi je vous pose cette question, je ne vois pas du tout comment je pourrai faire...
Merci pour tous vos conseils et pistes.
Désolé la Classe est longue !!!
public class Matrice {
//Représentation :
int [][] valeurs = null;
//Constructeur :
public Matrice(int [][] t){
int nbLignes = t.length;
int nbCol = t[0].length;
for (int i=1; i<t.length; i++){
if(t[i].length!=nbCol){
System.out.println("Matrice non stabilisée ! ");
System.out.println(1);
}
}
valeurs = t;
}
//Autre constructeur :
public Matrice(int nbl, int nbc){
valeurs = new int[nbl][nbc];
}
//Nbre de lignes :
public int nbreLignes(){
return valeurs.length;
}
//Nbre de colonnes :
public int nbreColonnes(){
return valeurs[0].length;
}
//Afficher :
public void afficher(){
for(int i=0; i<nbreLignes();i++){
for(int j=0; j<nbreColonnes(); j++){
System.out.println(" " + valeurs[i][j]);
}
System.out.println();
}
}
//Faire la somme des lignes :
public int[] sommesLignes(){
int[] sommes = new int[nbreLignes()];
for(int i=0; i<nbreLignes(); i++){
sommes[i]=0; //initialisation
for(int j=0; j<nbreColonnes(); j++){
sommes[i]+= valeurs[i][j];
}
}
return sommes;
}
public int[] moyennesLignes(int denominateur){
int[]s = sommesLignes();
for(int i=0; i<nbreLignes(); i++){
s[i]/= denominateur;
}
return s;
}
//Sommes des colonnes :
public int[] sommesColonnes(){
int[] sommesCol = new int[nbreColonnes()];
for(int i=0; i<nbreColonnes();i++){
sommesCol[i]=0; //initialisation
for(int j=0; j<nbreLignes(); j++){
sommesCol[i]+=valeurs[j][i];
}
}
return sommesCol;
}
//Moyenne des colonnes :
public int[] moyenneColonnes(int denominateur){
int[] s = sommesColonnes();
for(int i=0; i<nbreColonnes(); i++){
s[i]/=denominateur;
}
return s;
}
public void setValeurs(int i, int j, int val){
valeurs[i][j] = val;
}
public int getValeurs(int i, int j){
if(i<nbreLignes() && j<nbreColonnes()){
return valeurs[i][j];
}
else{
System.out.println("Erreur !");
System.exit(1);
}
return valeurs[i][j];
}
//Construction de la transposée :
public Matrice transposer(){
Matrice transp = new Matrice(nbreColonnes(), nbreLignes());
for(int i=0; i<nbreLignes();i++){
for(int j=0; j<nbreColonnes(); j++){
transp.setValeurs(j,i,valeurs[i][j]);
}
}
return transp;
}
//Tester qu'une matrice est identique à une autre passée en paramètre :
public boolean estIdentique(Matrice mat){
if(nbreLignes()!= mat.nbreLignes() || nbreColonnes()!= mat.nbreColonnes()){
return false;
}
for(int i=0; i<nbreLignes(); i++){
for(int j=0; j<nbreColonnes(); j++){
if(valeurs[i][j]!= mat.getValeurs(i, j)){
return false;
}
}
}
return true;
}
//Addition d'une matrice avec une autre passée en paramètre ;
public Matrice additionner(Matrice b){
Matrice c = new Matrice(nbreLignes(), nbreColonnes());
if(nbreLignes()!= b.nbreLignes() || nbreColonnes()!= b.nbreColonnes()){
System.out.println("Erreur !");
System.exit(1);
}
for(int i=0; i<nbreLignes(); i++){
for(int j=0; j<nbreColonnes(); j++){
c.setValeurs(i, j, valeurs[i][j] + b.getValeurs(i,j));
}
}
return c;
}
//multiplier la matrice par un nombre :
public Matrice multiplierNb(int nb){
Matrice res = new Matrice(nbreLignes(), nbreColonnes());
for(int i=0; i<nbreLignes(); i++){
for(int j=0; j<nbreColonnes(); j++){
res.setValeurs(i, j, valeurs[i][j]*nb);
}
}
return res;
}
//Multiplier la matrice par un vecteur :
public Matrice muliplierVect(int[] t){
Matrice res = new Matrice(nbreLignes(), nbreColonnes());
if(nbreColonnes()!= t.length){
System.out.println("Erreur !");
System.exit(1);
}
for(int i=0; i<nbreLignes(); i++){
for(int j=0; j<nbreColonnes(); j++){
res.setValeurs(i, j, valeurs[i][j]*t[j]);
}
}
return res;
}
//Multiplier la matrice par une autre matrice passée en paramètre :
public Matrice multplierMat(Matrice m){
Matrice res = new Matrice(nbreLignes(), m.nbreColonnes());
if(nbreColonnes()!= m.nbreColonnes()){
System.out.println("Erreur !");
System.exit(1);
}
for(int i=0; i<nbreLignes(); i++){
for(int j=0; j<m.nbreColonnes(); j++){
m.setValeurs(i, j, 0); //initialisation
for(int k=0; k<nbreColonnes(); k++){
res.setValeurs(i, j, res.getValeurs(i, j) + valeurs[i][k]*m.getValeurs(k, j));
}
}
}
return res;
}
//Triangle de Pascal :
public Matrice trianglePascal(int n){
Matrice res = new Matrice(n, n);
res.setValeurs(0,0,1);
for(int i=1; i<n; i++){
for(int j=1; j<n; j++){
res.setValeurs(i, j, 0); //initialisation
}
}
for(int i=1; i<n; i++){
res.setValeurs(i, 0, 1); res.setValeurs(i, i, 1);
for(int j=1; j<i; j++){
res.setValeurs(i, j, res.getValeurs(i-1, j-1) + res.getValeurs(i-1, j));
j++;
}
}
return res;
}
//Triangle de Pascal en optimisant :
public Matrice trianglePascal2(int n){
int[][] t = new int[n][];
for (int i=0; i<n; i++){
t[i] = new int [i+1];
t[i][0] = 1;
t[i][i]= 1;
for(int j=1; j<i; j++){
t[i][j] = t[i-1][j-1] + t[i-1][j];
}
}
Matrice res = new Matrice(t); //inihiler les conditions sur les "tuilles de matrices non constantes"
return res;
}
} //Fin de la classe
Partager