Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 07.03.2016
Сообщений: 7

Вывод среднего арифметического и макс. и мин. значений

07.03.2016, 14:58. Показов 2551. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всех приветствую! Выполняя лабораторную работу по PHP столкнулся с проблемой выведения среднего арифметического и вывода максимального и минимального значения. Суть такая: задается количество вычисляемых значений, начальное значение аргумента и шаг изменения аргумента и нужно вычислить функции при заданных аргументах. При вычислении функции в цикле происходит деление на 0, что соответственно недопустимо, поэтому при таком раскладе значение аргумента просто заменяю на слово 'ERROR', но дело в том, что при подсчете среднего арифметического программа считает это функцию как элемент. Ну то есть допустим количество вычисляемых значений '3', начальное значение аргумента '100' (что при заданной функции дает деление на ноль) и изменение аргумента на 1 значение. В итоге получается первая функция равна ERROR, вторая равна - 9.1 и третья равна -9.2. Среднее арифметическое значение должно получится -9.15 ( так как по идее всего 2 значения), но выдает -6.1 (так как считает функцию, которая равна ERROR за элемент). Как я понял, значение ERROR, PHP воспринимает как просто "0". В связи с этим, при сравнении максимального значения он выдает ERROR, а должен выдавать -9.1. Можно ли как нибудь в PHP изолировать эту функцию, чтобы программа перестала воспринимать ее как функцию? Или можно как то по другому обойти? Надеюсь я понятно изложил суть проблемы. Просьба не ругаться, я полный новичок в программировании.

Код программы:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
 
                        $x = 100; // начальное значение аргумента
                        $encounting = 3; // количество вычисляемых значений
                        $step = 1; // изменение аргумента
                        $type = 'A'; // тип верстки
                        $max_value = -10000;
                        $min_value = 10000;
 
                        if($type == 'B') // если тип верстки B то...
                            echo '<ul>'; // начинаем список
                        else
                        if($type == 'C')
                            echo '<ol>';
                        else
                        if($type == 'D')
                            echo '<table border="1">';
                                                    
                            // цикл с заданным колличеством итераций
                        for ( $i=0; $i < $encounting; $i++, $x+=$step) // i = 0, 0 меньше 10000 начинаем цикл
                        {
                                if($x <= 10) // если x меньше или равно 10 то...
                                    $f =(($x*$x)*($x-2))+4; // вычисляем функцию
                                else // иначе
                                if($x < 20) // если x меньше 20 то...
                                    $f = 11*$x-55; // вычисляем эту функцию
                                else // иначе
                                {
                                    if($x == 100) // если аргумент равен 100 то...
                                        $f='ERROR';// не вычисляем функцию
 
                                         
                                    else // иначе 
                                        $f = ($x-100)/(100-$x) - $x/10 +2; // вычисляем эту функцию
                                }
                                     
                                if($type == 'A') // если тип верстки A
                                {
                                    echo 'f('.$x.')='.$f; // выводится аргумент и значение аргумента
                                    if ($i < $encounting-1) // если это не последняя итерация цикла
                                        echo '<br>'; // выводим знак перевода строки
                                }
 
                                else // иначе 
                                if($type == 'B')// если тип верстки 'B'
                                {
                                    echo '<li>f('. $x.')='.$f.'</li>'; // выводим данные как пункт списка
                                }
 
                                else
                                    if($type == "C")
                                {
                                    echo '<li>f('. $x.')='.$f.'</li>';
                                }
 
                                else 
                                    if($type == 'D')
                                {
                                    echo '<tr><td>'.$i.'.</td><td>f('. $x.')=</td><td>'.$f.'</td></tr>';
                                }
 
                                else 
                                    if($type == 'E')
                                {
                                    echo '<div class="vivod">f('.$x.')='.$f.'</div>';
                                }
 
                                if ($max_value < $f)
                                {
                                    $max_value = $f;
                                }
 
                                if ($min_value > $f)
                                {
                                    $min_value = $f;
                                }
                                
 
 
                                $sum = $f+$sum; // переменной f складывается с пустой переменной sum и заносится значение в переменную sum
                        }
 
                            if ($type == 'B') //если тип верстки B
                                echo '</ul>'; // закрываем тег списка
                            if ($type == 'C')
                                echo '</ol>';
                            if ($type == 'D')
                                echo '</table>';
 
                     ?>
                    
            </main>
            <footer>
                <ul>
                    <li><h3>Тип верстки: <?php echo $type; ?></h3></li>
                    <li><h3>Максимальное значение:<?php echo $max_value; ?></h3></li>
                    <li><h3>Минимальное значение:<?php echo $min_value; ?></h3></li>
                    <li><h3>Среднее арифметическое:<?php echo $sum/$i; ?></h3></li>
                    <li><h3>Сумма:<?php echo $sum ?></h3></li>
                </ul>
            </footer>
Вывод на экране:
Миниатюры
Вывод среднего арифметического и макс. и мин. значений  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.03.2016, 14:58
Ответы с готовыми решениями:

Дописать к программе нахождение среднего арифметического значения и вывода мин и макс значений
добрый день, решал задачу на подобную тему и возникли трудности с нахождением здесь среднего арифметического значения и вывода мин и макс...

Составить программу вычисления среднего арифметического отрицательных значений и среднего геометрического положительных значений функции
Составить программу вычисления среднего арифметического отрицательных значений и среднего геометрического положительных значений функции...

Вывод слова, содержащего мин и макс количество символов
Помогите пожалуста!:help: У меня должен быть зачет по ОП, нужно выполнить простенькое задание на обычном С (не ++), а я с языком Си вобще...

3
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
07.03.2016, 15:19
Лучший ответ Сообщение было отмечено Arbuz666 как решение

Решение

Вы для подсчета среднего арифметического используете $i, которое равнго количеству итераций, т.е. в данном случае он делит на 3. А нужно чтоб делил на 2. Можно к примеру сделать так перед первым if
PHP
1
$count = $encounting;
затем здесь
PHP
1
2
3
4
5
6
7
if($x == 100) // если аргумент равен 100 то...
{
    $count--;
    continue; // если не нужно выводить значение иначе оставьте $f='ERROR';
}
else // иначе 
      $f = ($x-100)/(100-$x) - $x/10 +2; // вычисляем эту функцию
и вывод
HTML5
1
<li><h3>Среднее арифметическое:<?php echo $sum/$count; ?></h3></li>
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
07.03.2016, 16:36
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
 
                        $x = 100; // начальное значение аргумента
                        $encounting = 3; // количество вычисляемых значений
                        $step = 1; // изменение аргумента
                        $type = 'A'; // тип верстки
                        $max_value = -10000;
                        $min_value = 10000;
 
                        if($type == 'B') // если тип верстки B то...
                            echo '<ul>'; // начинаем список
                        else
                        if($type == 'C')
                            echo '<ol>';
                        else
                        if($type == 'D')
                            echo '<table border="1">';
                                                    
                            // цикл с заданным колличеством итераций
                        $cCount = 0;
                        for ( $i=0; $i < $encounting; $i++, $x+=$step) // i = 0, 0 меньше 10000 начинаем цикл
                        {
                                if($x <= 10) // если x меньше или равно 10 то...
                                    $f =(($x*$x)*($x-2))+4; // вычисляем функцию
                                else // иначе
                                if($x < 20) // если x меньше 20 то...
                                    $f = 11*$x-55; // вычисляем эту функцию
                                else // иначе
                                {
                                    if($x == 100) // если аргумент равен 100 то...
                                        $f='ERROR';// не вычисляем функцию
 
                                         
                                    else // иначе 
                                        $f = ($x-100)/(100-$x) - $x/10 +2; // вычисляем эту функцию
                                }
                                     
                                if($type == 'A') // если тип верстки A
                                {
                                    echo 'f('.$x.')='.$f; // выводится аргумент и значение аргумента
                                    if ($i < $encounting-1) // если это не последняя итерация цикла
                                        echo '<br>'; // выводим знак перевода строки
                                }
 
                                else // иначе 
                                if($type == 'B')// если тип верстки 'B'
                                {
                                    echo '<li>f('. $x.')='.$f.'</li>'; // выводим данные как пункт списка
                                }
 
                                else
                                    if($type == "C")
                                {
                                    echo '<li>f('. $x.')='.$f.'</li>';
                                }
 
                                else 
                                    if($type == 'D')
                                {
                                    echo '<tr><td>'.$i.'.</td><td>f('. $x.')=</td><td>'.$f.'</td></tr>';
                                }
 
                                else 
                                    if($type == 'E')
                                {
                                    echo '<div class="vivod">f('.$x.')='.$f.'</div>';
                                }
 
                                if ($max_value < $f)
                                {
                                    $max_value = $f;
                                }
 
                                if ($min_value > $f)
                                {
                                    $min_value = $f;
                                }
                                
 
                                if ( $f !== "ERROR" ) {
                                    $cCount += 1;
                                    $sum = $f+$sum; // переменной f складывается с пустой переменной sum и заносится значение в переменную sum
                                }
                        }
 
                            if ($type == 'B') //если тип верстки B
                                echo '</ul>'; // закрываем тег списка
                            if ($type == 'C')
                                echo '</ol>';
                            if ($type == 'D')
                                echo '</table>';
 
                     ?>
                    
            </main>
            <footer>
                <ul>
                    <li><h3>Тип верстки: <?php echo $type; ?></h3></li>
                    <li><h3>Максимальное значение:<?php echo $max_value; ?></h3></li>
                    <li><h3>Минимальное значение:<?php echo $min_value; ?></h3></li>
                    <li><h3>Среднее арифметическое:<?php echo $sum/$cCount; ?></h3></li>
                    <li><h3>Сумма:<?php echo $sum ?></h3></li>
                </ul>
            </footer>
если я верно понял задачу
1
0 / 0 / 0
Регистрация: 07.03.2016
Сообщений: 7
07.03.2016, 21:54  [ТС]
Спасибо большое! Доработал код, используя ваш совет и все работает как по маслу)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.03.2016, 21:54
Помогаю со студенческими работами здесь

Макс и мин значения диагоналей матрицы. Вистраивание значений строк в порядке возростания
Найти максимальное и минимальное значения главной и побочной диагоналей и сравнить их. Найти среднее значение по строкам и разместить их...

Заменить все элементы массива, меньшие среднего арифметического, значением среднего арифметического
В одномерном массиве целых чисел заменить все элементы, меньшие среднего арифметического,значением среднего арифметического,округленного до...

Найти мин элемент каждой строки и макс элемент столбцов, строку с макс суммой, строку с макс элем.
Массив 10х10 N=10 1) Минимальный элемент каждой строки 2) Максимальный элемент каждого столбца 3) В какой строке максимальная...

Описать процедуру Minmax(A,B), записывающую в переменную A мин. из значений A и B, а в переменную B - макс.
Описать процедуру Minmax(A,B), записывающую в переменную A минимальное из значений A и B, а в переменную B - максимальное из этих значений.

Вывод среднего арифметического
как должна выглядеть 17 строчка? #include&quot;stdafx.h&quot; #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru