среда, 5 октября 2011 г.

умножение матриц (3Х3) [c, c++]

Задача:

Ввести две матрицы 3х3 и умножить их друг на друга

Код программы:


#include <stdio.h>
#include <conio.h>
#define N 3

void main()
{
 clrscr();
 int a[N][N];
 int b[N][N];
 int c[N][N];
 int i,j;
 int n,m;


// матрица 1

 printf("введите матрицу%ix%i\n",N,N);
 for (i=0; i<N; i++)
 {
  printf("элем %i-й строки:\n",i+1);
  for (j=0; j<N; j++)
  {
   scanf("%i", &a[i][j]);
  }
 }
 printf("\nПервая матрица\n");
 for(i=0; i<N; i++)
 {
  for(j=0; j<N; j++)
  {
   printf("%3i",a[i][j]);
  }
  printf("\n");
 }

// матрица 2

 printf("введите матрицу%ix%i\n",N,N);
 for (j=0; j<N; j++)
 {
  printf("элем %i-й строки:\n",j+1);
  for (i=0; i<N; i++)
  {
   scanf("%i", &b[j][i]);
  }
 }
 printf("\nВторая матрица\n");
 for(j=0; j<N; j++)
 {
  for(i=0; i<N; i++)
  {
   printf("%3i",b[j][i]);
  }
  printf("\n");
 }

// умножение матриц

 for (i=0; i<N; i++)
  for (j=0; j<N; j++)
   c[i][j]=0;

 printf("\nУмножение матриц\n");
 for(i=0;i<N; i++)
 {
  for(j=0; j<N; j++)
  {
   for(m=0; m<N; m++)
   {
    c[i][j]+=a[i][m]*b[m][j];
   }
  }
 }

 printf("\nИтоговая матрица\n");
 for(i=0; i<N; i++)
 {
  for(j=0; j<N; j++)
  {
   printf("%3i",c[i][j]);
  }
  printf("\n");
 }


getch();
}

Результат: