éviter la redondance et regrouper la resultat
Résolu/Fermé
nidhalos
Messages postés
11
Date d'inscription
vendredi 11 mai 2018
Statut
Membre
Dernière intervention
4 mai 2019
-
Modifié le 11 mai 2018 à 08:26
nidhalos - 11 mai 2018 à 16:09
nidhalos - 11 mai 2018 à 16:09
A voir également:
- éviter la redondance et regrouper la resultat
- Comment regrouper des pdf - Guide
- Lexer resultat - Télécharger - Sport
- Regrouper plusieurs feuilles excel en une seule - Guide
- Resultat loto d'aujourd'hui ✓ - Forum Excel
- Samia, kevin et jason ont gardé la trace de leurs ventes quotidiennes du mois de juillet 2016. dans la feuille bilan, il manque les résultats de jason. insérez une colonne entre samia et kevin et reportez-y les résultats de jason. quel mot secret apparait en f2 ? - Forum Excel
1 réponse
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
11 mai 2018 à 09:33
11 mai 2018 à 09:33
Bonjour,
Déjà il ne faudrait jamais comparer deux objets avec l'opérateur
Pour comparer la valeur de deux objets, il faut utiliser la méthode equals →
Ensuite, si tu travailles avec des matrices en entrée, il serait cohérent d'avoir une matrice en sortie.
Ici tu as un String en sortie, donc forcément ça va être compliqué d'appliquer le même traitement alors que tu n'as plus de matrice à traiter...
Par contre, tu as écrit en dur des
Sur le même principe, je pense que c'est une erreur de faire un code spécifique à la comparaison de 3 matrices, tu devrais généraliser pour que ça fonctionne avec 2, 3, 4... 150 matrices.
Au final, cela reviendrait un peu à traiter non plus des
Remarque : je ne suis pas sûr que les tableaux soient les structures de données les plus pertinentes, est-ce que tu as déjà manipulé des List, Set ou Map ? Ce serait peut-être utile ici.
Et tant qu'à modifier le code, il n'y a pas de raison de se limiter à des String, tu devrais pouvoir généraliser ton programme avec tous types d'objets Java, il n'y a rien de spécifiques aux String dans ton traitement.
Pour la clarté du code maintenant, je t'invite à utiliser des noms de variables plus explicites.
Par exemple
On comprends tout de suite que
Remarque : je n'ai pas du tout compris ton calcul et ton résultat.
Si je ne regarde que la première partie avec tab1 et tab2, ça donne ceci.
tab1:
tab2 :
résultat :
Est-ce que tu pourrais expliquer à quoi correspond ce résultat ?
De plus, tu as indiqué vouloir obtenir au final "bonjours=world=test", pourquoi deux signes égal dans la même ligne ?
Déjà il ne faudrait jamais comparer deux objets avec l'opérateur
==car cela ne compare pas leur valeur mais leur référence. Ici tu es dans un cas particulier où toutes tes valeurs sont écrites en dures dans le code, donc ça marche, toutes ces String partagent la même référence, mais si tu entrais tes valeurs au clavier ça ne fonctionnerait plus.
Pour comparer la valeur de deux objets, il faut utiliser la méthode equals →
if (tab1[i][w].equals(tab2[j][e]))
Ensuite, si tu travailles avec des matrices en entrée, il serait cohérent d'avoir une matrice en sortie.
Ici tu as un String en sortie, donc forcément ça va être compliqué d'appliquer le même traitement alors que tu n'as plus de matrice à traiter...
Par contre, tu as écrit en dur des
case(0),
case(1),
if(e==0),
if(e==1),
tab1[i][0]et
tab2[j][1]mais tout ça ne fonctionnera que si tes matrices sont de tailles 2x2, dès que tu passeras à des tailles supérieures ton code ne prendra pas en compte les autres lignes et colonnes. Quand on programme, il faut toujours penser au cas général.
Sur le même principe, je pense que c'est une erreur de faire un code spécifique à la comparaison de 3 matrices, tu devrais généraliser pour que ça fonctionne avec 2, 3, 4... 150 matrices.
Au final, cela reviendrait un peu à traiter non plus des
String[][]mais des
String[][][]...
Remarque : je ne suis pas sûr que les tableaux soient les structures de données les plus pertinentes, est-ce que tu as déjà manipulé des List, Set ou Map ? Ce serait peut-être utile ici.
Et tant qu'à modifier le code, il n'y a pas de raison de se limiter à des String, tu devrais pouvoir généraliser ton programme avec tous types d'objets Java, il n'y a rien de spécifiques aux String dans ton traitement.
Pour la clarté du code maintenant, je t'invite à utiliser des noms de variables plus explicites.
Par exemple
if (tab1[row1][col1] == tab2[row2][col2])c'est mieux que ton
if (tab1[i][w] == tab2[j][e]).
On comprends tout de suite que
col1est lié aux colonnes de
tab1, c'est nettement moins évident avec
w...
Remarque : je n'ai pas du tout compris ton calcul et ton résultat.
Si je ne regarde que la première partie avec tab1 et tab2, ça donne ceci.
tab1:
hello | world |
bonjours | hey |
tab2 :
hi | hey |
world | test |
résultat :
bonjours = world |
hello = test |
Est-ce que tu pourrais expliquer à quoi correspond ce résultat ?
De plus, tu as indiqué vouloir obtenir au final "bonjours=world=test", pourquoi deux signes égal dans la même ligne ?
11 mai 2018 à 12:18
En effet, le résultat devrait être similaire en changeant l'ordre des tableaux, mais ce n'est pas le cas.
Ici j'inverse les deux premiers tableaux :
Juste en changeant l'ordre des tableaux dans un résultat j'ai "bonjours=world" et dans l'autre "hi=hello" ça me semble incorrect.
En reprenant ton code, cette version devrait simplifier ton programme :
11 mai 2018 à 15:12
1) c'est de compare chaque élément de matrice X par les autres éléments de matrice différente : et et .
2) en suit je doit parcourir et filtre le résultat obtenue de cette maniéré :
si on a cette résultat :
ab=abc
at=ar
af=abc
ac=mj
...
elle doive être comme sa:
ab=abc=af ( une seul abc :et jointure les deux ligne dans un seul ligne)
at=ar
ac=mj
...
j'ai déjà résoudre la problème 1 : comparaison matrice mais je trouver une difficulté dans la partie filtrage
Modifié le 11 mai 2018 à 16:23
réellement cette une petite d'un algorithme plus complexe ;
oui je obligé de faire une truc pour filtre la résultat de comparaison ( votre solution de comparaison est parfait merci bien )
mes matrices sont de taille [..][1] et j' ai été oblige de faire une truc pour filtres la résultat de comparaison .
pour la signe "=" je suis oblige de faire deux signes dans la cas "bonjours=world=test" : si et seulement si :j'ai ( j'ai une chaîne de caractère en commun dans deux lignes différant :
bonjours=word
word=test
ou bien
bonjours = test
test = word
ou bien
bonjours = test
bonjours = word
( selon mes matrices j'ai pas le cas de trouver une string dans plus que deux lignes différentes ( max 2) )