|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Квадратная матрица - среднее геометрическое положительных элементов |
|
C/C++ - Квадратная матрица - среднее геометрическое положительных элементов
|
Новый участник Сообщения: 2 |
Профиль | Отправить PM | Цитировать Доброго времени суток!
Прошу, как говорится, помощи В университете задали несколько задач, а у меня совсем нет времени - как раз нагрузили работой, и так ничего не успеваю. Плюс дома нет билдера, и где его найти в 11 часов вечера, с моим инетом 64кб - хз. У кого время есть, черкните код, буду очень благодарен. Суть задачи: Для квадратной матрицы от 4х4 до 10х10 найти среднее геометрическое положительных элементов первой четверти, т.е. элементов, расположенных в верхней половине матрицы между диагоналями. Кто откликнется - заранее спасибо Желательно до завтра, максимум - до четверга.. |
|
Отправлено: 22:36, 23-12-2008 |
Ветеран Сообщения: 1404
|
Профиль | Отправить PM | Цитировать Элементы первой четверти, то есть элементы между главной и побочной диагональю?
n - количество элементов первой четверти Среднее геометрическое это произведение корней n степени из этих элементов Если сначала все перемножать, то понадобится длинная арифметика. Т.к результат умножения в long не влезет. Так что я сразу вычисляю корни. Как-то так. Корректность не гарантирую. #include <stdio.h> #include <windows.h> #include <time.h> #include <math.h> #define XYZZ 10 // размерность квадратной матрицы void print_matrix(int **m); void random_matrix(int **m); double geom(int **m, int sz); void main() { double mn; int size=XYZZ; int** matrix; matrix = new int*[size]; for(int k=0;k<size;k++) { matrix[k]=new int[size]; } random_matrix(matrix); print_matrix(matrix); mn=geom(matrix,XYZZ); printf("%f\n",mn); } void print_matrix(int **m) { int i,j; for (i=0 ; i<XYZZ; i++) { for (j=0; j<XYZZ;j++) { printf("%d ", m[i][j]); } printf("\n"); } } void random_matrix(int **m) { int i,j; srand (time(NULL)); for (i=0 ; i<XYZZ; i++) for (j=0; j<XYZZ;j++) m[i][j]=rand()%10; } double geom(int **m, int sz) { double result; int gap_x,gap_y,a,b,i,sk; //------------Определение корень какой степени нужно вычислить sk=0; gap_x=1; gap_y=XYZZ-2; for(i=0;i<XYZZ && gap_x<=gap_y;i++,gap_x++,gap_y--) { for(a=gap_x,b=gap_y;a<b;a++,b--) { if(m[i][a]>0) sk++; if(m[i][b]>0) sk++; } if(a==b) sk++; } //------------Конец определения корень какой степени нужно вычислить //------------Вычисление среднего геометрического result=1; gap_x=1; gap_y=XYZZ-2; for(i=0;i<XYZZ && gap_x<=gap_y;i++,gap_x++,gap_y--) { for(a=gap_x,b=gap_y;a<b;a++,b--) { if(m[i][a]>0) { result*=pow(m[i][a],1.0/sk); } if(m[i][b]>0) { result*=pow(m[i][b],1.0/sk); } } if(a==b) result*=pow(m[i][a],1.0/sk); } //------------Конец вычисления среднего геометрического return(result); } |
------- Последний раз редактировалось mrcnn, 25-12-2008 в 09:44. Отправлено: 09:28, 25-12-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Mrcnn, спасибо!
Я, правда, на паре умудрился сделать, но все равно Щас посмотрел код, приблизительно так и решал. Со средним геометрическим правда пришлось повозиться, долго не мог разобраться у какой из переменных тип другой поставить. Еще раз спасибо за ответ |
Отправлено: 21:13, 27-12-2008 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Матрица ноутбука | Vlademort | Ноутбуки | 2 | 26-10-2009 12:03 | |
Тусклая матрица в ноутбуке Sony Vaio VGN-S480P | Wha-ha-ha | Ноутбуки | 6 | 19-08-2009 18:09 | |
матрица - Windows | belyinosorog | Ноутбуки | 5 | 05-05-2009 08:03 | |
матрица - вертикальные , пунктирные полосы | HukutaMail | Ноутбуки | 5 | 22-04-2009 19:27 | |
Rowerbooke512wh матрица | Pasha_11 | Ноутбуки | 0 | 13-12-2008 11:48 |
|