[Java] Среднестатистический и уникальный элементы |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
[Java] Среднестатистический и уникальный элементы |
Shashlyk |
7.06.2011 7:12
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: 0 |
Помогите Пожалуйста доделать задание:
Назовем среднестатистическим такой элемент массива, для которого модуль разности его значения и среднего арифметического значения элементов массива минимален. Аналогично, назовем уникальным элемент для которого модуль этой разности максимален. Найдите в массиве среднестатистический и уникальный элементы и их индексы. Мой код: int sum = 0; Помогите Пожалуйста учесть вот это условие: В случае, если в массиве окажется два или более среднестатистических (или уникальных) элемента, выведите меньший из них, а в случае равенства элементов между собой - укажите наименьший индекс. |
IUnknown |
7.06.2011 13:22
Сообщение
#2
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Цитата В случае, если в массиве окажется два или более среднестатистических (или уникальных) элемента, Они не могут быть разными по значению, только одинаковыми. Если они будут разными - то один из элементов не будет среднестатистическим, или уникальным. Потому что модуль его разности со средним арифметическим не будет минимальным или максимальным соответственно. Так что тебе достаточно проходить по массиву в порядке возрастания индексов и запоминать только индекс первого элемента с минимальной/максимальной разностью:выведите меньший из них int indexMin = 0; |
andriano |
7.06.2011 21:11
Сообщение
#3
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Отчего же?
Пример: 1,2,3,4 Среднее арифметическое 2.5. Среднестатистические: 2 и 3. Уникальные 1 и 4. |
Shashlyk |
8.06.2011 18:07
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: 0 |
Они не могут быть разными по значению, только одинаковыми. Если они будут разными - то один из элементов не будет среднестатистическим, или уникальным. Потому что модуль его разности со средним арифметическим не будет минимальным или максимальным соответственно. Так что тебе достаточно проходить по массиву в порядке возрастания индексов и запоминать только индекс первого элемента с минимальной/максимальной разностью: int indexMin = 0; Пример входного файла У меня почему-то выводит неправильные результаты.. помогите Пожалуйста! |
IUnknown |
8.06.2011 18:24
Сообщение
#5
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Цитата У меня почему-то выводит неправильные результаты Это не ко мне вопрос. Мой код выдает вот такие результаты (даже без исправления, внесенного мной позже, все равно для этих данных выводится правильный результат) :Цитата Averaged : a[0] = 4 на твоих данных. Вопрос, ЧЕМ они неправильные - остается открытым. КАКИЕ - правильные по твоему? Среднее арифметическое = 3.857142857142857, с учетом этого минимальный модуль разности:Unique : a[2] = 8 0.1428571428571428 (для нулевого элемента), а максимальный = 4.142857142857142 - для элементов с индексами 2 и 6. Значения одинаковые, значит, берем минимальный индекс, то есть, 2. Что не так? А то, что ты перекроил код по-своему - вот и ищи ошибку у себя. |
Shashlyk |
8.06.2011 18:52
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: 0 |
Это не ко мне вопрос. Мой код выдает вот такие результаты (даже без исправления, внесенного мной позже, все равно для этих данных выводится правильный результат) : на твоих данных. Вопрос, ЧЕМ они неправильные - остается открытым. КАКИЕ - правильные по твоему? Среднее арифметическое = 3.857142857142857, с учетом этого минимальный модуль разности: 0.1428571428571428 (для нулевого элемента), а максимальный = 4.142857142857142 - для элементов с индексами 2 и 6. Значения одинаковые, значит, берем минимальный индекс, то есть, 2. Что не так? А то, что ты перекроил код по-своему - вот и ищи ошибку у себя. void Zadacha () throws FileNotFoundException{ Выводит: 4 3 Помогите Пожалуйста исправить |
IUnknown |
8.06.2011 20:20
Сообщение
#7
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
У меня почему-то выводит неправильные результаты.. помогите Пожалуйста! Потому что ты работаешь со средним арифметические как с ЦЕЛЫМ числом, а надо - как с вещественным. Или сразу описывай sum вещественным:double sum=0.0; , и дальше - по тексту, или srAr = (double)sum / n; ... Это тебе не Паскаль, где результат деления - всегда вещественное число. Здесь если делишь целое на целое - то и в результате получаешь целое... А вообще, в код надо добавить еще кое-что, чтобы оно работало совсем по условию (см. пост andriano): double sum = 0; |
Текстовая версия | 28.04.2024 16:17 |