PHP :: Aufgabe #87

2 Lösungen Lösungen öffentlich

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?

Lösungen:

vote_ok
von Jidoka86 (660 Punkte) - 10.05.2016 um 22:08 Uhr
Kombination aus Teil1&2:
Quellcode ausblenden 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";
  }

vote_ok
von Exception (7090 Punkte) - 08.06.2018 um 16:33 Uhr
Quellcode ausblenden PHP-Code
<?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;
}

?>