Een speciale berekening uitvoeren, foutje in script
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
4²
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)
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
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>
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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 </br><font color='red'><u>".$g2."x</u></font></br>";
echo substr($g2, strlen($g2)-1, strlen($g2)) * $g1 . " </br>";
$hundreds = substr($g2, 0, strlen($g2)-1) . "0";
echo "<font color='red'><u>" . $hundreds * $g1 . "+</u></font></br>";
echo $g1 * $g2 . " ";
echo "</font>";
echo "</td>";
echo "</tr>";
echo "</table>";
}
?>
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 </br><font color='red'><u>".$g2."x</u></font></br>";
echo substr($g2, strlen($g2)-1, strlen($g2)) * $g1 . " </br>";
$hundreds = substr($g2, 0, strlen($g2)-1) . "0";
echo "<font color='red'><u>" . $hundreds * $g1 . "+</u></font></br>";
echo $g1 * $g2 . " ";
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.