Blocage sur fonction avec tableau en paramètre en java

eltheola Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
J'ai un petit problème à l'exécution de mon programme, en fait il compile mais ne renvoi rien et je ne vois pas comment modifier mes paramètres pour afficher quelque chose.
Merci d'avance.


Configuration: Windows / Chrome 101.0.4951.54
A voir également:

3 réponses

Utilisateur anonyme
 
Bonjour

Pour poster un code, il faut faire comme décrit là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
eltheola Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour, je ne comprends pas, vous ne voyez pas le code ?
Sinon c'est ça :


package fr.elthe.programme;

public class Main {

public static void main(String[] args) {
System.out.println("fonctionne stp");

}
public static void aro(int [][] M, int [][] A, int [][] G, int K, int S){
if(K==0){
return;
}
int aks=A[K][S];
aro(M,A,G,K-1,S-aks);
System.out.println("entrepot =" + K );
System.out.println("stock livré =" + aks);
System.out.println("gain=" + G[K-1][aks]);
}
static int [][][] calculerMA (int [][] G){
int n=G.length, S=G[0].length-1;
int [][] M = new int [n+1][S+1], A=new int[n+1][S+1];
for(int i =0; S<S+1;S++){
for(int k=1;k<n+1;k++){
for(int s=0;s<n+1;s++){
M[k][s]=-100000000;
for(int sp=1;sp<s+1;sp++){
int mksp=M[k-1][s-sp]+G[k-1][sp];
if(mksp>M[k][s]){
M[k][s]=mksp;
A[k][s]=sp;
}
}
}
}
}
return new int[][][]{M,A};
}


}
0
Utilisateur anonyme > eltheola Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Alors, dans le petit tuto, il est écrit de mettre le code dans les balises et pas après.
Tu peux modifier ton message en cliquant sur les 3 … en bas à droite.

Et avec une image, on ne peut pas copier ton code pour le tester.
0
eltheola Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
package fr.elthe.programme;

public class Main {

	public static void main(String[] args) {
		System.out.println("fonctionne stp");

	}
    public static void aro(int [][] M, int [][] A, int [][] G, int K, int S){
        if(K==0){
            return;
        }
        int aks=A[K][S];
        aro(M,A,G,K-1,S-aks);
        System.out.println("entrepot =" +  K );
        System.out.println("stock livré =" + aks);
        System.out.println("gain=" + G[K-1][aks]);
    }
    static int [][][] calculerMA (int [][] G){
        int n=G.length, S=G[0].length-1;
        int [][] M = new int [n+1][S+1], A=new int[n+1][S+1];
        for(int i =0; S<S+1;S++){
            for(int k=1;k<n+1;k++){
                for(int s=0;s<n+1;s++){
                    M[k][s]=-100000000;
                    for(int sp=1;sp<s+1;sp++){
                        int mksp=M[k-1][s-sp]+G[k-1][sp];
                        if(mksp>M[k][s]){
                            M[k][s]=mksp;
                            A[k][s]=sp;
                        }
                    }
                }
            }
        }
        return new int[][][]{M,A};
    }
    

}
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Un programme Java commence toujours par la méthode
public static void main(String[] args)
mais la tienne ne fait qu'une chose
System.out.println("fonctionne stp");
. Tout le reste n'étant jamais appelé par la méthode main (ni directement, ni transitivement), c'est du code mort dans lequel le programme n'ira jamais.

Pour que ton programme utilise tes deux méthodes, celles-ci doivent donc être appelées par la méthode main, et vu qu'elles utilisent des paramètres il faudra d'abord créer des valeurs à mettre dans ces paramètres. De plus, il faudra récupérer le résultat de tes méthodes et les afficher, sinon tu ne saura pas ce qu'il s'est passé.

Java n'est pas un langage magique, il fera tout ce que tu lui demandes, mais il faut d'abord lui demander tout ce que tu veux faire.
0
eltheola Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Je vois bien qu'il faut l'appeler dans la méthode main mais je n'arrive pas à comprendre comment écrire un paramètre qui est un tableau 2D. Je ne vois pas comment écrire les valeurs que je veux mettre dedans.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"je n'arrive pas à comprendre comment écrire un paramètre qui est un tableau 2D"

Un exemple :
int[][] tab = {
    {11, 12, 13},
    {21, 22, 23},
    {31, 32, 33}
};
1
eltheola Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
petite question supplémentaire, comment je fais pour faire -infini en java ? Car dans calculerMA je mets :
M[k][s]=-100000000;


mais il faudrait mieux que ce soit égale à -infini.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > eltheola Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Mathématiquement, rien n'est égal à l'infini, c'est donc impossible de lui donner une valeur.

Tu peux éventuellement considérer Integer.MIN_VALUE et Integer.MAX_VALUE mais ce sont des nombres comme les autres, des calculs avec ces valeurs ne bénéficient pas des propriétés de l'infini.
0