Calculator
Hallo iedereen,
Ik ben voor school bezig met een klein project in php. Ik moet daarvoor een rekenmachine via Git laten werken.
De opdracht is: Omschrijving
We gaan weer verder met de calculator. Momenteel controleert de calculator niet of je een getal bij een letter probeert op te tellen. Laten we ervoor zorgen dat onze rekenmachine dit op de juiste manier afhandelt.
Daarnaast gaan we de modulo functionaliteit toevoegen en zorgen we ervoor dat het script stopt wanneer er verkeerde input wordt ingevuld.
Opdracht
Gooi een foutmelding als de gebruiker geen geldig getal invoert.
Implementeer de module (%) operator.
Mijn code:
Weet iemand hoe ik dit kan aanpassen zoals gevraagd wordt in de opdracht?
Ik ben voor school bezig met een klein project in php. Ik moet daarvoor een rekenmachine via Git laten werken.
De opdracht is: Omschrijving
We gaan weer verder met de calculator. Momenteel controleert de calculator niet of je een getal bij een letter probeert op te tellen. Laten we ervoor zorgen dat onze rekenmachine dit op de juiste manier afhandelt.
Daarnaast gaan we de modulo functionaliteit toevoegen en zorgen we ervoor dat het script stopt wanneer er verkeerde input wordt ingevuld.
Opdracht
Gooi een foutmelding als de gebruiker geen geldig getal invoert.
Implementeer de module (%) operator.
Mijn 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$operator = readline ("welke operatie wil je uitvoeren (+, -, %)" . PHP_EOL);
$getal1 = readline ("Eerste getal" . PHP_EOL);
$getal2 = readline ("Tweede getal" . PHP_EOL);
if ($operator === "%") {$operator = false;
echo $getal1 % $getal2 . PHP_EOL;
} else {
echo "geen geldige operatie" . PHP_EOL;
}
if ($operator === "+") {
echo $getal1 + $getal2 . PHP_EOL;
} else {
echo "ongeldig" . PHP_EOL;
}
if ($operator === "-") {
echo $getal1 - $getal2 . PHP_EOL;
} else {
echo "geen nummer" . PHP_EOL;
}
if ($operator) {
echo "geen getal" . PHP_EOL;
} else {
echo "geen nummer" . PHP_EOL;
}
?>
$operator = readline ("welke operatie wil je uitvoeren (+, -, %)" . PHP_EOL);
$getal1 = readline ("Eerste getal" . PHP_EOL);
$getal2 = readline ("Tweede getal" . PHP_EOL);
if ($operator === "%") {$operator = false;
echo $getal1 % $getal2 . PHP_EOL;
} else {
echo "geen geldige operatie" . PHP_EOL;
}
if ($operator === "+") {
echo $getal1 + $getal2 . PHP_EOL;
} else {
echo "ongeldig" . PHP_EOL;
}
if ($operator === "-") {
echo $getal1 - $getal2 . PHP_EOL;
} else {
echo "geen nummer" . PHP_EOL;
}
if ($operator) {
echo "geen getal" . PHP_EOL;
} else {
echo "geen nummer" . PHP_EOL;
}
?>
Weet iemand hoe ik dit kan aanpassen zoals gevraagd wordt in de opdracht?
Gewijzigd op 10/03/2021 16:54:01 door - Ariën -
Voor de invoercontrole kan je dit gebruiken:
is_numeric
Misschien dat je aan de hand van de opdracht een komma even moet replacen naar een punt.
We schrijven 2,5 maar de computer herkent alleen 2.5 als getal.
is_numeric
Misschien dat je aan de hand van de opdracht een komma even moet replacen naar een punt.
We schrijven 2,5 maar de computer herkent alleen 2.5 als getal.
Gewijzigd op 10/03/2021 16:53:27 door - Ariën -
Volgens mij krijg je bij elke operator minimum 3 meldingen.
Ik zou dus eerder kiezen voor switch om de keuze te maken van operator.
Later ook eenvoudiger uit te breiden voor delen, vermenigvuldigen, ...
Ik zou dus eerder kiezen voor switch om de keuze te maken van operator.
Later ook eenvoudiger uit te breiden voor delen, vermenigvuldigen, ...
Code (php)
Of zoals Jan aandraagt een switch gebruiken
Persoonlijk vind ik een switch() inderdaad eleganter, omdat dit beter leesbaarder is.
Bedankt voor de reacties, het heeft inderdaad gewerkt.
- Ariën - op 10/03/2021 20:18:32:
Persoonlijk vind ik een switch() inderdaad eleganter, omdat dit beter leesbaarder is.
Persoonlijk vind ik match eleganter. ;-)
Ward van der Put op 11/03/2021 08:30:12:
Persoonlijk vind ik match eleganter. ;-)
Ziet er wel goed uit inderdaad maar opgelet: dit kan alleen met (vanaf) PHP versie 8.
Wat een fantasieloze opdracht, het lijkt wel gekopieerd uit een C handleiding. Vooral die keuze dat het programma moet stoppen bij verkeerde invoer. Het nodigt uit tot een meer recalcitrante uitwerking...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$string = readline('Welke som wil je uitrekenen?' . PHP_EOL);
$lengte = strlen($string);
$tekens = [' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
'(', ')', '+', '-', '*', '/', '%'];
$berekening = '';
for ($i = 0; $i < $lengte; $i++) {
$karakter = $string[$i];
if (in_array($karakter, $tekens)) {$berekening .= $karakter;}
}
try {
$uitkomst = eval('print ' . $berekening . ';');
print 'De uitkomst van ' . $berekening . ' is ' . $uitkomst;
} catch (Throwable $e) {
print 'Kan berekening ' . $berekening . ' niet uitvoeren';
}
?>
$string = readline('Welke som wil je uitrekenen?' . PHP_EOL);
$lengte = strlen($string);
$tekens = [' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
'(', ')', '+', '-', '*', '/', '%'];
$berekening = '';
for ($i = 0; $i < $lengte; $i++) {
$karakter = $string[$i];
if (in_array($karakter, $tekens)) {$berekening .= $karakter;}
}
try {
$uitkomst = eval('print ' . $berekening . ';');
print 'De uitkomst van ' . $berekening . ' is ' . $uitkomst;
} catch (Throwable $e) {
print 'Kan berekening ' . $berekening . ' niet uitvoeren';
}
?>
.



