Не могу найти, как заставить php-файл вычислять среднее значение из полученного текстового файла, который содержит больше, чем просто числа

У меня есть текстовый документ, который имеет набор имен и номеров, которые выглядят как так называемые grades.txt:

Carolyn:Pittman:93
Audrey:Ford:98
Debra:Prince:82
Jeff:Beldsoe:73
Jovante:Price:99
Pat:Clarke:91
Darla:Floyd:82
Charlene:Character:71
Kanji:Grant:83
Langston:Hughes:95

Я пытаюсь вычислить среднее значение этих оценок и вывести среднее.

Вот код:

 <html>
<head><title>Grades Results</title></head>

<body>

<?php
// create a variable for scores

$grade = 0;
$average = ($grade+$grade+$grade+$grade+$grade+$grade+$grade+$grade+$grade+$grade)/10;
$highestGrade = 0;

// open grades.txt data file
$gradesFile = fopen("grades.txt", "r");
// read first line
$nextPerson = fgets($gradesFile); // Carolyn:Pittman:93

while(!feof($gradesFile)){
list($firstName, $lastName, $grade) = explode(":", $nextPerson);
print("<p>$firstName</p>");
print("<p>$lastName:</p>");
print("<p>$grade</p>");


$grade = intval($grade);
// determine if ticket price was highest so far
if ($grade > $highestGrade){
$highestGrade = $grade;
// print("<p>Highest grade $highestGrade </p>");
} // end if
// read next line
$nextPerson = fgets($gradesFile);
} // end while

fclose($gradesFile);

// print the highest price
print("<p>The average grade is $average </p>");
print ("<p>Highest grade was $highestGrade </p>");

?>

</body>
</html>

Можно ли ошибиться в формуле?

-1

Решение

Вы рассчитываете среднее значение, прежде чем читать файл. Когда вы назначаете $average, $grade содержит 0так что вы просто усредняете 10 значений 0, который 0,

Вам необходимо вычислить общее количество в течение цикла, который читает файл, и в конце цикла вычислить среднее значение путем деления на количество прочитанных строк.

$total = 0;
$count = 0;

while($nextPerson = fgets($gradesFile)){
list($firstName, $lastName, $grade) = explode(":", $nextPerson);
print("<p>$firstName</p>");
print("<p>$lastName:</p>");
print("<p>$grade</p>");


$grade = intval($grade);
// determine if ticket price was highest so far
if ($grade > $highestGrade){
$highestGrade = $grade;
// print("<p>Highest grade $highestGrade </p>");
} // end if

$total += $grade;
$count++;
} // end while

if ($count > 0) {
$average = $total / $count;
} else {
$average = 0;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector