Calcul de matrice [Résolu]

camy12 9 Messages postés samedi 22 avril 2006Date d'inscription 16 mai 2006 Dernière intervention - 2 mai 2006 à 10:50 - Dernière réponse : camy12 9 Messages postés samedi 22 avril 2006Date d'inscription 16 mai 2006 Dernière intervention
- 9 mai 2006 à 11:02
bonjour tout le monde!!
je suis débutante en Java et avec eclipse aussi, j'afficher les elements d'une matrice et je veux calculer le maximum de chacune de ses colonnes, mon programme s'execute aleatoirement et je ne trouve pas l'erreurs.
si quelqu'un a une idée qu'il n'hesite à me la proposer.
merci à l'avance.
voici mon code:

public class Matrice {
  private int ligne;
  private int colonne;
  public double Mat[][];
 
 
  public Matrice(int ligne1, int colonne1)
  {
    ligne = ligne1;
    colonne = colonne1;
    Mat = new double[ligne][colonne];
  }
  ///////////...Affichage de la matrice m...//////////
   public static void printMat (double[][] m)
   {
    if (m == null)
      {
        System.out.println("Matrice nulle!");
        return;
      }
      int lignes = m.length;
      int colonne = m[0].length;
     
      for (int i=0; i<ligne; i++)
      {
        for (int j=0; j<colonne; j++)
        {
          System.out.print("\t" + m[i][j]);
        }
        System.out.println();
      }
     
  }
 public static double[] calculMaxCol(double [][]m){
      int ligne = m.length;
      int colonne = m[0].length;
      double max_c []= new double[6];
     
    
    for(int i=0;i<ligne;i++)
     {
     for(int j=0;j<colonne;j++)
      {
  
     for(int x=1;x<ligne ;x++)
      {
       if(m[i][j]<m[x][j])
       {
         max_c[j]=m[x][j];  
        }
       else
       {  
         max_c[j]=m[i][j];
       }
      }
       System.out.println(max_c[j]);
       }
       }
  
    return (max_c);
 }
    
   ///////////...la fonction main...//////////
  public static void main(String[] args){
   double m[][]={{2,5,8,6,9,4},{1,2,3,6,8,9},{7,8,5,2,6,2}};
   printMat(m);
   calculMaxCol(m);
  }
 
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
yannick_parchemal 31 Messages postés jeudi 13 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 3 mai 2006 à 18:25
3
Merci
Cadeau :)
Regarde bien !
Et sans vouloir te donner de conseils ;) refais le sans regarder :)

public class Matrice {

public double contenu[][];

public Matrice (double [][] contenu)
{
this.contenu=contenu;
}


////////// /...Affichage de la matrice m...//////////
public void printMat (){
for (int i=0; i<this.contenu.length; i++)
{
for (int j=0; j<this.contenu[i].length; j++)
{
System.out.print("\t" + this.contenu[i][j]);
}
System.out.println();
}

}
////////////////////////
// la méthode qui retourne le max de la colonne n° numColonne
////////////////
public double getMaxiCol(int numColonne){
double max = Double.NEGATIVE_INFINITY;
for(int i=0;i<this.contenu.length;i++)
if(this.contenu[i][numColonne]> max)
max=this.contenu[i][numColonne];
return (max);
}

//////////////// la méthode qui rend le max des colonnes/////////
public double [] getTabMaxiCol( )
{ int nbColonnes=this.contenu[0].length;
double [] res = new double[nbColonnes];
for(int colonne=0;colonne<nbColonnes;colonne++)
res[colonne]=getMaxiCol(colonne);
return res;
}


//////////////////la méthode qui affiche un tableau de double/////

public static void afficher(double [] tab){
for (int colonne=0;colonne<tab.length;colonne++)
System.out.println("\t" + tab[colonne]);
}

////////// /...la fonction main...//////////
public static void main(String[] args){
double m[][]={{2,5,8,6,9,4},{1,2,3,6,8,9},{7,8,5,2,6,2}};
Matrice matrice=new Matrice(m);
matrice.printMat();
afficher(matrice.getTabMaxiCol( ));
}
}

Merci yannick_parchemal 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de yannick_parchemal
yannick_parchemal 31 Messages postés jeudi 13 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 2 mai 2006 à 13:23
0
Merci
Bon, y a des progrès encore à faire :). En particulier, ce sont des méthodes d'instances qui doivent etre definies ici.

Quelques indications :

un constructeur qui prend en parametre un tableau de double
public Matrice (double [][] contenu){
...
}

Faire une méthode qui rend le maximum de la colonne n°i :
public double getMaxiCol(int numColonne){
...
}

puis une méthode qui rend (pas qui affiche) le tableau des maximum
public double [] getTabMaxiCol( ){
...
}

puis une autre qui affiche un tableau de double (statique celle là):
public static void afficher(double [] tab){
...
}


et ta méthode main va devenir plus sympatique :
public static void main(String[] args){
double m[][]={{2,5,8,6,9,4},{1,2,3,6,8,9},{7,8,5,2,6,2}};
Matrice matrice = new Matrice(m);
matrice.printMat(); // printMat doit etre ici une méthode d'instance
afficher(matrice.getTabMaxiCol( ));
}

Bon, ya pas la solution à ton problème mais un moyen de s'en approcher !
@+
Commenter la réponse de yannick_parchemal
camy12 9 Messages postés samedi 22 avril 2006Date d'inscription 16 mai 2006 Dernière intervention - 2 mai 2006 à 14:08
0
Merci
merci "yannick parchemal" je vais essayer de faire ce que tu m'as dit.
merci c'est tres gentil.
A+.
Commenter la réponse de camy12
camy12 9 Messages postés samedi 22 avril 2006Date d'inscription 16 mai 2006 Dernière intervention - 2 mai 2006 à 16:19
0
Merci
désolée j'ai toujours le même problème, j'ai essayé mais ça n'a pas marché.
si quelqu'un a une autre idée qu'il me la donne.
merci d'avance.
A+
Commenter la réponse de camy12
yannick_parchemal 31 Messages postés jeudi 13 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 2 mai 2006 à 17:21
0
Merci
Si tu veux être aidé, il nous faut ton listing modifié
@+
Commenter la réponse de yannick_parchemal
camy12 9 Messages postés samedi 22 avril 2006Date d'inscription 16 mai 2006 Dernière intervention - 3 mai 2006 à 16:54
0
Merci
bsr; ok je vous donne mon listing modifié.
merci d'avance.

public class Matrice {
  private  int ligne;
  private static  int colonne;
  public double Mat[][];

  public Matrice (double [][] contenu)
  {
    contenu=new double[ligne][colonne]; 
  }
  public Matrice(int ligne1, int colonne1)
  {
    ligne = ligne1;
    colonne = colonne1;
    Mat = new double[ligne][colonne];
  }

///////////...Affichage de la matrice m...//////////
   public static void printMat (double[][] m)
   {
    if (m == null)
      {
        System.out.println("Matrice nulle!");
        return;
      }
      int ligne = m.length;
      int colonne = m[0].length;
     
      for (int i=0; i<ligne; i++)
      {
        for (int j=0; j<colonne; j++)
        {
          System.out.print("\t" + m[i][j]);
        }
        System.out.println();
      }
     
  }
////////////////////////le méthode qui retourne le max de la colonne n° j////////////////
 public double getMaxiCol(int numColonne){
     double contenu[][]={};
      int ligne = contenu.length;
      int colonne = contenu[0].length;
      double max_c = 0;
   
    
    for(int i=0;i<ligne;i++)
     {
     for(int j=0;j<colonne;j++)
      {
     for(int x=1;x<ligne ;x++)
      {
       if(contenu[i][j]<contenu[x][j])
       {
         max_c=contenu[x][j];  
        }
       else
       {  
         max_c=contenu[i][j];
       }
      }
     System.out.println(max_c);
       }
       }
   
    return (max_c);
  }

////////////////la méthode qui rend le max des colonnes/////////
public double [] getTabMaxiCol( )
   {
     double tab[]=new double[6];
     for(int colonne=0;colonne<tab.length;colonne++)
     {
        tab[colonne]=getMaxiCol(colonne);
     }
    return tab;
    }
//////////////////la méthode qui affiche le tableau des max /////

public static void afficher(double [] tab){
     for (int colonne=0;colonne<tab.length;colonne++)
     {
         System.out.println("\t" + tab[colonne]);
     }

///////////...la fonction main...//////////
public static void main(String[] args){
   double m[][]={{2,5,8,6,9,4},{1,2,3,6,8,9},{7,8,5,2,6,2}};
   printMat(m);
   Matrice matrice=new Matrice(m);
   afficher(matrice.getTabMaxiCol( ));
}

j'espère que quelqu'un pourra m'aider.
à bientôt
Commenter la réponse de camy12
camy12 9 Messages postés samedi 22 avril 2006Date d'inscription 16 mai 2006 Dernière intervention - 9 mai 2006 à 11:02
0
Merci
je m'excuse pour ce retard.
merci yannick c'est tres gentil.
bonne journée.
A+
Commenter la réponse de camy12

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.