PHP :: Aufgabe #281

2 Lösungen Lösungen öffentlich

Rationale Zahlen einlesen: Mittelwert,Produkt und das Maximum ermitteln

Anfänger - PHP von Cara - 10.05.2020 um 21:54 Uhr
Schreiben Sie ein Programm, das n rationale Zahlen einliest / einlesen kann und den Mittelwert, das Produkt und das Maximum dieser Zahlen ermittelt und ausgibt.

Lösungen:

vote_ok
von juergen (360 Punkte) - 04.06.2020 um 21:30 Uhr
Quellcode ausblenden PHP-Code

// Geben Sie in das Array soviele Zahlen ein, wie Sie möchten
$zahlen = [1,5,89,12,87,'A']; // A ist keine Zahl und wird später herausgefiltert :-)

function filterNonDigitsOfArray($value)
{
  if(is_int($value) OR is_float($value))
    return $value;
}


function ermittleMWProduktMaximum(array $array = [])
{
  if($array){
    //Erlaube nur Zahlen und filtere alle anderen Werte aus dem array (z.B. Buchstaben)
    $array = array_filter($array, 'filterNonDigitsOfArray');
    $result = [];
    if($array){
      //Mittelwert
      $result[] = 'Mittelwert = '.round((array_sum($array)/count($array)),2);
      //Produkt
      $result[]  = 'Produkt = '.round(array_product($array),2);
      //Maximum
      $result[] = 'Maximum = '.max($array);
    }
    return implode(', ', $result);
  }
}

// Ausgabe
echo ermittleMWProduktMaximum($zahlen);

vote_ok
von Exception (7090 Punkte) - 12.06.2020 um 12:35 Uhr
main.php
Quellcode ausblenden PHP-Code
<?php

array_shift($argv); // remove script name

if (sizeof($argv) === 0) {
  die ('Error: at least 1 parameter expected, 0 given.');
}

$numbers = [];

foreach ($argv as $arg) {
  $numbers[] = floatval($arg);
}

echo PHP_EOL;

getAverage($numbers);
getProduct($numbers);
getMax($numbers);
getMin($numbers);

function getAverage(array $a)
{
  $result = array_sum($a) / sizeof($a);
  printResult(__FUNCTION__, $result);
}

function getProduct(array $a)
{
  $result = array_shift($a);

  foreach ($a as $item) {
    $result *= $item;
  }

  printResult(__FUNCTION__, $result);
}

function getMax(array $a)
{
  printResult(__FUNCTION__, max($a));
}

function getMin(array $a)
{
  printResult(__FUNCTION__, min($a));
}

function printResult(string $funcName, float $result)
{
  echo "Function : '$funcName'" , PHP_EOL ,
       'Result   : ' , $result , PHP_EOL , PHP_EOL;
}

Konsolenausgabe:

php main.php 1 3.1 2

Function : 'getAverage'
Result : 2.0333333333333

Function : 'getProduct'
Result : 6.2

Function : 'getMax'
Result : 3.1

Function : 'getMin'
Result : 1