Figuur met de while lus!
Ik ben bezig om de while lus onder de knie te krijgen, maar krijg dit niet voor elkaar..
Dit is het figuur die ik op dit moment heb
******
*****
****
***
**
*
*
***
*****
*******
*********
met deze code
Code (php)
het eind figuur
Nu probeer ik dit figuur te maken door beide while lussen in elkaar te vlechten, maar dit lukt me niet.
Kan iemand mij hierbij helpen, zodat ik voor de volgende keren dat ik de while lus gebruik dit gelijk kan toepassen.
Peter
Gewijzigd op 16/10/2013 20:50:04 door PEter Alex
Regel | Spaties | Sterretjes |
* | 5 | 1 |
*** | 4 | 3 |
***** | 3 | 5 |
******* | 2 | 7 |
********* | 1 | 9[/td [/tr] |
***********[/td | 11 |
Oh cool; we kunnen hier dus <table>'s zetten met UBB
Het lukt mij wel om de figuren afzonderlijk te maken, maar helaas niet naast elkaar... Kan iemand mij misschien een voorbeeld geven van deze oefenopdracht? Er zijn meerdere opdrachten die ik heb gekregen:D Wil dit graag snappen zodat ik veder kan gaan met het leren van php.
Peter
Gewijzigd op 16/10/2013 20:55:59 door PEter Alex
Gewijzigd op 16/10/2013 20:56:13 door Dennis WhoCares
Gewijzigd op 16/10/2013 20:57:54 door PEter Alex
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
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
<?php
$aantalHorizontaal = 3;
$aantalVerticaal = 2;
echo '<table border="0">';
for($a = 1; $a <= $aantalVerticaal; $a++) {
echo '<tr>';
for($i = 1; $i <= $aantalHorizontaal; $i++) {
echo '<td>';
$rij = 0;
while ($rij <= 8) {
$spatie = 0;
while ($spatie <= $rij) {
echo "*";
$spatie++;
}
echo "<br>";
$rij+=2;
}
echo '</td>';
}
echo '</tr>';
}
echo '</table>';
?>
$aantalHorizontaal = 3;
$aantalVerticaal = 2;
echo '<table border="0">';
for($a = 1; $a <= $aantalVerticaal; $a++) {
echo '<tr>';
for($i = 1; $i <= $aantalHorizontaal; $i++) {
echo '<td>';
$rij = 0;
while ($rij <= 8) {
$spatie = 0;
while ($spatie <= $rij) {
echo "*";
$spatie++;
}
echo "<br>";
$rij+=2;
}
echo '</td>';
}
echo '</tr>';
}
echo '</table>';
?>
zoiets?
Gewijzigd op 16/10/2013 21:02:10 door Dennis WhoCares
Dat gedeelte lukt me al. Alleen is het voor mij niet mogelijk om deze figuur te maken met spaties ertussen:S
zoals bij dit voorbeeld:
IK snap ongeveer hoe dit werkt, maar zou graag de uitwerking zien dat ik dan veder kan gaan met de volgende opdrachten.
Gewijzigd op 16/10/2013 21:09:38 door PEter Alex
Ga in pseudo-code (zo heet het net doen alsof met makkelijke taal) in elkaar zetten.
Zet 5 spaties en dan 1 sterretje.
Zet nu 4 spaties en dan 3 sterretjes (vorige(1) + 2)
Zet nu 3 spaties en dan 5 sterretjes (vorige(3) + 2)
Zet nu 2 spaties en dan 7 sterretjes (vorige(5) + 2)
etc.
Dan ga je dat omzetten naar PHP-code.
Eerst maar gewoon voluit:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
echo str_repeat(5, " ") . str_repeat(1, "*");
echo str_repeat(4, " ") . str_repeat(3, "*");
echo str_repeat(3, " ") . str_repeat(5, "*");
echo str_repeat(2, " ") . str_repeat(7, "*");
echo str_repeat(1, " ") . str_repeat(9, "*");
?>
echo str_repeat(5, " ") . str_repeat(1, "*");
echo str_repeat(4, " ") . str_repeat(3, "*");
echo str_repeat(3, " ") . str_repeat(5, "*");
echo str_repeat(2, " ") . str_repeat(7, "*");
echo str_repeat(1, " ") . str_repeat(9, "*");
?>
En omdat dat niet handig is, ga je dat in een while-loop gooien.
De spaties doe je $spaties--, de $sterretjes += 2;
Moet toch te doen zijn?
ik snap wat de theorie is maar om dit om te zetten in de praktijk vindt ik nogal lastig... ik zou de volledige code graag een keer willen zien om veder te gaan met de andere while lus opdrachten.
Ik doe echt mijn best, maar het lukt me niet om de code goed in elkaar te zetten..
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
35
36
37
38
39
40
41
42
43
44
45
46
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
35
36
37
38
39
40
41
42
43
44
45
46
<?php
/*
*
***
*****
*******
*********
***********
Dit zijn: 6 rijen en de eerste rij bestaat uit 5 spaties.
*/
echo '<font face="Lucida Console">';
$aantalHorizontaal = 3;
$aantalVerticaal = 4;
echo '<table border="0">';
for($a=1; $a <= $aantalVerticaal; $a++) {
echo '<tr>';
for($b=1; $b <= $aantalHorizontaal; $b++) {
echo '<td>';
/////////////////////
$rijen = 6;
$spatie = 5;
/////////////////////
for($i=1; $i <= $rijen; $i++) {
for($j=1; $j<= $spatie; $j++) {
echo ' ';
}
for($k=1; $k<=($i*2)-1; $k++) {
echo '*';
}
echo '<br>';
$spatie = $spatie--;
}
echo '</td>';
}
echo '</tr>';
}
echo '</font>';
?>
/*
*
***
*****
*******
*********
***********
Dit zijn: 6 rijen en de eerste rij bestaat uit 5 spaties.
*/
echo '<font face="Lucida Console">';
$aantalHorizontaal = 3;
$aantalVerticaal = 4;
echo '<table border="0">';
for($a=1; $a <= $aantalVerticaal; $a++) {
echo '<tr>';
for($b=1; $b <= $aantalHorizontaal; $b++) {
echo '<td>';
/////////////////////
$rijen = 6;
$spatie = 5;
/////////////////////
for($i=1; $i <= $rijen; $i++) {
for($j=1; $j<= $spatie; $j++) {
echo ' ';
}
for($k=1; $k<=($i*2)-1; $k++) {
echo '*';
}
echo '<br>';
$spatie = $spatie--;
}
echo '</td>';
}
echo '</tr>';
}
echo '</font>';
?>
Je zult alleen aantal rijen en begin spaties moeten berekenen of zelf een berekening in zetten.
(ik heb de font type aangepast, zodat elke karakter even breed is)
Gewijzigd op 16/10/2013 21:38:40 door Dennis WhoCares
Ga hier na kijken en dit toepassen bij de andere opdrachten!
Peter
misschien nog een klein tipje om dat je spaties niet kunt zien van nature zou je eerst eens een ander teken kunnen laten afdrukken en als het werkt pas terugzetten naar spaties
Of zet het tussen <pre> tags en spaties, tabs, enters werken zoals je gewend bent.
if ($spatie) {
$spatie--;
}
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$regels = 10; // Aantal rijen sterretjes
for ($r = 1;$r <= $regels;$r++)
{
$space = $regels - $r;
echo str_repeat(' ', $space < 0 ? 0 : $space);
echo str_repeat('*', $r + $r - 1) . '<br>';
}
?>
$regels = 10; // Aantal rijen sterretjes
for ($r = 1;$r <= $regels;$r++)
{
$space = $regels - $r;
echo str_repeat(' ', $space < 0 ? 0 : $space);
echo str_repeat('*', $r + $r - 1) . '<br>';
}
?>