Figuur met de while lus!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PEter Alex

PEter Alex

16/10/2013 00:14:13
Quote Anchor link
hallo,

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)
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
<?php
        $rij
= 0;
        while ($rij <= 5) {
            $spatie = 5;

            while ($spatie >= $rij) {
                echo "*";
                $spatie--;
                          }

            

            $rij++;
            echo "</br>";
        }


        $rij = 0;
        while ($rij <= 8) {
            $spatie = 0;
            while ($spatie <= $rij) {
                echo "*";
                $spatie++;
            }

            echo "<br />";
            $rij+=2;
        }

        ?>


het eind figuur

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
          *    
         ***    
        *****  
       *******  
      *********
     ***********


?>



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
 
PHP hulp

PHP hulp

17/11/2024 14:35:55
 
Wouter J

Wouter J

16/10/2013 00:27:59
Quote Anchor link
Je moet dit veel handiger aanpassen. Ga eens tellen hoeveel spaties je hebt voor de sterretjes en hoeveel sterretjes je dan vervolgens hebt:


[/table]

Zie je een patroon ontstaan? Ga nu 2 variabelen bijhouden, $spaties en $sterretjes. Vervolgens gebruik je str_repeat om een bepaalt teken, een spatie of sterretje, een aantal keer te herhalen.
RegelSpatiesSterretjes
*51
***43
*****35
*******27
*********19[/td
[/tr]

***********[/td
11
 
Kris Peeters

Kris Peeters

16/10/2013 10:28:22
Quote Anchor link
Oh cool; we kunnen hier dus <table>'s zetten met UBB
 
PEter Alex

PEter Alex

16/10/2013 20:52:51
Quote Anchor link
Hallo,

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
 
Dennis WhoCares

Dennis WhoCares

16/10/2013 20:55:15
Quote Anchor link
Je zult een tabel moeten maken waar je de figuren in echo'd met de lus, of in div's die je naast elkaar zet
Gewijzigd op 16/10/2013 20:56:13 door Dennis WhoCares
 
PEter Alex

PEter Alex

16/10/2013 20:56:58
Quote Anchor link
Kan je misschien ook een voorbeeld van de code laten zien, hoe dat inelkaar zit bij meerdere lussen in een? Heb dit al geprobeerd maar kom er niet uit...
Gewijzigd op 16/10/2013 20:57:54 door PEter Alex
 
Dennis WhoCares

Dennis WhoCares

16/10/2013 21:00:48
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
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>';


?>


zoiets?
Gewijzigd op 16/10/2013 21:02:10 door Dennis WhoCares
 
PEter Alex

PEter Alex

16/10/2013 21:08:11
Quote Anchor link
Bedankt:D

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
     *    
    ***    
   *****  
  *******  
 *********
***********


?>


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
 
Eddy E

Eddy E

16/10/2013 21:14:46
Quote Anchor link
Het denkwerk is het moeilijkste en eerste waar je mee begint.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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, "*");
?>


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?
 
PEter Alex

PEter Alex

16/10/2013 21:24:04
Quote Anchor link
Sorry,

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..
 
Dennis WhoCares

Dennis WhoCares

16/10/2013 21:26:10
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
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 '&nbsp;';
            }

            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
 
PEter Alex

PEter Alex

16/10/2013 21:36:28
Quote Anchor link
Bedankt Dennis!

Ga hier na kijken en dit toepassen bij de andere opdrachten!

Peter
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/10/2013 01:40:13
Quote Anchor link
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
 
Dos Moonen

Dos Moonen

17/10/2013 07:40:11
Quote Anchor link
Of zet het tussen <pre> tags en spaties, tabs, enters werken zoals je gewend bent.
 
Jason Miles

Jason Miles

17/10/2013 16:43:41
Quote Anchor link
Of verander $spatie = $spatie--; in

if ($spatie) {
$spatie--;
}
 
Nick Dijkstra

Nick Dijkstra

17/10/2013 19:56:54
Quote Anchor link
Het zal vast netter kunnen, maar ik heb dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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('&nbsp;', $space < 0 ? 0 : $space);
    echo str_repeat('*', $r + $r - 1) . '<br>';
}

?>
 



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.