Script Probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Armaron

Armaron

17/12/2009 17:48:00
Quote Anchor link
Het is weer een tijdje geleden dat ik nog php heb geschreven. Ik dacht het wat op te frissen door de uitdagingen van het Euler Project (projecteuler.net) aan te gaan.

En bij mijn eerste script loopt het al fout. Ik heb een default installatie van Wamp Server en volgend script:

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
18
19
20
21
22
23
24
25
26
27
28
29
<?php
$addDrie
= 0;
$addVijf = 0;
$result = 0;
$end = 10;
$goDrie = true;
$goVijf = true;

while ($i = 1; $goDrie && $goVijf; $i++) {
    $addDrie = $i * 3;
    $addVijf = $i * 5;
    if ($addDrie < $end) {
        $aSum[] = $addDrie;
    }
else {
        $goDrie = false;
    }

    if ($addVijf < $end) {
        $aSum[] = $addVijf;
    }
else {
        $goVijf = false;
    }
}


foreach ($aSum as $s) {
    $result += $s;
}


echo "De som is $result";
?>


Hij loopt vast op lijn 2. :s
Gewijzigd op 01/01/1970 01:00:00 door Armaron
 
PHP hulp

PHP hulp

25/04/2024 21:03:27
 
- SanThe -

- SanThe -

17/12/2009 17:54:00
Quote Anchor link
Armaron schreef op 17.12.2009 17:48:
Hij loopt vast op lijn 2. :s

Wat loopt vast? Je PC?
Je while() is vreemd.

Zet dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
 
Armaron

Armaron

17/12/2009 17:58:00
Quote Anchor link
Extra code staat erin. De enige error die ik blijf krijgen is:

Parse error: parse error in C:\wamp\www\Euler\Euler1.php on line 2
Gewijzigd op 01/01/1970 01:00:00 door Armaron
 
- SanThe -

- SanThe -

17/12/2009 18:02:00
Quote Anchor link
Maak van while() eens for().
 
- Mark -

- Mark -

17/12/2009 18:56:00
Quote Anchor link
Ik was me wat aan het vervelen. Een iets andere manier om alles te berekenen.

Edit: Ik heb de oorspronkelijke vraag nagekeken en het lijkt erop dat hij niet werkt waarvoor hij bedoeld is.

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
18
19
20
21
22
23
24
25
26
27
<?php

    #| Berekenen tot.
    
        $end = 10;
    
    
    #| De tafeltjes van drie tot " $end ".
    
        $drie = range(3, $end, 3);
        
    
    #| De tafeltjes van vijf tot " $end ".
        
        $vijf = range(5, $end, 5);
    
    
    #| Verschillende tafeltjes samen voegen. " Drie plus Vijf in dit geval "
        
        $aSum = array_merge($drie, $vijf);


    #| De som van " $aSum " weergeven.
    
        echo 'De som is '.array_sum($aSum);
        
?>
Gewijzigd op 01/01/1970 01:00:00 door - Mark -
 
Armaron

Armaron

17/12/2009 19:58:00
Quote Anchor link
@Mark: jou code clopt niet. Volgens het Euler Project moet de som 23 zijn als je 10 als max neemt. Met jou code kom je op 33. Het einddoel is om het maximum op 1000 te zetten.

Deze code werkt en geeft een juist resultaat voor een end van 10, maar niet voor die van 1000.

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
18
19
20
21
22
23
<?php
$end
= 1000;
$goDrie = true;
$goVijf = true;

for ($i = 1; $goDrie || $goVijf; $i++) {
    $drie = $i * 3;
    $vijf = $i * 5;
    
    if ($drie < $end) {
        $aSum[] = $drie;
    }
else {
        $goDrie = false;
    }

    if ($vijf < $end) {
        $aSum[] = $vijf;
    }
else {
        $goVijf = false;
    }
}


echo "het resultaat is " . array_sum($aSum);
?>
Gewijzigd op 01/01/1970 01:00:00 door Armaron
 
Joris van Rijn

Joris van Rijn

17/12/2009 20:12:00
Quote Anchor link
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
18
19
20
21
22
23
<?php
$end
= 1000;
$goDrie = true;
$goVijf = true;

for ($i = 1; $goDrie || $goVijf; $i++) {
    $drie = $i * 3;
    $vijf = $i * 5;
    
    if ($drie < $end) {
       if ($drie < $end) {$aSum[] = $drie;}
    }
else {
        $goDrie = false;
    }

    if ($vijf < $end) {
        if ($vijf < $end) { $aSum[] = $vijf;}
    }
else {
        $goVijf = false;
    }
}


echo "het resultaat is " . array_sum($aSum);
?>



Misschien dat?
Gewijzigd op 01/01/1970 01:00:00 door Joris van Rijn
 
Stefan

Stefan

17/12/2009 20:23:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$x
= 1000;
echo 1.5 * (int) ( ( $x-1 ) / 3 ) * ( int ) ( ( $x + 2 ) / 3 ) + 2.5 *( int ) ( ( $x-1 ) / 5 ) * ( int ) ( ( $x + 4) / 5) - 7.5 * ( int ) ( ( $x - 1 ) / 15 ) * ( int ) ( ( $x + 14 ) / 15 );

?>
Gewijzigd op 01/01/1970 01:00:00 door Stefan
 
Armaron

Armaron

17/12/2009 20:47:00
Quote Anchor link
@Joris: dan doe je gewoon 2 dezelfde checks en neem je alleen meer processorkracht in. Maakt geen verschil. :)

@Stefan: ik kom op hetzelfde resultaat. Raar.
 
Stefan

Stefan

17/12/2009 20:48:00
Quote Anchor link
Lees mijn editje, die werkt.
 
Joris van Rijn

Joris van Rijn

17/12/2009 20:54:00
Quote Anchor link
@ amaron,
Nee hoor. Dat is niet waar. Want kijk:
Eerst check je of het nummer hoger is dan wat het mag zijn.
Als dat niet zo is verander je het nummer. (dus keer 3 ofzo)
Daarna voeg je hem gelijk toe;;

maar dat moet niet, want dan mag het getal nog steeds niet hoger zijn.

Dus dat geeft wel degelijk een andere werking aan het script.
 
Armaron

Armaron

18/12/2009 12:31:00
Quote Anchor link
@Joris: Kijk nog eens naar je code. :) Meer bepaald dit stukje, Je doet gewoon twee keer check "$drie < $end".

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
    if ($drie < $end) {
       if ($drie < $end) {$aSum[] = $drie;}
    } else {
        $goDrie = false;
    }


@Stefan: wow, hoe heb je dat gevonden?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.