IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Comparaison de tableaux


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2013
    Messages : 21
    Points : 25
    Points
    25
    Par défaut Comparaison de tableaux
    Bonjour
    je suis en train de m'arracher les cheveux sur une manip de tableau.
    Je fais une comparaison de lignes sur un tableau, pour calculer une différence selon les valeurs.la comparaison se fait nickel et je crée un tableau avec les résultats.je voudrais simplement retirer de cette comparaison que la ligne se compare avec elle-même.
    J'ai trouvé un moyen de la repérer (if (h==k){w=666;}) mais j'ai l'impression que mon tableau est trop grand (si je fais un continue par ex) et du coup je récupère une valeur zéro, bref je suis perdu...
    Quelqu'un peut-il m'aider?
    Voilà mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    public class discord2 {
        static float vc;
        public static void main(String[]args){
        float c[][]=new float[7][5];
        float w=0;
        float [][] perf=new float[7][5];
        perf[0]=new float[]{120f,284f,5f,3.5f,18f};
        perf[1]=new float[]{150f,269f,2f,4.5f,24f};
        perf[2]=new float[]{100f,413f,4f,5.5f,17f};
        perf[3]=new float[]{60f,596f,6f,8f,20f};
        perf[4]=new float[]{30f,1321f,8f,7.5f,16f};
        perf[5]=new float[]{80f,734f,5f,4f,21f};
        perf[6]=new float[]{45f,982f,7f,8.5f,13f};
        System.out.println(" la table de performance : ");
        System.out.println("*****************************");
            for (int i=0;i<7;i++){
                for (int j=0;j<5;j++){
                System.out.print (perf[i][j]+" ");
                }
                System.out.println();
            }
            for(int k=0;k<7;k++){
                for(int h=0; h<7;h++){
     
                    int[] x={0,1};
                    for(int l:x){
     
                        if (h==k){w=666;}
                        else if (perf[h][l]<=perf[k][l]){
    			w=-(perf[h][l]-perf[k][l]);
     
    			}else w=0;	
     
                    vc=w;
                    c[h][l]=vc;
                    vc=0;
     
                    }
                    int[]z={2,3,4};
            for(int l:z){
                if (h==k){w=666;}
                else if(perf[h][l]>=perf[k][l]){
                w=perf[h][l]-perf[k][l];
                    }
                else w=0;
                vc=w;
                    c[h][l]=vc;
                    vc=0;
                }
     
                }
     
            for(int u=0; u<7;u++){
    					for(int x=0; x<5;x++){
    						System.out.print(c[u][x]+"  ");	
    					}
    					System.out.println();
    				}
            System.out.println("\n");
            }
        }
     
    }

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Tu ne risques pas de t'en sortir tant que tu ne sauras pas indenter correctement ton code.
    Mais bon.

    Avec tes boucles imbriquées de h et k qui vont de 0 à 7 tous les deux, tu te retrouves à calculer deux fois chaque combinaison, mais à ne garder qu'un seul résultat pour chaque combinaison (celui de h.)
    Il faudrait que h aille de k+1 à 7, pas de 0 à 7.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    heu non, c'est bien pire.

    c[0][0], par exemple, contient successivement les résultatzs des comparaisons

    perf[0][0] <-> perf[0][0] (k=0,h=0)
    perf[0][0] <-> perf[1][0] (k=1,h=0)
    perf[0][0] <-> perf[2][0] (k=2,h=0)
    perf[0][0] <-> perf[3][0] (k=3,h=0)
    perf[0][0] <-> perf[4][0] (k=4,h=0)


    Et pour ce que j'en juge, le resultat à chaque k, est affiché correctement, avec des 666 lors que la ligne se compare à elle même.

    J'ai bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    666.0  666.0  666.0  666.0  666.0  
    0.0  15.0  0.0  1.0  6.0  
    20.0  0.0  0.0  2.0  0.0  
    60.0  0.0  1.0  4.5  2.0  
    90.0  0.0  3.0  4.0  0.0  
    40.0  0.0  0.0  0.5  3.0  
    75.0  0.0  2.0  5.0  0.0
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    30.0  0.0  3.0  0.0  0.0  
    666.0  666.0  666.0  666.0  666.0  
    50.0  0.0  2.0  1.0  0.0  
    90.0  0.0  4.0  3.5  0.0  
    120.0  0.0  6.0  3.0  0.0  
    70.0  0.0  3.0  0.0  0.0  
    105.0  0.0  5.0  4.0  0.0
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    0.0  129.0  1.0  0.0  1.0  
    0.0  144.0  0.0  0.0  7.0  
    666.0  666.0  666.0  666.0  666.0  
    40.0  0.0  2.0  2.5  3.0  
    70.0  0.0  4.0  2.0  0.0  
    20.0  0.0  1.0  0.0  4.0  
    55.0  0.0  3.0  3.0  0.0
    et la ligne de 666 descend de 1 cran à chaque fois.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2013
    Messages : 21
    Points : 25
    Points
    25
    Par défaut
    oui c'est ça tchize, j'arrive bien à identifier quand la ligne se compare à elle-même, je voudrais juste ne pas l'afficher dans mon tableau de résultat...

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 36
    Points : 38
    Points
    38
    Par défaut
    Salut, tu développes en java pas en C.., je te conseille de modifier ta structure de donnée, tu y verras bcp plus clair et plus de solutions s'offriront à toi : en général on peux faire bcp de choses assez compliqué en utilisant les listes :
    Tu créé un bean(un objet) encapsulant ta structure de donnée(chaque ligne) et tu créer une liste de bean c'est comme ça que j'aurais commencer quitte à "nourrir" ta liste en faisant un parsage tableau de tableau vers liste de bean. ensuite tu peux faire plein de manipulation(agrégation, etc.. mais ce n'est pas pour ça qu'il ne faut pas réfléchir) bon courage

  6. #6
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Citation Envoyé par filoman Voir le message
    j'arrive bien à identifier quand la ligne se compare à elle-même, je voudrais juste ne pas l'afficher dans mon tableau de résultat...
    Bonjour,

    Moi je ne vois plus de 666
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    for (int k = 0; k < 7; k++) {
                for (int h = 0; h < 7 && h != k ; h++) {
     
                    int[] x = {0, 1};
                    for (int l : x) {
     
                        if (h == k) {
                            w = 666;
                        } else if (perf[h][l] <= perf[k][l]) {
                            w = -(perf[h][l] - perf[k][l]);
     
                        } else {
                            w = 0;
                        }
     
                        vc = w;
                        c[h][l] = vc;
                        vc = 0;
     
                    }
                    int[] z = {2, 3, 4};
                    for (int l : z) {
                        if (h == k) {
                            w = 666;
                        } else if (perf[h][l] >= perf[k][l]) {
                            w = perf[h][l] - perf[k][l];
                        } else {
                            w = 0;
                        }
                        vc = w;
                        c[h][l] = vc;
                        vc = 0;
                    }
     
                }
     
                for (int u = 0; u < 7; u++) {
                    for (int x = 0; x < 5; x++) {
                        System.out.print(c[u][x] + "  ");
                    }
                    System.out.println();
                }
                System.out.println("\n");
            }

    Edit: Bien que ça marche avec un seul "&" (ce qui m'étonne...) et le résultat est le même, c'est mieux comme ça...
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  7. #7
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Citation Envoyé par Lio75 Voir le message
    Salut, tu développes en java pas en C...
    Le C, ça aide parfois...
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2013
    Messages : 21
    Points : 25
    Points
    25
    Par défaut
    Mishulyna effectivement il n'y a plus de 666 mais à chaque itération il n'y a qu'une ligne de résultats, qui se rajoute à chaque boucle...

  9. #9
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Je vois...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
        int compare = 0;
     
                ...
     
        for (int u = 0; u < 7; u++) {
                    for (int x = 0; x < 5; x++) {
                        if (c[u][x] != 666) {
                            compare = 0;
                            System.out.print(c[u][x] + "  ");
                        } else {
                           compare = -1;
                        }
                    }
                    if(compare == 0){
                        System.out.println();
                    }       
                }
                System.out.println("\n");
            }
    Ca affiche:
    0.0 15.0 0.0 1.0 6.0
    20.0 0.0 0.0 2.0 0.0
    60.0 0.0 1.0 4.5 2.0
    90.0 0.0 3.0 4.0 0.0
    40.0 0.0 0.0 0.5 3.0
    75.0 0.0 2.0 5.0 0.0


    30.0 0.0 3.0 0.0 0.0
    50.0 0.0 2.0 1.0 0.0
    90.0 0.0 4.0 3.5 0.0
    120.0 0.0 6.0 3.0 0.0
    70.0 0.0 3.0 0.0 0.0
    105.0 0.0 5.0 4.0 0.0


    0.0 129.0 1.0 0.0 1.0
    0.0 144.0 0.0 0.0 7.0
    40.0 0.0 2.0 2.5 3.0
    70.0 0.0 4.0 2.0 0.0
    20.0 0.0 1.0 0.0 4.0
    55.0 0.0 3.0 3.0 0.0

    ...
    Comme ça c'est mieux?
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2013
    Messages : 21
    Points : 25
    Points
    25
    Par défaut
    c'est nickel! Bonne idée de mettre un marqueur, ça ne m'était pas venu à l'idée.Merci!
    je remets mon code avec ton marqueur ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    public class discord {
        static float vc;
        public static void main(String[]args){
        float c[][]=new float[7][5];
        float w=0;
        float [][] perf=new float[7][5];
        perf[0]=new float[]{120f,284f,5f,3.5f,18f};
        perf[1]=new float[]{150f,269f,2f,4.5f,24f};
        perf[2]=new float[]{100f,413f,4f,5.5f,17f};
        perf[3]=new float[]{60f,596f,6f,8f,20f};
        perf[4]=new float[]{30f,1321f,8f,7.5f,16f};
        perf[5]=new float[]{80f,734f,5f,4f,21f};
        perf[6]=new float[]{45f,982f,7f,8.5f,13f};
        System.out.println(" la table de performance : ");
        System.out.println("*****************************");
            for (int i=0;i<7;i++){
                for (int j=0;j<5;j++){
                    System.out.print (perf[i][j]+" ");
                    }
                    System.out.println();
                }
                for(int k=0;k<7;k++){
                    for(int h=0; h<7;h++){
                        int[] x={0,1};
                        for(int l:x){
                            if (h==k){w=666;}
                            else if (perf[h][l]<=perf[k][l]){
                                w=-(perf[h][l]-perf[k][l]);
                                }else w=0;	
                                vc=w;
                                c[h][l]=vc;
                                vc=0;
                                }
                            int[]z={2,3,4};
                            for(int l:z){
                                if (h==k){w=666;}
                                else if(perf[h][l]>=perf[k][l]){
                                    w=perf[h][l]-perf[k][l];
                                    }
                                else w=0;
                                vc=w;
                                c[h][l]=vc;
                                vc=0;
                                }
                            }
                    int compare=0;
                    for(int u=0; u<7;u++){
                        for(int x=0; x<5;x++){
                            if (c[u][x] !=666){
                            compare=0;
                            System.out.print(c[u][x]+"  ");
                            }else{compare = -1;
                            }
                            }
                        if(compare ==0){
                            System.out.println();
                            }
                        }
                    System.out.println("\n");
                    }
                }
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparaison de tableaux (PERL + MYSQL + CISCO)
    Par pat94 dans le forum Langage
    Réponses: 5
    Dernier message: 05/10/2007, 15h06
  2. comparaison deux tableaux
    Par bezoindaidde dans le forum Langage
    Réponses: 13
    Dernier message: 06/07/2007, 15h51
  3. Comparaisons de tableaux sur des feuilles différentes
    Par Olanor dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/07/2007, 07h32
  4. Comparaison de Tableaux
    Par Currahee dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 23/02/2007, 11h14
  5. [langage] Comparaison de tableaux
    Par WetzlarMan dans le forum Langage
    Réponses: 2
    Dernier message: 22/04/2004, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo