Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Квадратная матрица - среднее геометрическое положительных элементов

Ответить
Настройки темы
C/C++ - Квадратная матрица - среднее геометрическое положительных элементов

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток!

Прошу, как говорится, помощи

В университете задали несколько задач, а у меня совсем нет времени - как раз нагрузили работой, и так ничего не успеваю. Плюс дома нет билдера, и где его найти в 11 часов вечера, с моим инетом 64кб - хз.
У кого время есть, черкните код, буду очень благодарен.

Суть задачи:
Для квадратной матрицы от 4х4 до 10х10 найти среднее геометрическое положительных элементов первой четверти, т.е. элементов, расположенных в верхней половине матрицы между диагоналями.

Кто откликнется - заранее спасибо Желательно до завтра, максимум - до четверга..

Отправлено: 22:36, 23-12-2008

 

Ветеран


Сообщения: 1397
Благодарности: 131

Профиль | Отправить 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);	
}

-------
Ehhh.. what's up, doc?..


Последний раз редактировалось mrcnn, 25-12-2008 в 09:44.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:28, 25-12-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Mrcnn, спасибо!
Я, правда, на паре умудрился сделать, но все равно
Щас посмотрел код, приблизительно так и решал. Со средним геометрическим правда пришлось повозиться, долго не мог разобраться у какой из переменных тип другой поставить.
Еще раз спасибо за ответ

Отправлено: 21:13, 27-12-2008 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Квадратная матрица - среднее геометрическое положительных элементов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Матрица ноутбука 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




 
Переход