Cộng hai 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.
Cộng hai ma trận trong lập trình C/C++
Điều kiện để cộng 2 ma trận là 2 ma trận phải có cùng kích thước, tức là số hàng và số cột của hai ma trận phải bằng nhau.
Gọi mảng 2 chiều A là ma trận A, mảng 2 chiều B là ma trận B, để cộng 2 ma trận này ta chỉ việc cộng các phần tử có cùng vị trí với nhau thành 1 ma trận.
Ta sẽ 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]); } } } //Hàm xuất ma trận 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"); } } //Hàm cộng 2 ma trận int congMaTran(int a[][100], int b[][100], int n, int m){ int c[100][100]; int i, j; for(i = 0;i<n;i++){ for(j = 0;j<m;j++){ c[i][j] = a[i][j] + b[i][j]; } } printf("\nCONG 2 MA TRAN A B\n"); output(n,m,c); } 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(n, m, b); printf("\n------MA TRAN A-----\n"); output(n,m,a); printf("\n------MA TRAN B-----\n"); output(n,m,b); if(n == n1 && m == m1){ congMaTran(a,b,n,m); }else{ printf("So hang va so cot 2 ma tran khong bang nhau, khong the cong"); } return 0; }
Chuyển thành chương trình trên C++
#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 congMaTran(int a[][100], int b[][100], int n, int m){ int c[100][100]; int i, j; for(i = 0;i<n;i++){ for(j = 0;j<m;j++){ c[i][j] = a[i][j] + b[i][j]; } } cout<<"\nCONG 2 MA TRAN A B\n"; output(n,m,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(n, m, b); cout<<"\n------MA TRAN A-----\n"; output(n,m,a); cout<<"\n------MA TRAN B-----\n"; output(n,m,b); if(n == n1 && m == m1){ congMaTran(a,b,n,m); }else{ cout<<"So hang va so cot 2 ma tran khong bang nhau, khong the cong"; } return 0; }
Bạn chạy thử chương trình nhé!
[Xem tất cả bài viết chủ đề C/C++ tại đây]