C++程序设计初级题目
1、实验内容或题目编写一个程序,计算一个M*N阶矩阵和一个N*M阶矩阵相乘,并输出结果矩阵,同时求出矩阵元素最大值、最小质及所有元素平均值。2、实验目的与要求⑴进一步熟悉...
1、 实验内容或题目
编写一个程序,计算一个M*N阶矩阵和一个N*M阶矩阵相乘,并输出结果矩阵,同时求出矩阵元素最大值、最小质及所有元素平均值。
2、实验目的与要求
⑴ 进一步熟悉熟悉VC++6编译环境,掌握运用VC编译C程序的基本方法
⑵ 掌握常见的流程控制结构,熟练掌握二维数组的定义与访问
⑶ 注意输出格式美观。
必须要二维数组 展开
编写一个程序,计算一个M*N阶矩阵和一个N*M阶矩阵相乘,并输出结果矩阵,同时求出矩阵元素最大值、最小质及所有元素平均值。
2、实验目的与要求
⑴ 进一步熟悉熟悉VC++6编译环境,掌握运用VC编译C程序的基本方法
⑵ 掌握常见的流程控制结构,熟练掌握二维数组的定义与访问
⑶ 注意输出格式美观。
必须要二维数组 展开
展开全部
怎么这么像我学校的程序设计比赛题。。。正好:
#include<iostream>
#include<fstream>
#include<sstream>
#include<vector>
using namespace std;
typedef vector<vector<int> > mat;
void print1(const mat& a) //用于判别输入数是否成功和是否错误
{
for(int i=0;i<a.size();++i)
{
for(int j=0;j<a[i].size();++j)
cout<<"a["<<i<<"]["<<j<<"]"<<"="<<a[i][j]<<" ";
cout<<endl;
}
}
void print2(vector<int>& v,int m,int n,ofstream& out) //输出结果
{
for(int i=0;i<m;++i)
{
for(int j=0;j<n;++j)
out<<v[j+n*i]<<" ";
out<<endl;
}
}
void mul(mat& a,int m,int s,int n,ofstream& out) //进行矩阵乘法
{
int sum=0;
vector<int> v;
for(int x=0;x<m;++x)
{
for(int y=0;y<n;++y)
{
for(int z=0;z<s;++z)
sum+=a[x+1][z]*a[1+m+z][y];
v.push_back(sum);
sum=0;
}
}
print2(v,m,n,out);
}
int main()
{
ifstream in("matrix.txt");
ofstream out("estdout.pc2");
mat a;
int m,s,n;
for(string t;getline(in,t);)
{
vector<int> b;
istringstream sin(t);
for(int i;sin>>i;)
b.push_back(i);
a.push_back(b);
}
m=a[0][0];
s=a[0][1];
n=a[0][2];
// print1(a);
mul(a,m,s,n,out);
return 0;
}
额。。。没看到要用二维数组,我用二维向量做的。。。比较省事的方法,另外那个最大元素只要做个double for就好了。。。应该很容易吧。。。剩下的。。算了。。当我路过好了
#include<iostream>
#include<fstream>
#include<sstream>
#include<vector>
using namespace std;
typedef vector<vector<int> > mat;
void print1(const mat& a) //用于判别输入数是否成功和是否错误
{
for(int i=0;i<a.size();++i)
{
for(int j=0;j<a[i].size();++j)
cout<<"a["<<i<<"]["<<j<<"]"<<"="<<a[i][j]<<" ";
cout<<endl;
}
}
void print2(vector<int>& v,int m,int n,ofstream& out) //输出结果
{
for(int i=0;i<m;++i)
{
for(int j=0;j<n;++j)
out<<v[j+n*i]<<" ";
out<<endl;
}
}
void mul(mat& a,int m,int s,int n,ofstream& out) //进行矩阵乘法
{
int sum=0;
vector<int> v;
for(int x=0;x<m;++x)
{
for(int y=0;y<n;++y)
{
for(int z=0;z<s;++z)
sum+=a[x+1][z]*a[1+m+z][y];
v.push_back(sum);
sum=0;
}
}
print2(v,m,n,out);
}
int main()
{
ifstream in("matrix.txt");
ofstream out("estdout.pc2");
mat a;
int m,s,n;
for(string t;getline(in,t);)
{
vector<int> b;
istringstream sin(t);
for(int i;sin>>i;)
b.push_back(i);
a.push_back(b);
}
m=a[0][0];
s=a[0][1];
n=a[0][2];
// print1(a);
mul(a,m,s,n,out);
return 0;
}
额。。。没看到要用二维数组,我用二维向量做的。。。比较省事的方法,另外那个最大元素只要做个double for就好了。。。应该很容易吧。。。剩下的。。算了。。当我路过好了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询