Slak klimt in de put

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Pieter M

Pieter M

23/09/2010 14:43:00
Quote Anchor link
Een slak zit in de bodem van een put. Elke dag klim hij 3 meter omhoog, maar ’s nachts zakt hij 2 meter naar beneden. Bepaal voor een opgegeven hoogte van de put het aantal dagen dat de slak erover doet om boven te komen.

ik hoef geen oplossingen, maar ik wil alleen weten of dit een beetje klopt (hij werkt nog niet helemaal)

<FORM METHOD="post" ACTION="opdracht4.php">
hoogte van de put: <INPUT TYPE="text" NAME="put_hoogte"><br>

<input type="submit">
</form>

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
<?PHP            
          function klimmen($put_hoogte, $slakhoogte, $dag)
          {

                     
                    $slakhoogte += 3;
                    $dag += 1;
                    
                    if ($slakhoogte >= $put_hoogte)
                    {

                          return "hoi";
                    }

                    
                    else
                    {
                             $slakhoogte -=2;
                            return false;
                    }
                             
            }

            
            $dag = 0;
             $puthoogte = $_POST['put_hoogte'];
            
            
            echo klimmen ($puthoogte,0,0);
            

    
    
    

?>
 
PHP hulp

PHP hulp

24/12/2024 00:35:27
 
- SanThe -

- SanThe -

23/09/2010 14:52:10
Quote Anchor link
Zet eerst eens dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

?>
 
Pieter M

Pieter M

23/09/2010 14:54:42
Quote Anchor link
ik had hem zelf al opgelost, maar bedankt =3
 
- SanThe -

- SanThe -

23/09/2010 15:09:00
Quote Anchor link
Laat jouw oplossing eens zien.

Mijn variant:
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
<form method="post" action="">
<form method="post" action="">
Hoogte van de put: <input type="text" name="puthoogte"><br>
<input type="submit">
</form>

<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

function
klimmen($puthoogte, $slakhoogte, $dag)
{

    $slakhoogte += 3;
    $dag += 1;
    if ($slakhoogte >= $puthoogte)
    {

        return  'Op de ' . $dag . 'e dag is de slak boven uit de ' . $puthoogte . ' meter diepe put.';
    }

    else
    {
        $slakhoogte -=2;
        $klimmen = klimmen ($puthoogte, $slakhoogte, $dag);
        return $klimmen;
    }
}


$dag = 0;
$puthoogte = !empty($_POST['puthoogte']) ? (int) $_POST['puthoogte'] : 0;

echo klimmen($puthoogte, 0, 0);

?>
Gewijzigd op 23/09/2010 18:25:06 door - SanThe -
 
Pieter M

Pieter M

23/09/2010 15:11:49
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            
    function klimmen($put_hoogte, $slakhoogte, $dag)
    {

        while ($slakhoogte < $put_hoogte)
        {

            $slakhoogte += 3;
            $dag += 1;
                      
            if ($slakhoogte >= $put_hoogte)
            {

                return "aantal dagen: $dag";
            }

                            
            else
            {
                $slakhoogte -=2;
            }
        }
        }

            
    $puthoogte = $_POST['put_hoogte'];
    echo klimmen ($puthoogte,0,0);
?>
 
Pim -

Pim -

23/09/2010 15:17:09
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function($put, $snelheid, $terugval) {
    for($dag = 0, $slak = 0; $slak < $put; $dag++, $slak -= $terugval)
        $slak += $snelheid;
    return $dag;
}

?>

Nog korter ;)
Gewijzigd op 23/09/2010 15:18:01 door Pim -
 
- SanThe -

- SanThe -

23/09/2010 15:25:23
Quote Anchor link
Pim de Haan op 23/09/2010 15:17:09:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function($put, $snelheid, $terugval) {
    for($dag = 0, $slak = 0; $slak < $put; $dag++, $slak -= $terugval)
        $slak += $snelheid;
    return $dag;
}

?>

Nog korter ;)


Wel kort, maar werkt alleen niet.
 
Pieter M

Pieter M

23/09/2010 15:25:59
Quote Anchor link
SanThe Nvt op 23/09/2010 15:25:23:
Pim de Haan op 23/09/2010 15:17:09:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function($put, $snelheid, $terugval) {
    for($dag = 0, $slak = 0; $slak < $put; $dag++, $slak -= $terugval)
        $slak += $snelheid;
    return $dag;
}

?>

Nog korter ;)


Wel kort, maar werkt alleen niet.


touché
 
Pim -

Pim -

23/09/2010 15:28:42
Quote Anchor link
Pieter M op 23/09/2010 15:25:59:
SanThe Nvt op 23/09/2010 15:25:23:
Pim de Haan op 23/09/2010 15:17:09:
...
Nog korter ;)


Wel kort, maar werkt alleen niet.


touché

Tsja...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function slak($put, $snelheid, $terugval) {
    for($dag = 0, $slak = 0; $slak < $put; $dag++, $slak -= $terugval)
        $slak += $snelheid;
    return $dag;
}

?>

Nu wel, functienaam vergeten... Toch korter ;)
 
- SanThe -

- SanThe -

23/09/2010 15:33:18
Quote Anchor link
Helaas, heb je het wel getest?
 
Pim -

Pim -

23/09/2010 15:42:31
Quote Anchor link
Ja.
Dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function slak($put, $snelheid, $terugval) {
    for($dag = 0, $slak = 0; $slak < $put; $dag++, $slak -= $terugval)
        $slak += $snelheid;
    return $dag;
}


var_dump(slak(20, 3,2));
?>
?
Geeft
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
int(20)

Of bedoel je met 'niet werken' dat er bij het copy pasten niks wordt weergegeven?
 
Pieter M

Pieter M

23/09/2010 15:55:54
Quote Anchor link
Om te voorkomen dat slakken te snel uit de put komen verhoogt de boer zijn put steeds met 25%. Bepaal bij gegeven puthoogte en een gegeven minimum aantal dagen dat de slak nodig heeft om uit de put te klimmen het aantal keer dat de boer zijn put minimaal moet verhogen.

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
<?PHP            
    function klimmen($put_hoogte, $min_dag, $slakhoogte, $dag, $verhoogd)
    {

        while ($slakhoogte < $put_hoogte)
        {

            $slakhoogte += 3;
            $dag += 1;
                      
             if ($slakhoogte >= $put_hoogte)
            {

                if ($dag >= $min_dag)
                    {

                         return 'aantal dagen: '. ($dag-1) . '<br>' . 'minimaal aantal keer verhogen: ' . $verhoogd;
                    }

                
                    
                    else
                    {
                                 $put_hoogte *= 1.25;
                                 $verhoogd +=1;
                            $slakhoogte -=2;
                     }
                                     
                 }

                            
                 else
                 {
                 $slakhoogte -=2;
                 }
       }
   }

            
$puthoogte = $_POST['put_hoogte'];
$min_dag = $_POST['min_dag'];
echo klimmen ($puthoogte,$min_dag,0,0,0);
?>
Gewijzigd op 23/09/2010 16:04:47 door Pieter M
 
- SanThe -

- SanThe -

23/09/2010 15:59:12
Quote Anchor link
Pim de Haan op 23/09/2010 15:42:31:
var_dump(slak(20, 3,2));
Geeft int(20)


En dat antwoord is fout.
De code werkt wel, maar de antwoorden kloppen niet.
 
Nicoow Unknown

Nicoow Unknown

23/09/2010 16:00:10
Quote Anchor link
@Pim,
Dus hij werkt niet, 20 is niet het juiste antwoord.
Zonder te rekenen, zeg ik dat het logischer wijs 17 of 18 is.
Hij klimt iedere hele dag een meter.
Maar het laatste stukje klimt hij er 3 achter elkaar, dus als je 17 hebt bereikt, dan ben je die dag erna uit.
Dus in totaal heb je 34 + 1 itteraties nodig om er doorheen te gaan, dus ik zeg dat je er de 18e dag uit bent. (is dit juist??)
 
Pim -

Pim -

23/09/2010 16:00:21
Quote Anchor link
laat maar
Gewijzigd op 23/09/2010 16:05:45 door Pim -
 
Pieter M

Pieter M

23/09/2010 16:00:24
Quote Anchor link
SanThe Nvt op 23/09/2010 15:59:12:
Pim de Haan op 23/09/2010 15:42:31:
var_dump(slak(20, 3,2));
Geeft int(20)


En dat antwoord is fout.
De code werkt wel, maar de antwoorden kloppen niet.

hij zou er 17 dagen over doen
 

23/09/2010 16:07:55
Quote Anchor link
Nico Kaag op 23/09/2010 16:00:10:
@Pim,
Dus hij werkt niet, 20 is niet het juiste antwoord.
Zonder te rekenen, zeg ik dat het logischer wijs 17 of 18 is.
Hij klimt iedere hele dag een meter.
Maar het laatste stukje klimt hij er 3 achter elkaar, dus als je 17 hebt bereikt, dan ben je die dag erna uit.
Dus in totaal heb je 34 + 1 itteraties nodig om er doorheen te gaan, dus ik zeg dat je er de 18e dag uit bent. (is dit juist??)


Ja, achttien is juist. Net zoals dat zeven niet juist is, maar acht moet zijn. Je begint namelijk bij nul. SanThe's oplossing hierboven is dus niet correct.
Verder hoef je helemaal niet ingewikkeld te doen met loops. Het is gewoon een formule:
Hoogte = 3*aantal-dagen - 2*aantal-nachten
h = 3*x - 2*(x-1) // Je begin met een dag, dus de nacht komt één stap later
h = 3*x - 2*x + 2 (-*-=+)
h = x + 2
x = h - 2
 
Vincent Huisman

Vincent Huisman

23/09/2010 16:09:30
Quote Anchor link
je kan toch ook gewoon +1 alleen doen, 3-2=1
 

23/09/2010 16:14:29
Quote Anchor link
Vincent Huisman op 23/09/2010 16:09:30:
je kan toch ook gewoon +1 alleen doen, 3-2=1


Natuurlijk kan je +1 doen. Wat heb je dan? 10 eieren?

Geef eens aan waar en hoe of wat.


Jij denkt dus van, hij gaat drie omhoog overdag, en dan gaat er 's nachts weer één vanaf. Wat dan volgens jou zou betekenen dat hij dan +1 aflegt in het totaal.
Volgens mij klopt dat niet. Kijk maar naar mijn formule.
Gewijzigd op 23/09/2010 16:16:11 door
 
Pim -

Pim -

23/09/2010 16:19:05
Quote Anchor link
Zo dan, nu wel 18 ;) en nog korter
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
function slak($put, $snelheid, $terugval) {
    for($dag = 1, $slak = 0; ($slak += $snelheid) && $slak < $put; $dag++, $slak -= $terugval);
    return $dag;
}

?>
Gewijzigd op 23/09/2010 16:21:27 door Pim -
 

23/09/2010 16:29:25
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

function slak($put_hoogte)
{

return $put_hoogte-2;
}

?>

Ha!
(Er staat nergens dat die snelheid omhoog en laag aangepast moeten kunnen worden. Want als dat wel het geval is, dan zou de formule moeten worden aangepast...)
 

Pagina: 1 2 volgende »



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.