Avatar billede sesam Nybegynder
14. oktober 2005 - 07:17 Der er 21 kommentarer og
3 løsninger

Fordeling af værdier udvidet

Jeg har 6 kasser og 9 æbler:
kasse 1
kasse 2
kasse 3
kasse 4
kasse 5
kasse 6
Man starter med at ligge et æble i kasse 1 -> Kasse 2 -> kasse 3 osv. Når der er lagt et æble i kasse 6 startes der forfra...
Fordelingen kommer så til at se sådan her ud:
kasse 1 = 2 æbler
kasse 2 = 2 æbler
kasse 3 = 2 æbler
kasse 4 = 1 æble
kasse 5 = 1 æble
kasse 6 = 1 æble

Er det ikke muligt at at lave en eller anden funktion der kan regne det ud?
Avatar billede jakobdo Ekspert
14. oktober 2005 - 07:53 #1
Æbler ender dog ikke kasse 1, 2 og 3...

http://www.codebreaker.dk/exp/655944.php

Du kan dog hente arrays ud som følger:
array[1] = kasse 1
array[2] = kasse 2
array[3] = kasse 3
array[4] = kasse 4
array[5] = kasse 5
array[0] = kasse 6
Avatar billede sesam Nybegynder
14. oktober 2005 - 08:02 #2
Hvis der er flere kasser end der er æbler
fx:
$aebler = 13;
$kasser = 18;

Så skal der i arrayet stå
[14] = 0
[15] = 0
osv...
Avatar billede jakobdo Ekspert
14. oktober 2005 - 08:05 #3
Reload min kode, det er ikke smukt, men jeg tror det er hvad du søger.
Avatar billede sesam Nybegynder
14. oktober 2005 - 08:06 #4
Er det muligt at arrayet kan starte med [1] istedet for [0]
Avatar billede jakobdo Ekspert
14. oktober 2005 - 08:15 #5
Det eneste du jo bare skal, er faktisk at huske på 0 er den sidste!
Jeg kan muligvis godt lave noget kode, men kan ikke lige gennemtænke den nu.
Avatar billede sesam Nybegynder
14. oktober 2005 - 08:16 #6
Problemet er bare at der ikke bliver smidt nogen værdi i [0] ellers virker det fint...
Avatar billede jakobdo Ekspert
14. oktober 2005 - 08:19 #7
Der bliver da smidt æbler i 0...
Se koden fra før nu!
130 æbler, 18 kasser!
Der er 7 æbler i kasse 0.
Kasse 0 er i tilfældet her kasse 18.
Avatar billede sesam Nybegynder
14. oktober 2005 - 08:22 #8
ja ok undskyld ;O)
Virker det med negative værdier?
Avatar billede jakobdo Ekspert
14. oktober 2005 - 08:24 #9
Negative værdier?
Du får lidt svært ved at smide 17 negative æbler i kasserne!
Så bliver de sure! :o)
Mener du -17 f.eks.?
Avatar billede sesam Nybegynder
14. oktober 2005 - 08:25 #10
Haha...
Lige præcis -17
Avatar billede hmortensen Nybegynder
14. oktober 2005 - 08:33 #11
Måske sådan her:

$kasser = array(1 => 8, 2 => 8, 3 => 8, 4 => 8, 5 => 8, 6 => 8);

$aebler = -10;

while ($aebler != 0)
{
    for ($x = 1; $x <= count($kasser); $x++)
    {
        if ($aebler != 0)
        {
            if ($aebler > 0)
            {
                $kasser[$x]++;
                $aebler--;
            }
            else
            {
                $kasser[$x]--;
                $aebler++;
            }
        }
        else
        {
            break;
        }
    }
}
Avatar billede sesam Nybegynder
14. oktober 2005 - 08:56 #12
hmortensen: kan du forklare lidt nærmere?
Avatar billede hmortensen Nybegynder
14. oktober 2005 - 09:01 #13
Hvad er du i tvivl om ?
Avatar billede sesam Nybegynder
14. oktober 2005 - 09:02 #14
Jeg har ændret det lidt så det virker efter hensigten:
$aebler = -2;
$kasser = 18;
$kasseArray = array();
for($i = 0; $i < $kasser; $i++)
{
    $kasseArray[$i] = 0;
}
while ($aebler != 0)
{
    for ($x = 1; $x <= $kasser; $x++)
    {
        if ($aebler != 0)
        {
            if ($aebler > 0)
            {
                $kasseArray[$x]++;
                $aebler--;
            }
            else
            {
                $kasseArray[$x]--;
                $aebler++;
            }
        }
        else
        {
            break;
        }
    }
}
echo "<pre>\n";
print_r($kasseArray);
echo "</pre>\n";
Avatar billede sesam Nybegynder
14. oktober 2005 - 09:10 #15
Når der arbejdes med negative tal er det så muligt at arrayet fyldes op bagfra altså startende med [0] derefer [17] osv...
Avatar billede hmortensen Nybegynder
14. oktober 2005 - 09:31 #16
Så laver du bare en modsat for løkke, og sætter if'en op over for løkkerne.

for ($x = count($kasser); $x >= 1; $x--)
Avatar billede sesam Nybegynder
15. december 2005 - 11:21 #17
hmortensen: Ved godt det er længe siden men har været forhindret i at svare...
Men jeg kan altså ikke få det til at virke med de negative værdier:
Kunne du måske lokkes til at sætte det op i denne kode:
$aebler = -2;
$kasser = 18;
$kasseArray = array();
for($i = 0; $i < $kasser; $i++)
{
    $kasseArray[$i] = 0;
}
while ($aebler != 0)
{
    for ($x = 1; $x <= $kasser; $x++)
    {
        if ($aebler != 0)
        {
            if ($aebler > 0)
            {
                $kasseArray[$x]++;
                $aebler--;
            }
            else
            {
                $kasseArray[$x]--;
                $aebler++;
            }
        }
        else
        {
            break;
        }
    }
}
Avatar billede sesam Nybegynder
16. december 2005 - 09:13 #18
smid venligst et svar... =)
Avatar billede jakobdo Ekspert
16. december 2005 - 09:16 #19
Mig eller hmortensen?
Avatar billede sesam Nybegynder
16. december 2005 - 13:15 #20
Begge to =)
Avatar billede jakobdo Ekspert
16. december 2005 - 13:33 #21
Svar!
Avatar billede hmortensen Nybegynder
16. december 2005 - 13:43 #22
Og et her ;)
Avatar billede sesam Nybegynder
16. december 2005 - 14:08 #23
Mange tak for hjælpen... :)
Avatar billede jakobdo Ekspert
16. december 2005 - 14:10 #24
Takker for point!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester