IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> [Java] Среднестатистический и уникальный элементы
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Помогите Пожалуйста доделать задание:
Назовем среднестатистическим такой элемент массива, для которого модуль разности его
значения и среднего арифметического значения элементов массива минимален.
Аналогично, назовем уникальным элемент для которого модуль этой разности
максимален. Найдите в массиве среднестатистический и уникальный элементы и их
индексы.
Мой код:
 int sum = 0;
int index1 = 0;
int index2 = 0;
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
double srAr = 0;
for (int i = 0; i < n; i++){
sum =+a[i];
}
srAr = sum / n;
for (int i = 0; i < n; i++){
if (Math.abs(a[i] - srAr) < Math.abs(a[index2] - srAr)) {index2 = i;}
if (Math.abs(a[i] - srAr) > Math.abs(a[index1] - srAr)) {index1 = i;}
}

Помогите Пожалуйста учесть вот это условие:
В случае, если в массиве окажется два или более среднестатистических (или уникальных) элемента,
выведите меньший из них, а в случае равенства элементов между собой - укажите наименьший индекс.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
В случае, если в массиве окажется два или более среднестатистических (или уникальных) элемента,
выведите меньший из них
Они не могут быть разными по значению, только одинаковыми. Если они будут разными - то один из элементов не будет среднестатистическим, или уникальным. Потому что модуль его разности со средним арифметическим не будет минимальным или максимальным соответственно. Так что тебе достаточно проходить по массиву в порядке возрастания индексов и запоминать только индекс первого элемента с минимальной/максимальной разностью:

             int indexMin = 0; 
int indexMax = 0;
double min = Double.MAX_VALUE;
double max = Double.MIN_VALUE;
double srAr = 0.0, currMin, currMax;

for (int i = 0; i < n; i++) {
sum += a[i];
}
srAr = sum / n;
System.out.println("Average = " + srAr);
for (int i = 0; i < n; i++) {
if((currMin = Math.abs(a[i] - srAr)) < min) {
indexMin = i; min = currMin;
}
if((currMax = Math.abs(a[i] - srAr)) > max) {
indexMax = i; max = currMax;
}
}
System.out.println("Averaged : a[" + indexMin + "] = " + a[indexMin]);
System.out.println("Unique : a[" + indexMax + "] = " + a[indexMax]);

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Цитата(IUnknown @ 7.06.2011 14:22) *

Они не могут быть разными по значению, только одинаковыми. Если они будут разными - то один из элементов не будет среднестатистическим, или уникальным. Потому что модуль его разности со средним арифметическим не будет минимальным или максимальным соответственно. Так что тебе достаточно проходить по массиву в порядке возрастания индексов и запоминать только индекс первого элемента с минимальной/максимальной разностью:

             int indexMin = 0; 
int indexMax = 0;
double min = Double.MAX_VALUE;
double max = Double.MIN_VALUE;
double srAr = 0.0, currMin, currMax;

for (int i = 0; i < n; i++) {
sum += a[i];
}
srAr = sum / n;
System.out.println("Average = " + srAr);
for (int i = 0; i < n; i++) {
if((currMin = Math.abs(a[i] - srAr)) < min) {
indexMin = i; min = currMin;
}
if((currMax = Math.abs(a[i] - srAr)) > max) {
indexMax = i; max = currMax;
}
}
System.out.println("Averaged : a[" + indexMin + "] = " + a[indexMin]);
System.out.println("Unique : a[" + indexMax + "] = " + a[indexMax]);




Пример входного файла
7
4 2 8 1 3 1 8

Пример выходного файла
1 4
3 8

У меня почему-то выводит неправильные результаты.. помогите Пожалуйста!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 15.05.2024 23:45
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name