Thứ Ba, 26 Tháng Mười Một 2024
Trang chủLập trìnhLập trình C/C++Tính tích 2 ma trận(Nhân 2 ma trận) trong lập trình C/C++

Tính tích 2 ma trận(Nhân 2 ma trận) trong lập trình C/C++

Đây là một dạng bài tập đơn giản và tương đối cơ bản giúp cho việc luyện tập code lập trình C/C++ mang lại hiệu quả rất tốt.

DANH SÁCH BÀI VIẾT
Bài tập Ma trận trong lập trình hướng đối tượng OOP C/C++
Tìm phần tử max min trong mảng lập trình C/C++
Tính tích 2 ma trận(Nhân 2 ma trận) trong lập trình C/C++
Cộng hai ma trận trong lập trình C/C++
Sắp xếp mảng 2 chiều trong lập trình C/C++

Tính tích 2 ma trận(Nhân 2 ma trận trận) trong lập trình C/C++

Phép nhân hai ma trận chỉ thực hiện được khi số lượng cột trong ma trận thứ nhất phải bằng số lượng hàng trong ma trận thứ hai. Ma trận kết quả, được gọi là tích ma trận, có số lượng hàng của ma trận đầu tiên và số cột của ma trận thứ hai.

Nếu ma trận A có kích thước (m×n) và ma trận B có kích thước (n×p), thì ma trận tích C=A×B có kích thước (m×p), phần tử đứng ở hàng thứ i, cột thứ j xác định bởi công thức:

Tính tích 2 ma trận(Nhân 2 ma trận trận) trong lập trình C/C++

Vậy đã có công thức, ta viết chương trình C như sau:

#include <stdio.h>
//Hàm nhập ma trân
void intput(int n, int m, int a[][100]){
	int i,j;
	for(i=0;i<n;i++){
		for(j=0;j<m;j++) {
			scanf("%d", &a[i][j]);
		}
	}
}
//Ham xuat ma tran
void output(int n, int m, int a[][100]){
	int i,j;
	for(i=0;i<n;i++){
		for(j=0;j<m;j++) {
			printf("%d  ",a[i][j]);
		}
	printf("\n");
	}
}


//Vi so cot va so hang cua ma tran A, B bang nhau nen ta khong cần truyền vào biến n1
int tichMaTran(int a[][100], int b[][100], int m, int n, int m1){
	int	c[100][100];
	int i, j, k;
	 for(i=0;i<n;i++) 
        for(j=0;j<m1;j++) {
         int tt=0;
           for(k=0;k<m;k++)
               {
            	  tt = tt + (a[i][k] * b[k][j]); //Công thức tính C[i][j]
                }
            c[i][j] = tt;
    }
	
	printf("\nTICH 2 MA TRAN A B\n");
	output(n,m1,c); //Ma trận tích có kích thước bằng số hàng của A và số cột cua B
}

int main()
{
	int n, m;
	printf("MA TRAN A:\nNhap so hang, so cot lan luot: ");
	scanf("%d%d", &n, &m);	
	int a[100][100];
	printf("\n------Nhap phan tu ma tran A-----\n");
	intput(n, m, a);
	
	int n1, m1;
	printf("MA TRAN B:\nNhap so hang, so cot lan luot: ");
	scanf("%d%d", &n1, &m1);	
	int b[100][100];
	printf("\n------Nhap phan tu ma tran B-----\n");
	intput(n1, m1, b);

	
	printf("\n------MA TRAN A-----\n");
	output(n,m,a);
	printf("\n------MA TRAN B-----\n");
	output(n,m,b);
	
	if(m == n1){
		tichMaTran(a,b,m,n,m1);
	}else{
		printf("So cot Ma tran A khac so hang ma tran B, khong the nhan 2 ma tran nay");
	}
	return 0;
}

Chương trình trên C++

//Giair thích xem trên chương trình C bên trên
#include <iostream>
using namespace std;

void intput(int n, int m, int a[][100]){
	int i,j;
	for(i=0;i<n;i++){
		for(j=0;j<m;j++) {
			cin>>a[i][j];
		}
	}
}
void output(int n, int m, int a[][100]){
	int i,j;
	for(i=0;i<n;i++){
		for(j=0;j<m;j++) {
		cout<<a[i][j]<<"  ";
		}
		cout<<"\n";
	}
}

int tichMaTran(int a[][100], int b[][100], int m, int n, int m1){
	int	c[100][100];
	int i, j, k;
	 for(i=0;i<n;i++) 
        for(j=0;j<m1;j++) {
         int tt=0;
           for(k=0;k<m;k++)
               {
            	 tt = tt + (a[i][k] * b[k][j]);
                }
            c[i][j] = tt;
    }
	
	cout<<"\nTICH 2 MA TRAN A B\n";
	output(n,m1,c);
}

int main()
{
	int n, m;
	cout<<"MA TRAN A:\nNhap so hang, so cot lan luot: ";
	cin>>n>>m;
	int a[100][100];
	cout<<"\n------Nhap phan tu ma tran A-----\n";
	intput(n, m, a);
	
	int n1, m1;
	cout<<"MA TRAN B:\nNhap so hang, so cot lan luot: ";
	cin>>n1>>m1;
	int b[100][100];
	cout<<"\n------Nhap phan tu ma tran B-----\n";
	intput(n1, m1, b);

	
	cout<<"\n------MA TRAN A-----\n";
	output(n,m,a);
	cout<<"\n------MA TRAN B-----\n";
	output(n,m,b);
	
	if(m == n1){
		tichMaTran(a,b,m,n,m1);
	}else{
		cout<<"So cot Ma tran A khac so hang ma tran B, khong the nhan 2 ma tran nay";
	}
	return 0;
}

Chạy thử chương trình để xem kết quả nhé!

[Xem tất cả bài viết chủ đề C/C++ tại đây]

3.2 6 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN

3 BÌNH LUẬN

Đăng ký nhận thông báo
Thông báo email khi
guest
3 Bình luận
Mới nhất
Cũ nhất Được bình chọn nhiều nhất
Không thể gửi email
Phản hồi nội tuyến
minh
minh
1 năm trước

à e chạy đc rồi.. em để tichMaTran vào hàm main

minh
minh
1 năm trước

e chạy trên visual nó báo hàm tichMaTran phai trả về 1
giá trị, còn chạy trên devC thì bình thường.

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?

Dịch vụ code thuê

TUICOCACH.COM NHẬN ĐẶT TEXTLINK, BANNER, GP
3
0
Giáo sư! có thể ném gạch bên dưới nhé!x