2016-06-24 5 views
-1

Ich brauche 23 Studenten bis 5 Gruppen zu unterteilen, soWie verteilt man den Rest einer Division?

Dim i as Integer = 23 Mod 5 

gibt Rest = 3.

Wie kann ich den Rest verteilen, so dass die erste, zweite und dritte Gruppe wird 1 Mitglied mehr haben als die anderen?

Oder wie die Verteilung in umgekehrter Reihenfolge zu starten, wo die fünfte, vierte und dritte haben 1 zusätzliches Mitglied?

ich diese Werte erhalten möchten:

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

zu vage. Sende deinen Code. – Blorgbeard

+0

Ok, ich habe das gesuchte Ergebnis hinzugefügt. Wie das geht, bin ich völlig ahnungslos. – Jnnno

+1

Wie würdest du das mit Münzen auf einem Tisch machen? * Ich habe 23 Pfennige und ich brauche 5 Pfähle. Also verteile ich 20 (5 Stapel von 4), und ich habe einen Rest von 3. Beginne an jedem Ende, nimm einen vom Rest und füge ihn zum Stapel hinzu. Habe ich noch mehr Extras? Wenn ja, nimm eins auf, leg es auf den nächsten Stapel. Habe ich noch mehr? Wiederholen. * Die Logik ist genau dieselbe und verwendet eine Schleife. Mit welchem ​​speziellen Teil hast du Schwierigkeiten? –

Antwort

0

So, hier ist das Setup:

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

Sie wissen, wie die Gruppengröße und den Rest zu berechnen:

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

Dann gehe durch jede Gruppe und weise ihr die Größe zu:

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

Schließlich müssen Sie den Rest verteilen. Entsprechend Ihrer Frage, möchten Sie 1 zu der ersten Rest Anzahl der Gruppen hinzufügen.

was übersetzt:

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

Dies funktioniert für mich:

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

Sie folgenden Code versuchen

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 
Verwandte Themen