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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    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
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    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
    Membre averti
    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
    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
    Membre averti
    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
    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 505
    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 505
    Par défaut
    Citation Envoyé par Lio75 Voir le message
    Salut, tu développes en java pas en C...
    Le C, ça aide parfois...

  7. #7
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    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 505
    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...

+ 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, 16h06
  2. comparaison deux tableaux
    Par bezoindaidde dans le forum Langage
    Réponses: 13
    Dernier message: 06/07/2007, 16h51
  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, 08h32
  4. Comparaison de Tableaux
    Par Currahee dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 23/02/2007, 12h14
  5. [langage] Comparaison de tableaux
    Par WetzlarMan dans le forum Langage
    Réponses: 2
    Dernier message: 22/04/2004, 15h08

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