2016-06-24 1 views
-1

J'ai besoin de diviser 23 étudiants 5 groupes, doncComment distribuer le reste d'une division?

Dim i as Integer = 23 Mod 5 

donne suite = 3.

Comment puis-je distribuer le reste de telle sorte que la première, deuxième et troisième groupes auront 1 membres plus que les autres?

Ou comment démarrer la distribution à l'envers, où les cinquième, quatrième et troisième auront 1 membre supplémentaire?

Je veux obtenir ces valeurs:

Dim groups(4) As Integer 
groups(0) = 5 
groups(1) = 5 
groups(2) = 5 
groups(3) = 4 
groups(4) = 4 
+1

trop vague. Postez votre code. – Blorgbeard

+0

Ok, j'ai ajouté le résultat que je cherchais. Comment faire cela, je suis complètement désemparé. – Jnnno

+1

Comment feriez-vous cela sur une table en utilisant des pièces de monnaie? * J'ai 23 sous, et j'ai besoin de 5 piles. Donc je distribue 20 (5 piles de 4), et j'ai un reste de 3. Commencez à chaque extrémité, prenez-en une du reste et ajoutez-la à la pile. Est-ce que j'ai encore plus d'extras? Si oui, choisissez-en un, mettez-le sur la pile suivante. Est-ce que j'en ai encore plus? Répétez. * La logique est exactement la même, en utilisant une boucle. Dans quelle partie spécifique avez-vous de la difficulté? –

Répondre

0

Alors, voici votre configuration:

Dim groups As Integer() = New Integer(4) {} 
Dim students As Integer = 23 

Vous savez comment calculer la taille du groupe et le reste:

Dim groupSize As Integer = students \ groups.Length  ' \ is integer division 
Dim remainder As Integer = students Mod groups.Length 

Ensuite, Parcourez chaque groupe et attribuez-lui la taille:

For i As Integer = 0 To groups.Length-1 
    groups(i) = groupSize 
Next 

Enfin, vous devez distribuer le reste. Selon votre question, vous voulez ajouter 1 au premier reste nombre de groupes.

Ce qui se traduit par:

For i As Integer = 0 To remainder-1 
    groups(i) = groups(i) + 1 
Next 
0

Cela fonctionne pour moi:

Dim value = 23 
Dim divisor = 5 
Dim remainder = value Mod divisor 

Dim groups(divisor - 1) As Integer 

For i = 0 To divisor - 1 
    groups(i) = value \ divisor + If(i < remainder, 1, 0) 
Next 
0

Vous pouvez essayer le code suivant

Dim r As Integer = 23 Mod 5 
Dim d As Integer = 23 \ 5 
Dim group(4) As Integer 
For i = 0 To group.Length - 1 
    group(i) = d 
    If r > 0 Then 
     group(i) += 1 
     r -= 1 
    End If 
Next