Đâ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]