マトリックス積

1904 ワード

Description入力m×nの整数行列A、更に1つのnを入力する×mの整数行列B.計算C=A×B. Inputはmとn(mとnともに≦10)を先に入力し、もう1行後にmを入力する×nの整数行列Aを入力し、次にnを入力する×mの整数行列B.各列のデータはスペースで区切られ、各行のデータはリターンで区切られます.Output計算A×B→C、出力マトリクスC.Sample Input 2 3 1 2 3 2 4 6 1 2 3 4 5 6 Sample Output 22 28 44 56
方法1
#include 
#include 

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	int m,n;
	while(scanf("%d %d",&n,&m)!=EOF&&n<=10&&m<=10) 
	{
		int a[11][11];
		int b[11][11];
		int c[11][11];
		int i,j;
		
		for(i=0;i<=10;i++){
	
			for(j=0;j<=10;j++){
		
				a[i][j]=0;
				b[i][j]=0;
				c[i][j]=0;
			}						
		}
		
		for(i=0;i<=n-1;i++){
	
			for(j=0;j<=m-1;j++){
			
				scanf("%d",&a[i][j]);
					
			}
	
		}
		
		for(i=0;i<=m-1;i++){
	
			for(j=0;j<=n-1;j++){
			
				scanf("%d",&b[i][j]);
					
			}
	
		}
		
		int k;
		
//		
//		for(i=0;i<=n-1;i++){
//	
//			for(j=0;j<=m-1;j++){
//				c[i][j]=c[i][j]+b[j][i]*a[i][j];
//					
//			}
//	
//		}
//	
		
		for (i = 0; i

方法2
#include  
#include  
using namespace std;
 
#define X 3  
#define Y 2  
#define Z 4  
int main()
{
	int i, j, k;
	int a[X][Y], b[Y][Z], c[X][Z];
 
	for (i = 0; i < X; i++)     //    a,3 2   
		for (j = 0; j < Y; j++)
			scanf_s("%d", &a[i][j]);
 
	for (i = 0; i < Y; i++)     //    b,2 4   
		for (j = 0; j < Z; j++)
			scanf_s("%d", &b[i][j]);
 
	for (i = 0; i < X; i++)     //     c,3 4   
		for (j = 0; j < Z; j++)
			c[i][j] = 0;
 
	for (i = 0; i