PHP :: Aufgabe #87
2 Lösungen

Quersummen Berechnung
Anfänger - PHP
von mattthias
- 18.08.2015 um 09:49 Uhr
Teil1. Schreibe ein Konsolenprogramm, welches die Quersummen der Zahlen 0 bis 99 errechnet.
Zusatz: Schreibe ein Programm, welches eine Eingabe annimmt, und aus der eingegebenen Zahl die Quersumme errechnet
(Mindestens bis 100.000).
*Das Programm muss sauber formatiert sein
*Verwende Kommentare zum besseren Verständnis und / oder halte deinen Fortschritt damit fest
Hinweise und Anregungen:
- Teil 1 darf auf den Fall bezogen programmiert werden. Aber:Ist das notwendig?
- Vergiss das Semikolon nicht
- Wie kann ich die Konsole offen lassen, bis ich Enter drücke? Alternativ: Wie könnte ich die Konsole über einen bestimmten
Zeitraum das Ergebnis anzeigen lassen?
Zusatz: Schreibe ein Programm, welches eine Eingabe annimmt, und aus der eingegebenen Zahl die Quersumme errechnet
(Mindestens bis 100.000).
*Das Programm muss sauber formatiert sein
*Verwende Kommentare zum besseren Verständnis und / oder halte deinen Fortschritt damit fest
Hinweise und Anregungen:
- Teil 1 darf auf den Fall bezogen programmiert werden. Aber:Ist das notwendig?
- Vergiss das Semikolon nicht
- Wie kann ich die Konsole offen lassen, bis ich Enter drücke? Alternativ: Wie könnte ich die Konsole über einen bestimmten
Zeitraum das Ergebnis anzeigen lassen?
Lösungen:
Kombination aus Teil1&2:
PHP-Code

<?php class CrossSumCalculator { public function calculate($number){ if(!is_numeric($number)){ throw new Exception("Input must be a Number!"); } $number = (string)$number; $sum = 0; for ($i=0; $i < strlen($number); $i++) { $sum += $number[$i]; } return $sum; } } $calculator = new CrossSumCalculator(); //Part 1: Calculate Crosssums from 0 to 99 foreach (range(0, 99, 1) as $number) { echo "Die Quersumme von {$number} ist: {$calculator->calculate($number)}\n"; } //Part 2: Calculate Crosssums for Console-Inputs while(true){ echo "Quersumme berechnen von: "; $input = trim(fgets(STDIN)); if($input == ""){ echo "Calculator exited\n"; break; } echo "Die Quersumme von {$input} ist: {$calculator->calculate($input)}\n"; }

<?php printQuersumme(); echo 'Quersumme von 1000000 = ' . getQuersumme(1000000) . '<br />'; echo 'Quersumme von 123456789 = ' . getQuersumme(123456789) . '<br />'; // aufgabenteil 1, // ausgabe der quersumme von 0..99 function printQuersumme() { for ($i=0; $i < 99; $i++) { echo 'Quersumme von '.$i.' = '.getQuersumme($i).'<br />'; } } // zwar für teil 1 implementiert, lässt sich aber auch für die zusatzaufgabe verwenden, // indem man diese funktion direkt aufruft und dann die gewünschte zahl übergibt. function getQuersumme($number) { $q = 0; $blub = str_split((string)$number); foreach ($blub as $bli) { $q += $bli; } return $q; } ?>