Een speciale berekening uitvoeren, foutje in script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tim van Norde

Tim van Norde

12/09/2011 20:54:32
Quote Anchor link
Hallo beste mensen :)

Ik ben voor school bezig (nee, het is geen opdracht) met een klein tooltje waarmee we snel een berekening kunnen laten zien. Hiervor heb ik een script gemaakt, die op een speciale manier twee getallen vermenigvuldigt.

Het gaat als volgt, ik neem een voorbeeldsom:

34
16x
(Dit is 544)
Nu pakken we 6, en vermenigvuldigen dit met 4. We beginnen inderdaad rechtsonder x rechtsboven.
Het is 24. Omdat het over de 10 is, onthouden we 2, en zetten 4 neer:
34
16x

Nu doen we 6 x 3 (=18) + de 2 die we moesten onthouden = 20:
34
16x
204
Nu gaan we de honderen (tienen) doen, dus zoiezo een 0.
Nu doen we het getal linksonder, op dezelfde manier:
1 x 4 = 4, heel mooi.
34
16x
204
40+
En dan 1 x 3 = 3
34
16x
204
340+

En dat tellen we bij elkaar op:

34
16x
204
340+
544

Ik hoop echt dat dit duidelijk is ...

Dit is mijn complete PHP 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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php

if (!isset($_GET['g1']))
{

    exit;
}


$getal1 = $_GET['g1'];
$getal2 = $_GET['g2'];

$g1 = Array();
$g2 = Array();

echo "<center>Het totaal is " . $getal1*$getal2 . ", dat gaan we uitrekenen</br><u>" . $getal1 . "</u>x</br>";
echo $getal2 . "</br>";

for($i=strlen($getal1); $i>0; $i--)
{

    $g1[] = substr($getal1, $i-1, $i);
}

for($i=strlen($getal2); $i>0; $i--)
{

    $g2[] = substr($getal2, $i-1, $i);
}


$str[0][0] = "";
$str[1][0] = "0";
$str[0][1] = 0;
$str[1][1] = 0;

for($i=0; $i<count($g1); $i++)
{

    echo "<font color='red'>" . $g2[0] . "x" . $g1[$i] ." = " . $g2[0] * $g1[$i] . "</font></br>";
    if ($g2[0] * $g1[$i]>=10)
    {

        echo substr((string)$g2[0] * $g1[$i], strlen($g2[0] * $g1[$i])-1, strlen($g2[0] * $g1[$i])) . " opschrijven, je houd " . substr((string)$g2[0] * $g1[$i], 0, 1) . " over</br>";
        $str[0][0] = substr((string)$g2[0] * $g1[$i], strlen($g2[0] * $g1[$i])-1, strlen($g2[0] * $g1[$i])) . $str[0][0];
        $str[1][1] = substr((string)$g2[0] * $g1[$i], 0, 1);
    }

    else
    {
        if ($str[1][1]>0)
        {

            echo "<font color='orange'>We hielden " . $str[1][1] . " over, dat doen we er bij</font></br>";
        }

        $str[0][0] = (string)$g2[0] * $g1[$i] + $str[1][1] . $str[0][0];
        $str[1][1] = 0;
    }
}


echo $str[0][0] . "</br>";
$str[1][1] = 0;
echo "Honderden berekenen, 0 erbij</br>";

for($i=0; $i<count($g2); $i++)
{

    echo "<font color='red'>" . $g2[1] . "x" . $g1[$i] ." = " . $g2[1] * $g1[$i] . "</font></br>";
    if ($g2[1] * $g1[$i]>=10)
    {

        echo substr((string)$g2[1] * $g1[$i], strlen($g2[1] * $g1[$i])-1, strlen($g2[1] * $g1[$i])) . " opschrijven, je houd " . substr((string)$g2[1] * $g1[$i], 0, 1) . " over</br>";
        $str[1][0] = substr((string)$g2[1] * $g1[$i], strlen($g2[1] * $g1[$i])-1, strlen($g2[1] * $g1[$i])) . $str[1][0];
        $str[1][1] = substr((string)$g2[1] * $g1[$i], 0, 1);
    }

    else
    {
        if ($str[1][1]>0)
        {

            echo "<font color='orange'>We hielden " . $str[1][1] . " over, dat doen we er bij</font></br>";
        }

        $str[1][0] = (string)$g2[1] * $g1[$i] + $str[1][1] . $str[1][0];
        $str[1][1] = 0;
    }
}


echo $str[1][0] . "</br>";

echo "Klaar! Schrijf dit op:</br>";
echo $getal1 . "</br>";
echo "<u>" . $getal2 . "x</u></br>";
echo $str[0][0] . "</br>";
echo "<u>" . $str[1][0] . "+</u></br>";
echo $str[0][0] + $str[1][0];
echo "</center>";

?>


<form action='berekening.php' method='GET'>
Getal 1:</br>
<input type='text' name='g1' /></br>
Getal 2:</br>
<input type='text' name='g2' /></br>
<input type='submit' value='Berekenen' />
</form>


Kopieër de code in je favoriete editor en sla het op om het te testen.

Als ik 2 hoge getallen op geef, komt er iets totaal verkeerds uit, en ik weet niet waarom :S

Bedankt voor de hulp al vast!

Tim

Toevoeging op 13/09/2011 11:37:28:

Opgelost, na een beetje nadenken bleek het veel simpeler te zijn, het gaat om de output:
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
</php

if (isset($_GET['g1']))
{
    echo "<td align='right'>";
    $g1 = $_GET['g1'];
    $g2 = $_GET['g2'];
    
    echo "Het totaal is <font color='red'>" . $g1 * $g2 . "</font>, schrijf op:</br>";
    echo "$g1 &nbsp;</br><font color='red'><u>".$g2."x</u></font></br>";
    echo substr($g2, strlen($g2)-1, strlen($g2)) * $g1 . " &nbsp;</br>";
    $hundreds = substr($g2, 0, strlen($g2)-1) . "0";
    echo "<font color='red'><u>" . $hundreds * $g1 . "+</u></font></br>";
    echo $g1 * $g2 . " &nbsp;";
    echo "</font>";
    echo "</td>";
    echo "</tr>";
    echo "</table>";
}

?>

Gewijzigd op 12/09/2011 20:55:12 door Tim van Norde
 
Er zijn nog geen reacties op dit bericht.



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.