probleem met saldo script
Ik heb namelijk de volgende script gemaakt:
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
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
<?php
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 1;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$saldo = $saldo + ($saldo * $rente);
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
$maand++;
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
break;
}
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
?>
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 1;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$saldo = $saldo + ($saldo * $rente);
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
$maand++;
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
break;
}
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
?>
Alleen kom ik niet uit met het break, continue en exit? Wat doe ik verkeerd? Als ik de break gebruik, dan stop het en weet ik niet meer hoe ik het verder moet laten spelen..
Alvast HARTELIJK bedankt voor de hulp!!!
Graag in het vervolg een duidelijke titel gebruikt in plaats van HULP NODIG.[/modedit]
Gewijzigd op 01/01/2011 01:39:52 door Bas IJzelendoorn
Je zou beter naar de functie switch moeten gaan kijken. Je haalt nu if en else met switch door elkaar.
The Dutch Guy op 01/01/2011 01:39:21:
Je zou beter naar de functie switch moeten gaan kijken. Je haalt nu if en else met switch door elkaar.
Dank u voor de reactie. Kunt u me misschien helpen hoe ik het dan wel moet, want ik begrijp het niet zo echt..
Schrijf ook in natuurlijke taal op wat je wil bereiken. Dat heb je misschien allang gedaan; plak dat dan hier in :)
Bas Cost Budde op 01/01/2011 23:43:39:
Schrijf ook in natuurlijke taal op wat je wil bereiken. Dat heb je misschien allang gedaan; plak dat dan hier in :)
Dank je voor je reactie!
Ik heb de volgende code:
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
30
31
32
33
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
30
31
32
33
<?php
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 1;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$saldo = $saldo + ($saldo * $rente);
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
$maand++;
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
continue;
}
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
}
while($saldo < 2000);
echo "<br />Maximale saldo 2000 is bereikt. <br />";
?>
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 1;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$saldo = $saldo + ($saldo * $rente);
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
$maand++;
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
continue;
}
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
}
while($saldo < 2000);
echo "<br />Maximale saldo 2000 is bereikt. <br />";
?>
Nu is het probleem, dat wanneer de iteratie verder gaat, dat het vanaf de tweede gaat. Terwijl ik aangaf, dat wanneer de tweede maand is, de volgende echo moet worden neergezet: Februari telt niet mee.. dan zou het met de derde verder gaan, dat gebeurt dus niet...
Dus het geeft wel aan dat Februari niet meetelt, maar het gaat alsnog verder met de tweede maand in plaats van de derde maand..
alvast bedankt voor je hulp!
Toevoeging op 02/01/2011 00:09:05:
Beste Bas,
het moet er als volgt uitzien:
Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000 willen we de do-while-lus herhalen
Begin saldo is:100
START...
Maand 1 je saldo is: 110
Februari telt niet mee.
Maand 3 je saldo is: 121
Maand 4 je saldo is: 133.11
Maand 5 je saldo is: 146.41
Je saldo is te laag.
Maar het ziet er dus nu zo uit:
Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000 willen we de do-while-lus herhalen
Begin saldo is:100
START...
Maand 1 je saldo is: 110
Februari telt niet mee.
Maand 2 je saldo is: 121
Maand 3 je saldo is: 133.1
Maand 4 je saldo is: 146.41
Maand 5 je saldo is: 161.051
Je saldo is te laag.
Gewijzigd op 02/01/2011 00:06:51 door klaas vieren
Wat bedoel ik dan met 'natuurlijke taal'? Nou een keer zonder code-tags (en dus zonder php) :) Doen we even een stukje analyse samen.
Bas Cost Budde op 02/01/2011 00:09:05:
Wat bedoel ik dan met 'natuurlijke taal'? Nou een keer zonder code-tags (en dus zonder php) :) Doen we even een stukje analyse samen.
Haha, dacht ik al. Heb ik nu wel toegevoegd! Dank je voor d moeite.
Wat gebeurt er nou in maand 6?
Bas Cost Budde op 02/01/2011 00:13:05:
Wat gebeurt er nou in maand 6?
Het was de bedoeling dat ik dan de exit tag moet gebruiken om het hele script te laten stoppen (en te echoen JE saldo is te laag), dus die werkt gelukkig wel. Ik begrijp alleen niet waarom bij de tweed maand februari telt niet mee staat en het verder gaat met de tweede maand..
Gewijzigd op 02/01/2011 00:15:17 door klaas vieren
Is dit een goede samenvatting van het proces:
* start met 100, maand 1
* voeg bijna elke maand 10% rente toe
* is de maand 2, doe dan even niets
* is het saldo groter dan 2000, verlaat dan de lus
* is de maand 6, beeindig dan de lus
?
Als je de exit verwijderd dan gaat ie door tot 2000 is bereikt.
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
30
31
32
33
34
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
30
31
32
33
34
<?php
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 1;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$saldo = $saldo + ($saldo * $rente);
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
$maand++;
if($maand == 13)
{
$maand = 1;
}
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
$maand++;
}
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
} while($saldo < 2000);
echo "<br />Maximale saldo 2000 is bereikt. <br />";
?>
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 1;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$saldo = $saldo + ($saldo * $rente);
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
$maand++;
if($maand == 13)
{
$maand = 1;
}
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
$maand++;
}
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
} while($saldo < 2000);
echo "<br />Maximale saldo 2000 is bereikt. <br />";
?>
Gewijzigd op 02/01/2011 00:21:29 door - SanThe -
Bas Cost Budde op 02/01/2011 00:17:55:
Ah. Je drukt die bedoeling niet goed uit door in de while-conditie naar het saldo te kijken.
Is dit een goede samenvatting van het proces:
* start met 100, maand 1
* voeg bijna elke maand 10% rente toe
* is de maand 2, doe dan even niets
* is het saldo groter dan 2000, verlaat dan de lus
* is de maand 6, beeindig dan de lus
?
Is dit een goede samenvatting van het proces:
* start met 100, maand 1
* voeg bijna elke maand 10% rente toe
* is de maand 2, doe dan even niets
* is het saldo groter dan 2000, verlaat dan de lus
* is de maand 6, beeindig dan de lus
?
Hm, oke op die manier.
JA, dat klopt helemaal! Dus bij de 2e maand even niets doen, maar wel aangeven dat die maand niet telt. Saldo groter dan 2000 inderdaad verlaten en bij de 6e maand (indien die ook minder dan 1000 euro is) het beeindigen ervan.
Kun je me misschien svp hiermee helpen hoe ik het moet wijzigen? Het is maar voor school en heb nog 4 grote soort gelijke opdrachten (van de 13 moet ik dus nog 5 inclusief deze en doe er nu al bijna 5 dagen over haha... en 3 dagen geleden was ik serieus 8 uur bezig tot in de ochtend en had drie opdrachten klaar).
Toevoeging op 02/01/2011 00:24:43:
- SanThe - op 02/01/2011 00:20:06:
Zeer vreemd script.
Als je de exit verwijderd dan gaat ie door tot 2000 is bereikt.
Als je de exit verwijderd dan gaat ie door tot 2000 is bereikt.
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
30
31
32
33
34
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
30
31
32
33
34
<?php
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 1;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$saldo = $saldo + ($saldo * $rente);
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
$maand++;
if($maand == 13)
{
$maand = 1;
}
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
$maand++;
}
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
} while($saldo < 2000);
echo "<br />Maximale saldo 2000 is bereikt. <br />";
?>
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 1;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$saldo = $saldo + ($saldo * $rente);
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
$maand++;
if($maand == 13)
{
$maand = 1;
}
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
$maand++;
}
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
} while($saldo < 2000);
echo "<br />Maximale saldo 2000 is bereikt. <br />";
?>
Klopt, dat is de bedoeling ook. Bij maand 6 (indien deze lager is dan 1000 euro moet je het beeindigen)
Toevoeging op 02/01/2011 00:28:03:
- SanThe - op 02/01/2011 00:20:06:
Zeer vreemd script.
Als je de exit verwijderd dan gaat ie door tot 2000 is bereikt.
Als je de exit verwijderd dan gaat ie door tot 2000 is bereikt.
Hey! Het is gelukt! Ik dacht dat je alleen kritiek op me had, maar zie nu pas in dat je het voor me hebt gewijzigd! Hey, ik wil je hartelijk bedanken!
En reactie op je opmerking zeer vreemd script (it's for school haha..)
Nogmaals merci!
Toevoeging op 02/01/2011 00:28:32:
Het is gelukt mensen! Ik wil daarvoor TheSanthe bedanken en Bas voor de input!
Toevoeging op 02/01/2011 00:32:06:
SanThe, nog een vraagje. Ik zie dat er geen continue tag is gebruikt? Ik moet die denk ik wel degelijk gebruiken.. weet je misschien waar ik die dan kan toepassen..
Ik heb continue; veranderd in $maand++;
SanThe, ik zie wat je hebt gedaan. Je hebt de $maand++; tag gebruikt. In principe zeg je vanaf daar, dat het een extra verder gaat. Maar ik denk niet dat dat wordt goedgekeurd, omdat ik toch de continue/break/exit tags moet gebruiken voor deze opdracht.. weet je misschien hoe ik het kan wijzigen?
Wat je moet leren, is op de manier kijken zoals ik dat deed: wel in het proces, niet in de programmacode. Stap voor stap formuleren wat je wil. Wees precies.
- SanThe - op 02/01/2011 00:32:47:
Zie je nu ook wat de belangrijkste wijziging is?
Ik heb continue; veranderd in $maand++;
Ik heb continue; veranderd in $maand++;
Ja klopt, ik heb net na jou gereageerd. Ik zag dat en daarom heb ik bovenstaande gereageerd.. het is toch écht de bedoeling om de continue tag te gebruiken.. weet je misschien hoe ik die alsnog kan implementeren?
de vragen waren eigenlijk:
• Als $maand gelijk is aan 2 dan geef je de melding: “februari telt niet mee” daarna onderbreek je de huidige iteratie en begin je met de volgende iteratie.
• Als het huidige $saldo over de 2000 is dan geef je de melding: “Maximale saldo 2000 is bereikt” en daarna onderbreek je de hele lus opdracht.
• Als $maand gelijk is aan 6 en $saldo onder de 1000 is dan geef je de melding: “Je saldo is te laag” daarna onderbreek je het script.
Toevoeging op 02/01/2011 00:38:36:
Bas Cost Budde op 02/01/2011 00:35:40:
Wat je moet leren, is op de manier kijken zoals ik dat deed: wel in het proces, niet in de programmacode. Stap voor stap formuleren wat je wil. Wees precies.
Ja, dat zal ik voortaan doen. Ik neig eerder naar de code, dan wat ik echt wil. Ik heb voor je de vragen letterlijk gekopieerd:
• Als $maand gelijk is aan 2 dan geef je de melding: “februari telt niet mee” daarna onderbreek je de huidige iteratie en begin je met de volgende iteratie.
• Als het huidige $saldo over de 2000 is dan geef je de melding: “Maximale saldo 2000 is bereikt” en daarna onderbreek je de hele lus opdracht.
• Als $maand gelijk is aan 6 en $saldo onder de 1000 is dan geef je de melding: “Je saldo is te laag” daarna onderbreek je het script.
Dus in principe moet ik toch écht de break/continue en exit tag gebruiken.. weet jij misschien hoe?
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
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 0;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$maand++;
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
continue;
}
$saldo = $saldo + ($saldo * $rente);
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
} while($saldo < 2000);
echo "<br />Maximale saldo 2000 is bereikt. <br />";
?>
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 0;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$maand++;
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
continue;
}
$saldo = $saldo + ($saldo * $rente);
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
} while($saldo < 2000);
echo "<br />Maximale saldo 2000 is bereikt. <br />";
?>
Toevoeging op 02/01/2011 00:47:43:
Bas Cost Budde op 02/01/2011 00:17:55:
Is dit een goede samenvatting van het proces:
* start met 100, maand 1
* voeg bijna elke maand 10% rente toe
* is de maand 2, doe dan even niets
* is het saldo groter dan 2000, verlaat dan de lus
* is de maand 6, beeindig dan de lus
* start met 100, maand 1
* voeg bijna elke maand 10% rente toe
* is de maand 2, doe dan even niets
* is het saldo groter dan 2000, verlaat dan de lus
* is de maand 6, beeindig dan de lus
Regel 2 en 3 moeten omgewisseld.
* start met 100, maand 1
* is de maand 2, doe dan even niets
* voeg bijna elke maand 10% rente toe
* is het saldo groter dan 2000, verlaat dan de lus
* is de maand 6, beeindig dan de lus
- SanThe - op 02/01/2011 00:41:11:
Deze werkt met continue.
Toevoeging op 02/01/2011 00:47:43:
Regel 2 en 3 moeten omgewisseld.
* start met 100, maand 1
* is de maand 2, doe dan even niets
* voeg bijna elke maand 10% rente toe
* is het saldo groter dan 2000, verlaat dan de lus
* is de maand 6, beeindig dan de lus
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
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 0;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$maand++;
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
continue;
}
$saldo = $saldo + ($saldo * $rente);
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
} while($saldo < 2000);
echo "<br />Maximale saldo 2000 is bereikt. <br />";
?>
echo "Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000
willen we de do-while-lus herhalen<br />";
$saldo = 100;
$rente = 0.1;
$maand = 0;
echo "Begin saldo is:" . $saldo;
echo "<br>START...";
do
{
$maand++;
if($maand == 2)
{
echo "<br />Februari telt niet mee.";
continue;
}
$saldo = $saldo + ($saldo * $rente);
if($maand == 6 && $saldo < 1000)
{
echo "<br />Je saldo is te laag.";
exit;
}
echo "<br />Maand " . $maand . " je saldo is: " . $saldo ;
} while($saldo < 2000);
echo "<br />Maximale saldo 2000 is bereikt. <br />";
?>
Toevoeging op 02/01/2011 00:47:43:
Bas Cost Budde op 02/01/2011 00:17:55:
Is dit een goede samenvatting van het proces:
* start met 100, maand 1
* voeg bijna elke maand 10% rente toe
* is de maand 2, doe dan even niets
* is het saldo groter dan 2000, verlaat dan de lus
* is de maand 6, beeindig dan de lus
* start met 100, maand 1
* voeg bijna elke maand 10% rente toe
* is de maand 2, doe dan even niets
* is het saldo groter dan 2000, verlaat dan de lus
* is de maand 6, beeindig dan de lus
Regel 2 en 3 moeten omgewisseld.
* start met 100, maand 1
* is de maand 2, doe dan even niets
* voeg bijna elke maand 10% rente toe
* is het saldo groter dan 2000, verlaat dan de lus
* is de maand 6, beeindig dan de lus
Het werkt wel, maar ik moet deze uitkomst hebben:
Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000 willen we de do-while-lus herhalen
Begin saldo is:100
START...
Maand 1 je saldo is: 110
Februari telt niet mee.
Maand 3 je saldo is: 121
Maand 4 je saldo is: 133.11
Maand 5 je saldo is: 146.41
Je saldo is te laag.
Ik krijg echter deze uitkomst:
Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000 willen we de do-while-lus herhalen
Begin saldo is:100
START...
Maand 1 je saldo is: 110
Februari telt niet mee.
Maand 3 je saldo is: 133.1
Maand 4 je saldo is: 146.41
Maand 5 je saldo is: 161.051
Je saldo is te laag.
Het lijkt alsof het de maand met salaris overslaat. In principe denk ik dat het de hele maand februari moet negeren (dus zonder die mee te rekenen). Zou beetje dom zijn als iemand de maand februari niet mee telt, maar ondertussen in de derde maand net zo veel rente heeft gevraagd als de maand ervoor die eigenlijk niet mee telde..
Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000 willen we de do-while-lus herhalen
Begin saldo is:100
START...
Maand 1 je saldo is: 110
Februari telt niet mee.
Maand 3 je saldo is: 121
Maand 4 je saldo is: 133.1
Maand 5 je saldo is: 146.41
Je saldo is te laag.
- SanThe - op 02/01/2011 02:25:31:
Bij mij geeft het dit:
Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000 willen we de do-while-lus herhalen
Begin saldo is:100
START...
Maand 1 je saldo is: 110
Februari telt niet mee.
Maand 3 je saldo is: 121
Maand 4 je saldo is: 133.1
Maand 5 je saldo is: 146.41
Je saldo is te laag.
Reken het saldo uit. Daarna, zolang ons saldo lager is dan 2000 willen we de do-while-lus herhalen
Begin saldo is:100
START...
Maand 1 je saldo is: 110
Februari telt niet mee.
Maand 3 je saldo is: 121
Maand 4 je saldo is: 133.1
Maand 5 je saldo is: 146.41
Je saldo is te laag.
Hm, vreemd. Ik heb het gekopieerd en geplakt en het werkt. Ik heb geen verschillen kunnen constateren! Nou, eindelijk! Hartelijk bedankt voor de moeite en hulp SanThe!
9 down, 4 to go! Ik zal wss wel de problemen die ik tegemoet kom hier plaatsen. Ik hoop dat je me dan ook hiermee kunt helpen! Merci!