кодесурса
«C

Упражнения на С: умножение двух матриц

script1adsense2code
script1adsense3code

C Рекурсия: упражнение 15 с решением

Напишите программу на C для умножения двух матриц с использованием рекурсии.

Иллюстрированная презентация:

«C

Пример решения:

Код C:

#include<stdio.h>
#define MAX 10
void multiplyMatrix(int [MAX][MAX],int [MAX][MAX]);
int rone,cone,rtwo,ctwo;
int crm[MAX][MAX];
int main()
{
   
    int arm[MAX][MAX],brm[MAX][MAX],i,j,k;
	
	   printf("\n\n Multiplication of two Matrices :\n");
       printf("----------------------------------\n");  
    printf(" Input number of rows for the first matrix : ");
    scanf("%d",&rone);
    printf(" Input number of columns for the first matrix : ");
    scanf("%d",&cone);	
	
    printf(" Input number of rows for the second matrix : ");
    scanf("%d",&rtwo);
    printf(" Input number of columns for the second matrix : ");
    scanf("%d",&ctwo);	
    if(cone!=rtwo)
    {
         printf("\n Check col. of first and row of second matrix.");
         printf("\n They are different. Try again.\n");
    }
  else
  {
      printf("\n Input elements in the first matrix :\n");
      for(i=0;i<rone;i++){
      for(j=0;j<cone;j++){
	  	   printf(" element - [%d],[%d] : ",i,j);
           scanf("%d",&arm[i][j]);}}
      printf(" Input elements in the second matrix :\n");
      for(i=0;i<rtwo;i++){
      for(j=0;j<ctwo;j++){
		   printf(" element - [%d],[%d] : ",i,j);
           scanf("%d",&brm[i][j]);}}
      printf("\n Here is the elements of First matrix : \n");
      for(i=0;i<rone;i++)
      {
      printf("\n");
      for(j=0;j<cone;j++)
      {
           printf(" %d\t",arm[i][j]);
      }
      }
      printf("\n Here is the elements of Second matrix : \n");
      for(i=0;i<rtwo;i++)
      {
      printf("\n");
      for(j=0;j<ctwo;j++)
      {
           printf(" %d\t",brm[i][j]);
      }
      }
      multiplyMatrix(arm,brm);
  }
  printf("\n The multiplication of two matrix is : \n");
  for(i=0;i<rone;i++)
  {
      printf("\n");
      for(j=0;j<ctwo;j++)
      {
           printf(" %d\t",crm[i][j]);
      }
  }
  printf("\n\n");
  return 0;
   
}
void multiplyMatrix(int arm[MAX][MAX],int brm[MAX][MAX])
{
    static int sum,i=0,j=0,k=0;
    if(i<rone)
    { //row of first matrix
    if(j<ctwo)
    {  //column of second matrix
         if(k<cone)
         {
             sum=sum+arm[i][k]*brm[k][j];
             k++;
             multiplyMatrix(arm,brm);
         }
         crm[i][j]=sum;
             sum=0;
             k=0;
             j++;
             multiplyMatrix(arm,brm);
    }
    j=0;
    i++;
    multiplyMatrix(arm,brm);
    }
}

Пример вывода:

 Умножение двух матриц:                                                                             
----------------------------------                                                                            
 Введите число строк для первой матрицы: 2                                                                
 Введите количество столбцов для первой матрицы: 1                                                             
 Введите количество строк для второй матрицы: 1                                                               
 Введите число столбцов для второй матрицы: 2                                                            
                                                                                                              
 Входные элементы в первой матрице:                                                                         
 элемент - [0], [0]: 1                                                                                        
 элемент - [1], [0]: 2                                                                                        
 Входные элементы во второй матрице:                                                                        
 элемент - [0], [0]: 3                                                                                        
 элемент - [0], [1]: 4                                                                                        
                                                                                                              
 Вот элементы первой матрицы:                                                                       
                                                                                                              
 1                                                                                                            
 2                                                                                                            
 Вот элементы Второй матрицы:  
                                                                                                               
 3 4                                                                                                    
 Умножение двух матриц:                                                                        
                                                                                                              
 3 4                                                                                                    
 6 8                 

Блок - схема:

«Блок-схема:
«Блок-схема:

Редактор кода программирования C:

Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.

Previous: написать программу на C для печати четных или нечетных чисел в заданном диапазоне с использованием рекурсии.
Далее: написать программу на C, чтобы проверить, является ли данная строка палиндромом или нет.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code