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

> Внимание!

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

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

> [Java] среднее геометрическое
сообщение
Сообщение #1


Новичок
*

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

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


Добрый День!!! smile.gif
помогите Пожалуйста написать метод, который будет в целочисленной матрице заменять все элементы средним геометрическим абсолютных значений их соседей.
Мой код, с добавлением "единичной" границы к матрице:
int SrGeom; 
int Product;
for(int i = 1; i < n+1; i++){
for(int j = 1;j < m+1; j++){
Product = Math.abs(unitmatrix[i-1][j]) * Math.abs(unitmatrix[i+1][j]) *
Math.abs(unitmatrix[i][j-1]) * Math.abs(unitmatrix[i][j+1]);
SrGeom = (int)Math.pow(Product, 0.25);
}
}
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
array[i][j] = SrGeom;
}
}
Помогите Пожалуйста переделать код, с подсчётом среднего геометрического через логарифмы или экспоненты и с правильной заменой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

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

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


Цитата
а так как мы умножаем, то по сути ничего не меняем и множителя будет 4...
А на самом деле их должно быть 2, а не 4 для угловых элементов, и 3 для тех, которые на границе. Понимаешь разницу? Смотри: вот тебе пример: матрица 5*5:
11 15 12 13 14
17 2 3 5 12
15 8 10 1 11
30 7 9 2 20
29 27 25 23 22

Меня интересуют, в частности, выделенные элементы. В твоем случае перемножили по 4 соседних, и произведение для элемента равного 11 получилось 1*1*15*17=255, а для второго, равного 15: 1*11*12*2=264. И у меня то же самое (15*17=255 и 11*12*2=264). Только в твоем случае и там и там 4 множителя, значит извлекать ты будешь корень четвертой степени, и получишь 3 и 4 соответственно, а я в первом случае извлеку квадратный корень из 255 (и получу 15), а во втором - кубический из 264 (и получу 6).

А поскольку изначально никакой "единичной границы" в матрице не было - то мой вариант ближе к истине: у 11 просто нет четырех соседей, есть всего 2. А у 15-ти есть только 3, а не 4 соседа...

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


Новичок
*

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

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


Цитата(IUnknown @ 3.06.2011 22:07) *

А на самом деле их должно быть 2, а не 4 для угловых элементов, и 3 для тех, которые на границе. Понимаешь разницу? Смотри: вот тебе пример: матрица 5*5:
11 15 12 13 14
17 2 3 5 12
15 8 10 1 11
30 7 9 2 20
29 27 25 23 22

Меня интересуют, в частности, выделенные элементы. В твоем случае перемножили по 4 соседних, и произведение для элемента равного 11 получилось 1*1*15*17=255, а для второго, равного 15: 1*11*12*2=264. И у меня то же самое (15*17=255 и 11*12*2=264). Только в твоем случае и там и там 4 множителя, значит извлекать ты будешь корень четвертой степени, и получишь 3 и 4 соответственно, а я в первом случае извлеку квадратный корень из 255 (и получу 15), а во втором - кубический из 264 (и получу 6).

А поскольку изначально никакой "единичной границы" в матрице не было - то мой вариант ближе к истине: у 11 просто нет четырех соседей, есть всего 2. А у 15-ти есть только 3, а не 4 соседа...

Спасибо Вам Большое!!! от души give_rose.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





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