矩阵合并

来源:互联网 发布:mac如何u盘安装win7 编辑:程序博客网 时间:2024/06/05 08:07

同学需要一个这样的程序,主要的难点就在于二维数组的动态初始化。分享下~

//matrix_merge.cpp#include<iostream>using namespace std;int main(){int n;int num_overlap;cout<<"Input the size of matrixs:"<<endl;cin>>n;int temp;//初始化矩阵1int **matrix_1;int i;int j;matrix_1 = (int**)(new int[n]);cout<<"Input the first matrix:"<<endl;for(i = 0; i < n; ++ i)matrix_1[i] = (int*)new int[n];for(i = 0; i < n; ++ i)for(j = 0; j < n; ++ j){cin>>temp;matrix_1[i][j] = temp;}//初始化矩阵2int **matrix_2;cout<<"Input the second matrix:"<<endl;matrix_2 = (int**)(new int[n]);for(i = 0; i < n; ++ i)matrix_2[i] = (int*)new int[n];for(i = 0; i < n; ++ i)for(j = 0; j < n; ++ j){cin>>temp;matrix_2[i][j] = temp;}cout<<"Input the number of overlapping:(must be litter than "<<n<<")"<<endl;cin>>num_overlap;while (num_overlap>n){cout<<"The num can't be bigger than "<<n<<"!\n"<<"Input again:"<<endl;cin>>num_overlap;}//初始化输出矩阵int **matrix;int lengh;lengh=n+n-num_overlap;matrix = (int**)(new int[lengh]);for(i = 0; i < lengh; ++ i)matrix[i] = (int*)new int[lengh];for(i = 0; i < lengh; ++ i)for(j = 0; j < lengh; ++ j)matrix[i][j] =0;//计算输出矩阵int add_overlap;//重叠的第一个位置add_overlap=n-num_overlap;for(i=add_overlap;i<n;i++)for(j=add_overlap;j<n;j++)matrix[i][j]=(matrix_1[i][j]+matrix_2[i-add_overlap][j-add_overlap]);//输出结果矩阵cout<<"The result matrix is:"<<endl;for(i = 0; i < lengh; ++ i){for(j = 0; j < lengh; ++ j)cout<<matrix[i][j]<<"  ";cout<<endl;}system("pause");//暂停一下而已return 0;}


0 0
原创粉丝点击