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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2012, 00:57   #1
mary1010
Пользователь
 
Регистрация: 16.09.2012
Сообщений: 14
Восклицание произведение матриц

Очень нужна Ваша помощь!

даны 2 матрицы, найти их произведение))все кажется до смешного просто....но операция умножения отказывается работать...
Код:
#include <iostream>

#include <vcl>
#include <stdio.h>
#include <clocale>
#include <conio.h>
#include <windows.h>

const int MAX_N=100, MAX_M=100;

void multiplication(int*,int*,int,int,int);//Ïåðåìíîæàåò ìàòðèöû.
void prnt_arr(int*,int,int);//Âûâîäèò ýëåìåíòû ìàòðèöû íà ýêðàí.
void read_arr(int*,int,int);//Ñ÷èòûâàåò ýëåìåíòû ìàòðèöû ñ ýêðàíà.
void format(int*,char*,int,int);//Çàïèñûâàåò óïðàâëÿþùóþ ïîñëåäîâàòåëüíîñòü äëÿ ôóíêöèè printf() â ìàññèâ ñèìâîëîâ.

void main()
{
	int A[MAX_N*MAX_M],B[MAX_N*MAX_M],n,m,k,t;
	bool b,c,d;

	{

		printf("enter number of lines and columns of the first matrix");
		scanf("%d %d",&n,&m);
		printf("enter number of lines and columns of the second matrix");
		scanf("%d %d",&t,&k);
		if(b=(n<=0)||(m<=0)||(k<=0)||(t<=0))
			printf("error of input!the number of columns and lines has to be more than\n");
		if(c=(t!=m))
			printf("error of input! the number of columns of the first matrix has to be equal to number of lines of the second matrix\n");
		if(d=(n>MAX_N)||(m>MAX_M)||(t>MAX_N)||(k>MAX_M))
			printf(" error of input! the number of lines of a matrix shouldn't exceed %d, and columns %d.",MAX_N,MAX_M);
		if(b=(b||c||d))
			getch();
	}while(b);
	printf("enter coefficients of the first matrix\n");
	read_arr(A,n,m);
	printf("enter coefficients of the second matrix\n");
	read_arr(B,m,k);
	multiplication(A,B,n,m,k);
	printf("required matrix:\n");
	prnt_arr(B,n,k);
}

void read_arr(int *A,int n,int m)
{
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
			scanf("%d",&A[i*m+j]);
	}
}

void prnt_arr(int *A,int n,int m)
{
	char C[]="%0d ";
	format(A,C,n,m);
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
			printf(C,A[i*m+j]);
		printf("\n");
	}
}

void format(int *A,char *C,int n,int m)
{
	int max=A[0],i;
	for(i=1;i<n*m;i++)
		if(A[i]>max)
			max=A[i];
	for(i=0;max>0;i++)
		max/=10;
	C[1]=48+i;
}

void multiplication(int *A, int *B, int n, int m, int p)
{
	int *C=new int[n*p];
	for(int i=0;i<n;i++)
		for(int j=0;j<p;j++)
		{
			C[i*p+j]=0;
			for (int k=0;k<m;k++) 
				C[i*p+j]+=A[i*m+k]*B[k*p+j];
		}
	n*=sizeof(int)*p;


        getch();

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Произведение матриц.. (Pascal) Groslerg Помощь студентам 0 13.11.2012 18:39
Turbo Pascal Произведение матриц deimond Помощь студентам 5 24.05.2011 10:46
Произведение разреженных матриц MafoR Помощь студентам 1 24.04.2010 18:37
произведение матриц Lampard Помощь студентам 3 30.03.2009 19:00
Произведение двух матриц 010 Паскаль, Turbo Pascal, PascalABC.NET 5 03.06.2008 11:33