Summe durch Anzahl dividieren!

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

  • Summe durch Anzahl dividieren!

    Hallo

    Ich mache gerade einen Notenverwalter in PHP für meine Schule! Man wählt das Fach aus und trägt die Note ein! Die Noten werden dann in einer Textdatei untereinander Abgespeichert! Dann kann man sich seine Noten anschauen und es wird automatisch der Schnitt erechnet! Zuerst lese ich die Werte in einen Array ein, dann werden die Noten gezählt und addiert und am schluss wird die Summe durch die Anzahl der Noten dividiert! Mein Problem! Die Anzahl ist immer eins mehr als es ist! Also hat es 6 Noten, wird die Summe durch 7 geteilt! Ich habe jetzt einfach die Anzahl minus 1 gerechnet und dies klappt auch, nur muss es doch ein Fehler im Script sein!

    Hier noch das Script:
    PHP-Code:
    <?
    $pp=fopen("mathe.txt","r");
    if($pp)
    {
      $i=0;
      while(!feof($pp))
      {
         $zeile=fgets($pp,100);
         $tp[$i]=doubleval($zeile);
         $i= $i+1;
      }
        $anzahl = sizeof($tp);
        foreach($tp as $actual)
        {
        $sum += $actual;
        }

    }
    $anz=$anzahl;
    $def=$sum/$anz;
    echo"$def<p>";
    ?>
    Vielen Dank!

  • #2
    Wahrscheinlich ist in der Datei immer eine leere Zeile am ende...
    ich würde ja empfehlen ne Datenbank zu nehmen, oder alles in eine Datei.

    vielleicht hilft das schon:
    if(!empty($zeile)) $tp[$i] = doubleval($zeile);
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Hast Du Leerzeilen als 0, auch mitgezählt?
      doubleval(einer Leerzeile) ergibt 0
      PHP-Code:
      <?
      $pp=fopen("mathe.txt","r");
      if($pp) {
          while(!feof($pp)) {
              $zeile=fgets($pp,100);
              if (doubleval($zeile) > 0) {
                  print "$zeile:".doubleval($zeile)."<br>";
                  $anz++;
                  $sum  += doubleval($zeile);
              }
          }
      }
      $mittel=$sum/$anz;
      echo"Summe: $sum Anzahl: $anz Mittelwert: ".number_format($mittel, 2, ',', '')."<br>\n";
      ?>

      Kommentar


      • #4
        Hi!
        Das die Anzahl immer 1 zuviel ist, liegt wahrscheinlich an einer Leerzeile am Ende der Datei. Wahrscheinlich hast Du auch ein script zum Einfügen der Noten und schreibst in die Datei im Format <Note>\n. Damit erhälst Du immer eine Leerzeile am Ende der Datei.
        Noch einen Tip für den hier von Dir geposteten Code, wenn Du die Funktion file() nutzt, ist es einfacher.

        PHP-Code:
        $noten=file("mathe.txt");
        $anz=count($noten);
        $summe=0;
        for(
        $i=0;$i<$anz;$i++)
        {
          
        $sum+=$noten;
        }
        $mittel=$sum/$anz;
        echo
        "Summe: $sum_Anzahl$anz_Mittelwert: ".number_format($mittel',' '')."<br>\n"
        Achtung code ist nicht getestet! Ich bin davon ausgegangen, daß keine Leerzeile in der mathe.txt Datei mehr vorhanden ist.
        Of all things I've lost
        I miss my mind the most

        Kommentar

        Lädt...
        X