Versio

groeps verdeling

Overzicht Reageren

RvW Of toch niet

RvW Of toch niet

14/09/2009 10:15:00
Quote Anchor link
Ik wil dat uit en aantal inschrijvingen automatisch groepen worden gemaakt
nou heb ik:
- minimum aantal deelnemers in het voorbeeld 13
- maximum aantal deelnemers in het voorbeeld 25
en in inschrijvingen 27
nu laat ik er en while op los die uittekent dat je het kan verdelen in 3 groepen en dan met 9 deelnemers. maar dat is natuurlijk niet de goeie uitkomst.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    $aanInschrijvingen
  = 27;
    $minAanDeelnemers   = 13;
    $maxAanDeelnemers   = 25;
    $i = $maxAanDeelnemers;
    while($deeling != 0){
        $deeling = $aanInschrijvingen % $i;
        $i--;
    }
    
    ++
$i;
    $aanDeelnemersPerGroep = $i;
    $aanGroepen = $aanInschrijvingen / $i;

    echo($aanDeelnemersPerGroep);
    echo($aanGroepen);
?>


nu kan ik natuurlijk wel kijken of de uitkomst goed is.

maar me vraag is hoe los ik op dat hij ziet dat de uitkomst 13 en 14 moet wezen?

Hoop dat me vraag duidelijk is.

PS deze code is ter illustratie gemaakt ;)
 
PHP hulp

PHP hulp

24/05/2012 20:33:27
Gesponsorde koppelingen:
 
Karl Karl

Karl Karl

14/09/2009 10:56:00
Quote Anchor link
Je moet er een recursief ding van maken. Dat jou voorbeeld 13 geeft klopt, want je doet nu dus maar een uitkomst geven. Het aantal groepen is gelijk aan het aantal uitkomsten.
Verder kom je denk ik ook niet over de 25 heen als je de overgebleven gewoon over alle groepen verdeeld.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
 $aanInschrijvingen
  = 38;
    $minAanDeelnemers   = 13;
    $maxAanDeelnemers   = 25;
echo $aanInschrijvingen / $minAanDeelnemers . PHP_EOL;
echo $aanInschrijvingen % $minAanDeelnemers;
#levert:
#2.92307692308
#12

?>

Dus dan kan je gewoon zes in de ene doen en zes in de andere.
En dat kan je weer uitvinden door het aantal over gedeeld door het aantal groepen te doen. En het aantal groepen kan je flooren, want er kunnen geen zoveelste deel van mensen in een groep.
Als het aantal over kleiner of gelijk aan het aantal groepen is, kan je d'r gewoon met een for overheen loopen van het aantal over en dan steeds eentje bij de groep in stoppen.
Gewijzigd op 01/01/1970 01:00:00 door Karl Karl
 
RvW Of toch niet

RvW Of toch niet

14/09/2009 11:06:00
Quote Anchor link
Ik realiseer me net dat ik en belangerijk detail ben vergeten het aantal groepen moet zo klein mogelijk zijn.
 
Karl Karl

Karl Karl

14/09/2009 11:14:00
Quote Anchor link
Dat is inderdaad wel belangrijk.
Zelf lijkt mij dat niet zo handig, maar goed.
Dan moet je gewoon weer kijken hoe vaak de overgebleven in 13 kan worden gestopt (als het goed is, en ik heb goed logisch nagedacht komt er nooit meer dan 12 uit).
Als het aantal kleiner of gelijk aan één is betekend dat je gewoon de overgeblevenen bij een groep in kan gooien. Anders moet je 12 in een groep gooien en dan nog eens kijken.
 
Lauren Zonneveld

Lauren Zonneveld

14/09/2009 11:23:00
Quote Anchor link
Ik zou het zo doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
     $aanInschrijvingen
  = 104;
    $minAanDeelnemers   = 13;
    $maxAanDeelnemers   = 25;
    
    $aantalGroepen = ceil($aanInschrijvingen / $maxAanDeelnemers);

    echo "Groepen: ".$aantalGroepen."<br />\n";
    echo "Deelnemers per groep: ".($aanInschrijvingen - $aanInschrijvingen % $aantalGroepen) / $aantalGroepen."<br />\n";
    echo "Overgebleven deelnemers: ".$aanInschrijvingen % $aantalGroepen."<br />\n";
?>

Zo is het aantal groepen minimaal en worden de deelnemers gelijkmatig verdeeld, de overgebleven deelnemers kunnen bijvoorbeeld met for loop worden ingedeeld.
 
RvW Of toch niet

RvW Of toch niet

14/09/2009 11:32:00
Quote Anchor link
@Karl
bedankt voor het meedenken zal even kijken of ik zoiets in me kaar gezet krijg.

Lauren schreef op 14.09.2009 11:23:
Ik zou het zo doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
     $aanInschrijvingen
  = 104;
    $minAanDeelnemers   = 13;
    $maxAanDeelnemers   = 25;
    
    $aantalGroepen = ceil($aanInschrijvingen / $maxAanDeelnemers);

    echo "Groepen: ".$aantalGroepen."<br />\n";
    echo "Deelnemers per groep: ".($aanInschrijvingen - $aanInschrijvingen % $aantalGroepen) / $aantalGroepen."<br />\n";
    echo "Overgebleven deelnemers: ".$aanInschrijvingen % $aantalGroepen."<br />\n";
?>

Zo is het aantal groepen minimaal en worden de deelnemers gelijkmatig verdeeld, de overgebleven deelnemers kunnen bijvoorbeeld met for loop worden ingedeeld.

maar als je het het simpel weg maar gaat verdelen ga je dan niet over je max heen?
 
Lauren Zonneveld

Lauren Zonneveld

14/09/2009 12:22:00
Quote Anchor link
Aantal groepen = Inschrijvingen / maxDeelnemers
(Inschrijvingen / Aantal groepen) kan dus nooit hoger zijn dan maxDeelnemers
 
- SanThe -

- SanThe -

14/09/2009 12:26:00
Quote Anchor link
De redenering van Lauren is helemaal correct. De overgebleven personen kun je gelijkmatig over de groepen verdelen totdat ze op zijn.
 



Overzicht Reageren