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
- Installer windows 10 sans compte microsoft - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Excel trier par ordre croissant chiffre - Guide
- Tiktok gratuit sans compte - Accueil - TikTok
2 réponses
yg_be
Messages postés
23383
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 décembre 2024
Ambassadeur
1 556
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
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
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
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
27 sept. 2019 à 11:18
27 sept. 2019 à 11:18
Merci.