Signaler

Comparaison d'entiers dans un tableau dynamique [Résolu]

Posez votre question prudya 5Messages postés samedi 6 mai 2017Date d'inscription 8 mai 2017 Dernière intervention - Dernière réponse le 10 mai 2017 à 18:49 par pudya
bonjour à tous,
je souhaiterais comparer des entiers d'un tableau dynamique tel sorte que le minimum de leur somme soit supérieur à une constante donnée ( type entier).
merci de m'aider.
Utile
+0
plus moins
Bonjour,

"comparer des entiers d'un tableau dynamique tel sorte que le minimum de leur somme soit supérieur à une constante"
Ça ne veut pas dire grand chose... Une comparaison ça permet de savoir entre deux valeurs laquelle est inférieure/égale/supérieure à l'autre. Mais ça ne va pas calculer une somme. Et c'est quoi le minimum d'une somme ?

Bref, tu n'aurais pas un exemple pour illustrer ce que tu veux faire ?
De plus tu parles de "tableau dynamique" à quoi ça correspond dans ton code ?
prudya 5Messages postés samedi 6 mai 2017Date d'inscription 8 mai 2017 Dernière intervention - 7 mai 2017 à 22:30
dans ce cas, en utilisant la méthode remove(), je ne peux supprimer qu'un entier de l'indice donné. Cependant, je veux supprimer les entiers dont la somme est supérieure ou égale à a. ( le résultat de la question précédente). Afin de pouvoir y insérer d'autres entiers.

merci.
Répondre
KX 14794Messages postés samedi 31 mai 2008Date d'inscription ModérateurStatut 20 septembre 2017 Dernière intervention - 7 mai 2017 à 22:48
Il n'est jamais bon de modifier les données que l'on a en entrée, il vaut mieux calculer une liste de résultat à côté :

List<Integer> result = new ArrayList<>();
int som = 0;
for (Integer n : coll) {
    som += n;
    if (som > a)
        break;
    result.add(n);
}
System.out.println(som); // 11
System.out.println(result); // [1, 1, 2, 2, 2]
Répondre
prudya 5Messages postés samedi 6 mai 2017Date d'inscription 8 mai 2017 Dernière intervention - 8 mai 2017 à 02:16
merci. cependant si le résultat de la somme est 11, alors les entiers [1, 1, 2, 2, 2, 3] qui permettent d'obtenir cette somme (1+1+2+2+2+3 =11) doivent être supprimés du tableau. Ainsi, on doit avoir le tableau suivant [4], qui ne contient que l'entier 4.
j'ai remplacé add(n) par remove(n), dans la solution proposée. j'obtiens un tableau vide ([]).
Que faire?

merci pour toutes les précédentes propositions qui sont d'une très grande utilité.
Répondre
KX 14794Messages postés samedi 31 mai 2008Date d'inscription ModérateurStatut 20 septembre 2017 Dernière intervention - 8 mai 2017 à 11:35
Penses à bien expliquer ton problème à l'avenir, tu vois l'importance des exemples qui permettent de vérifier les résultats, parce que sinon on est obligé de faire des allers-retours avant d'arriver à la réponse que tu voulais...

for (int n : coll) {
    if (som < a) {
        som += n;
    } else {
        result.add(n);
    }
}
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !