Compare le contenu de 2 tableaux sans tenir compte de l'ordre
Résolu/Fermé
A voir également:
- Compare le contenu de 2 tableaux sans tenir compte de l'ordre
- Supprimer compte instagram - Guide
- Compte facebook piraté - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- 2 comptes whatsapp - Guide
2 réponses
yg_be
Messages postés
22717
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
22 avril 2024
1 474
Modifié le 15 sept. 2019 à 12:09
Modifié le 15 sept. 2019 à 12:09
bonjour, "ça ne marche pas", que se passe-t'il en réalité?
la ligne 30 me semble inutile et la ligne 8 me semble suspecte.
je te suggère d'utiliser des boucles for en remplacement de certaines boucles while, c'est beaucoup plus clair.
je te suggère aussi d'expliquer ce que tu penses que fait ton programme, comment tu as choisi de résoudre cet exercice.
la ligne 20 pourrait être modifiée pour réduire la quantité de travail.
réfléchis à ton utilisation des variables nb1 et nb2.
la ligne 30 me semble inutile et la ligne 8 me semble suspecte.
je te suggère d'utiliser des boucles for en remplacement de certaines boucles while, c'est beaucoup plus clair.
je te suggère aussi d'expliquer ce que tu penses que fait ton programme, comment tu as choisi de résoudre cet exercice.
la ligne 20 pourrait être modifiée pour réduire la quantité de travail.
réfléchis à ton utilisation des variables nb1 et nb2.
Bonjour yg_be. Merci pour ta reponse.
Tes remarques m'ont permis de revoir le code. Il marche maintenant.
Je le mets ici pour ceux qui en auront besoin
Tes remarques m'ont permis de revoir le code. Il marche maintenant.
Je le mets ici pour ceux qui en auront besoin
/** * Compare le contenu de 2 tableaux sans tenir compte de l'ordre. * @return true si les 2 tableaux contiennent les mêmes éléments * * avec les mêmes nombres d'occurrence * * (pas forcément dans le meme ordre). * **/ public static boolean similaires(final int[] tab1,final int[] tab2) { boolean resultat; int nb1=0; int nb2=0; if (tab1==null || tab2==null || tab1.length!=tab2.length) { resultat=false;} else { int i=0; while (i<tab1.length && nb1==nb2) { int k=0; for (int j=0;j<tab1.length;j++) { if (tab1[i]==tab1[j]){ nb1++; } } while(k<tab2.length && tab2[k]!=tab1[i]) { k++; } for (int m=0;m<tab2.length;m++) { if(tab2[k]==tab2[m]) { nb2++; } } i++; } if (i>=tab1.length) { resultat=true; } else { resultat=false; } } return resultat; }
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
26 sept. 2019 à 21:29
26 sept. 2019 à 21:29
Pour ceux que ce problème intéresserait je propose également ce corrigé :
public static boolean similaires(int[] tab1, int[] tab2) { if (tab1 == null || tab2 == null || tab1.length != tab2.length) return false; for (int n : tab1) { if (nbOccurences(tab1, n) != nbOccurences(tab2, n)) return false; } return true; } private static int nbOccurences(int[] tab, int value) { int result = 0; for (int n : tab) { if (n == value) result++; } return result; }
Bolaaro24
>
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
27 sept. 2019 à 11:18
27 sept. 2019 à 11:18
Merci.