Ankündigung

Einklappen
Keine Ankündigung bisher.

Arrays und mittelwert.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Arrays und mittelwert.

    Hallo zusammen

    Ich bin hier auf ein kleines Problem gestossen. Ich bin lehrling in einer Informatik firma und mein Chef verlangt nun von mir dass ich ihm per PHP einen code gebe, der 12 Daten von Windstärke in einen Array speichere, den niedrigsten und höchsten wert entferne und dann aus dem Rest den Mittelwert berechne.

    Leider kenn ich mich mit PHP noch nicht aus und habe keine ahnung womit ich anfangen soll. Wäre euch echt dankbar wenn ihr mir aushelfen könntet

    Gruss und Danke
    Naith

  • #2
    Hallo Naith, willkommen.

    Zumindest die sprachlichen Grundlagen von PHP solltest Du Dir über ein Tutorial oder Einsteigerbuch (Bibliothek?) aneignen. Danach können wir auf dieser Basis Dein Problem diskutieren.

    Kommentar


    • #3
      Es gibt zwar zwei Funktionen in PHP, um den Minimalwert und Maximalwert in einem Array zu finden, aber mit diese geben dann auch nur den Wert, nicht aber das Element im Array zurück.

      Das heißt, du musst das Array erst sortieren und dann das erste und letzte Element im Array entfernen. Das setzt vorraus, dass das Array mindestens 3 Elemente besitzt und alle Elemente numerische Werte enthalten.

      Um den Durchschnitt der restlichen Werte im Array zu errechnen, musst du zuerst die Summe aller Werte im Array berechnen und diese anschließend durch die Anzahl der Elemente im Array dividieren.

      Beispiel:
      PHP-Code:
      <?php

      $winddaten 
      = array(59112976211812);

      // Mindestens drei Elemente
      if( count($winddaten) < ) die("Zu wenige Elemente.");

      // Sortiere Array
      sort($winddatenSORT_NUMERIC);

      // Entferne groessten und kleinsten Wert
      $key_max count($winddaten) - 1;  // geht, weil Array mit sort() sortiert wurde
      unset($winddaten[$key_max]);
      unset(
      $winddaten[0]);

      // Errechne Durchschnitt
      $summe array_sum($winddaten);
      $anzahl count($winddaten);
      $durchschnitt $summe $anzahl;

      echo 
      "Durchschnitt: "$durchschnitt;

      ?>
      Wenn zwei "groesste" Werte existieren, wird aber auch nur einer entfernt.

      Kommentar


      • #4
        Im Prinzip braucht man den Index für die beiden Werte nicht zu kennen.
        Man kann auch einfach die Summe um den größten und kleinsten Wert reduzieren und die Anzahl der Elemente um 2.
        Damit spart man sich die Sortiererei.
        Die Position der Werte ist dem Mittelwert ziemlich egal.

        Kommentar


        • #5
          PHP-Code:
          <?php
          function getAverage($array) {
              if (empty(
          $array)) return 0;
              
          $min $max $array[0];
              
          $summe 0;
              foreach (
          $array as $value) {
                  if (
          $value $min$min $value;
                  if (
          $value $max$max $value;
                  
          $summe += $value;
              }
              return (
          $summe $min $max) / (count($array) - 2);
          }

          $array = array(1,2,3,4,5,6,100,1000,29321,-5);
          $durchschnitt getAverage($array);
          So hätte ich das gelöst. Gerade das sortieren dürfte am längsten dauern bei Arrays, Sortierung ist aber nicht nötig.

          Kommentar


          • #6
            Ich sags Dir nur ungern Florian, aber:

            mixed min ( array values )
            mixed max ( array values )
            number array_sum ( array array )
            getAverage () sollte damit auf folgendes hinauslaufen:
            PHP-Code:
            (array_sum ($array) - min ($array) - max ($array)) / (count($array) - 2); 

            Kommentar


            • #7
              Zitat von Der_Gerhard Beitrag anzeigen
              Im Prinzip braucht man den Index für die beiden Werte nicht zu kennen.
              Man kann auch einfach die Summe um den größten und kleinsten Wert reduzieren und die Anzahl der Elemente um 2.
              Damit spart man sich die Sortiererei.
              Die Position der Werte ist dem Mittelwert ziemlich egal.
              Stimmt, jetzt wo du es sagst ... wäre sinnvoller
              Und es passt sogar alles in eine Zeile, toll

              Kommentar


              • #8
                Du solltest nur noch ein paar - zugegebenermaßen unwahrscheinliche - besondere Fälle abfangen. Zum Beispiel wenn dein Array null, einen oder nur zwei Werte enthält...

                Kommentar

                Lädt...
                X