Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2011, 15:13   #1
Parry
Новичок
Джуниор
 
Регистрация: 17.04.2011
Сообщений: 1
По умолчанию Создание библиотеки

Здравствуйте.
Есть задание, создать библиотеку (.lib) для работы с матрицами.
Отдельно все функции я написал, но есть проблема. Так как писал всё без указателей, и чтоб всё работало нужно объявлять конкретный размер матриц, при создании библиотеки нужно указывать размер. То есть какой размер в библиотеке задан таким и нужно будет пользоваться.

В указателях разбираюсь туго, а нужно переписать в божеский вид.

Вкратце, суть задачи: выделить все функции в модуль в нормальном виде.
ПС. Сильно не пинайте, 1 курс.


Код:
#include<stdio.h>
enum bool {false, true};  // добавляем булеву ф. тк в BC её не наблюдаеться
#include<alloc.h>
#include<conio.h>
#include<math.h>

#define N 5	// размер матриц

// объявляем массивы для работы
int a[N][N]={{4,4,4,4,4},{5,4,3,2,1},{1,2,3,4,5},{5,4,3,2,1},{1,2,3,4,5}};
int b[N][N]={{3,4,4,4,4},{5,3,3,2,1},{1,2,2,4,5},{5,4,3,1,1},{1,2,3,4,4}};
int c[N][N];

//ф. вывода матрицы на экран
show_matrix(int matrix[N][N])
{
 for(int i=0;i<N;i++)
 {
   for(int j=0;j<N;j++)
	 printf("%3.1i ",matrix[i][j]);
   printf("\n");
 }
 printf("\n");
}

//транспонирование
void Transponate(int matrix[N][N])
{
  int swp;
  for (int i=0;i<N;i++)
	for (int j=i+1;j<N;j++)
	{
	  swp=matrix[i][j];
	  matrix[i][j]=matrix[j][i];
	  matrix[j][i]=swp;
	}
}

//суммирование двух матриц
void sum(int a[N][N], int b[N][N], int c[N][N])
{
  for(int i=0;i<N;i++)
	for(int j=0;j<N;j++)
	  c[i][j]=a[i][j]+b[i][j];
}

//a-b=c
void min(int a[N][N], int b[N][N], int c[N][N])
{
	for(int i=0;i<N;i++)
		for(int j=0;j<N;j++)
			c[i][j]=a[i][j]-b[i][j];
}

//умножение
void mult(int a[N][N], int b[N][N], int c[N][N])
{
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<N;j++)
		{
		  c[i][j]=0;
		  for (int k=0;k<N;k++)
			c[i][j]+=a[i][k]*b[k][j];
		}
	}
}

// ----------------две ф. для нахождения определителя
int ex[N];	// it helps a lot

// проверяет вхождение v в ex
bool notInEx(int v, int l) {
	//
	for (int i = 0; i < l; i++) {
		if (v == ex[i]) {
			return false;
		}
	}
	return true;
}

// --  --
int det(int l,int M[N][N]) {
	//
	int r = 0;
	int s = 1;
	for (int j = 0; j < N; j++) {
		//
		if (notInEx(j, l)) {
			if (l == N - 1)
				return M[l][j];
			else {
				ex[l] = j;
				r = r + s * M[l][j] * det(l + 1,M);
				s = -s;
			}
		}
	}
	return r;
}
//--------------------------------------------


//ввод матрицы
void input(int matrix[N][N])
{
	for(int i=0; i<N; i++)
	{
			for(int j=0; j<N; j++)
			{
				printf("element[%i][%i]: ",i+1,j+1);
				scanf("%i",&matrix[i][j]);
			}
	}
}


void main()
{
	clrscr();
	printf("a = \n");
	show_matrix(a);
	printf("b = \n");
	show_matrix(b);
	printf("trans \n");
	Transponate(a);
	show_matrix(a);
	Transponate(a);
	printf("a+b \n");
	sum(a,b,c);
	show_matrix(c);
	printf("a*b \n");
	mult(a,b,c);
	show_matrix(c);
	printf("a-b \n");
	min(a,b,c);
	show_matrix(c);
	int matrix[N][N];
	printf("Input Matrix[%i][%i]: \n",N,N);
	input(matrix);
	printf("in matrix = \n");
	show_matrix(matrix);
	printf("det Matrix = %i \n",det(0,matrix));
	getch();

}
Parry вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XML создание библиотеки dampirik Общие вопросы .NET 0 21.11.2010 02:34
Создание библиотеки bigory Visual C++ 18 21.09.2010 01:17
Создание и вызов библиотеки dll DM_bite Помощь студентам 3 15.06.2010 12:47
Создание библиотеки *.LIB в С++ creator32 Помощь студентам 0 14.12.2009 20:26