Найти в массиве элемент, наиболее близкий к среднему арифметическому суммы его элементов, Помогите найти ошибку |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Найти в массиве элемент, наиболее близкий к среднему арифметическому суммы его элементов, Помогите найти ошибку |
Shmaniche |
27.05.2012 11:01
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: 0 |
1 элем: 1 2 элем: 5 3 элем: 4 4 элем: 3 5 элем: 3 Ср. Ариф: 3.200 Наиболее близкий: 1.000. Тоже неверно, думаю наиболее близкий 3.000, либо может быть и 4.000. 9 8 7 6 5 Ср. Ариф: 7.000 Наиболее близкий: 9.000. Почему 9, когда наиболее близкое значение еще м.б. 8.000. Как можно исправить? PS: В условии что имеется ввиду под наиболее близким элементом? В меньшую сторону от ср. арифм. или в большую? Сообщение отредактировано: Shmaniche - 27.05.2012 11:03 |
Krjuger |
27.05.2012 11:51
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Это вы у нас спрашиваете???)Ваша же задача.
По логике вещей, если специально не обговорены дополнительные условия,то более близкое число принято вычислять,как модуль разности текущего и среднего. razn2 = mas[i]-sr_arif; А ничего что у вас i используется как счетчик циклов? for (i = 1 ; i<10 ; i++) Почему 10,если у вас в массиве всего 5 элементов. В общем вот тут
Все неверно. |
Shmaniche |
27.05.2012 12:43
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: 0 |
razn2 = mas[i]-sr_arif; А ничего что у вас i используется как счетчик циклов? for (i = 1 ; i<10 ; i++) Почему 10,если у вас в массиве всего 5 элементов. Потому что до этого вводил 10 элементов, потом заменил на 5, а в счетчике не убрал. Цитата Все неверно. Не распишете как верно? Уже мозг сломал. Сообщение отредактировано: Shmaniche - 27.05.2012 12:44 |
Krjuger |
27.05.2012 17:01
Сообщение
#4
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Расписывать не стану,но обьясню,что происходит и почему это так происходит.
У вас i глобальная переменная,существующая вне циклов, соответственно, после окончания цикла ,она будет хранить значение, равное длинне цикла,в вашем случае 5. В этом куске
Вы находите две разности, первая, это разность между первым элементом и средним.Вторая, это разность между пятым элементом и средним.И вы из сравниваете.Ваши тесты построены так,что первая разница меньше второй.Вы в j записываете ноль, переприсваиваете,и что же вы сравниваете. razn1 = razn2; } // разницу1 приравниваем к разнице2.Во-первых,наоборот, вы разницу 2 присваиваете разнице 1.А во вторых,ваша разница 2 никак не меняется,поэтому у вас выходит, что и в разнице 1 и в разнице 2 храниться одно и тоже число.Проверку условия оно конешно же не проходит, в результате остальные 9 циклов вообще ничего не делают и в качестве результата у вас всегда 0. Могу дать подсказку.
Вот так оно уже будет менять разницу 2,но все равно ответ будет не всегда верным. Сообщение отредактировано: Krjuger - 27.05.2012 17:03 |
Shmaniche |
27.05.2012 17:21
Сообщение
#5
|
Пионер Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: 0 |
Krjuger
Спасибо, но при вводе чисел 5, 4, 3, 2, 1 выводится, что ближ. знач. к ср. арифм. - это 3.000, а не 2 или 4. Если честно я так до конца и не понял, что значит это близкое к ср. арифм. Надо найти близкой в меньшую или в большую сторону? |
Krjuger |
27.05.2012 18:15
Сообщение
#6
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Я же сказал, по модулю. Если среднее 3, а есть числа 4 и 2 то оба этих числа ближайшие,а если 3,2 среднее, то тогда уже 4 ближайшее,если среднее 2,8 то 2 ближайшее.
А ты что хотел сумма твоих числек 15, среднее арифметическое 3, при этом у тебя есть число 3, ясное дело что расстояние от 3 до 3 будет ближайшим, потому что оно равно нулю!!!!!! |
Текстовая версия | 30.09.2024 20:36 |