Script Probleem
En bij mijn eerste script loopt het al fout. Ik heb een default installatie van Wamp Server en volgend script:
Code (php)
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
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";
?>
$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
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.
Parse error: parse error in C:\wamp\www\Euler\Euler1.php on line 2
Gewijzigd op 01/01/1970 01:00:00 door Armaron
Maak van while() eens for().
Edit: Ik heb de oorspronkelijke vraag nagekeken en het lijkt erop dat hij niet werkt waarvoor hij bedoeld is.
Code (php)
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
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);
?>
#| 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 -
Deze code werkt en geeft een juist resultaat voor een end van 10, maar niet voor die van 1000.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Gewijzigd op 01/01/1970 01:00:00 door Armaron
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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);
?>
$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
Code (php)
1
2
3
4
5
6
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 );
?>
$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
@Stefan: ik kom op hetzelfde resultaat. Raar.
Lees mijn editje, die werkt.
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.
Code (php)
1
2
3
4
5
2
3
4
5
if ($drie < $end) {
if ($drie < $end) {$aSum[] = $drie;}
} else {
$goDrie = false;
}
if ($drie < $end) {$aSum[] = $drie;}
} else {
$goDrie = false;
}
@Stefan: wow, hoe heb je dat gevonden?