关于C++数组问题
就是有一个二维数组和一个公式y=ax+b。公式中的a,b对应数组不同的列,值不同,相同的列值相同。在这里a,b还要保证自己输入,不是一个定值。如果这个数组有4列,我就要输...
就是有一个二维数组和一个公式y=ax+b。公式中的a,b对应数组不同的列,值不同,相同的列值相同。在这里a,b还要保证自己输入,不是一个定值。如果这个数组有4列,我就要输入4组a,b的值。公式系数确定好后,就要把数组每行每个值带到公式中进行计算,公式中x对应数组的值,把每一行的数都带入到想应得公式中计算后,最后将的到的结果进行相加,得出总和,有多少行就有多少个总和,更深一步就是找出总和最小的值和他对应的那行数组。比如数组b[3][3]第一行:第一行a1*b[0][0]+b1+a2*b[0][1]+b+a3*b[0][2]+b得出了它的总和sum1。第二行a1*b[1][0]+b1+a2*b[1][1]+b+a3*b[1][2]+b得出总和sum2.a1*b[2][0]+b1+a2*b[2][1]+b+a3*b[2][2]+b得出总和sum3.比较这三个总和,找到最小的,输出最小值和相应的行。
展开
1个回答
展开全部
/*
基本理解楼主的意思了
写了代码 楼主试试 看好用不
有啥问题再说
运行后按提示来就行
*/
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int M,N;
cout<<"输入数组的行数M,列数N:"<<endl;
cin>>M>>N;
vector<int> a(N),b(N); // 一个存储a,b值的向量
vector<vector<int> > v(M,vector<int>(N)); //被计算的二维数组
vector<int> sum(M,0); //存储每行的和
// 二维数组输入
cout<<endl<<endl<<"输入"<<M<<"行"<<N<<"列的数组元素:"<<endl;
for(int i=0; i<M; i++)
for(int j=0; j<N; j++)
{
cin>>v[i][j];
}
// N组 a,b 的输入
cout<<endl<<endl<<"输入"<<N<<"组a,b值:"<<endl;
for(int i=0; i<N; i++)
cin>>a[i]>>b[i];
cout<<endl<<endl;
// 计算 sum
for(int i=0; i<M; i++)
{
for(int j=0; j<N; j++)
sum[i] += a[j]*v[i][j] + b[j];
cout<<"第"<<i+1<<"行元素经运算后和为:"
<<sum[i]<<endl;
// 以上两行只是为了展示下 计算的 sum值
// 验证计算是否正确 不需要可以删除
}
// 找到和最小的行数
int k=0;
for(int i=0; i<M; i++)
if(sum[k]>sum[i])
k=i;
//最终结果的输出
cout<<endl<<"和最小的行的元素为:\n";
for(int j=0; j<N; j++)
cout<<v[k][j]<<" ";
cout<<endl;
return 0;
}
基本理解楼主的意思了
写了代码 楼主试试 看好用不
有啥问题再说
运行后按提示来就行
*/
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int M,N;
cout<<"输入数组的行数M,列数N:"<<endl;
cin>>M>>N;
vector<int> a(N),b(N); // 一个存储a,b值的向量
vector<vector<int> > v(M,vector<int>(N)); //被计算的二维数组
vector<int> sum(M,0); //存储每行的和
// 二维数组输入
cout<<endl<<endl<<"输入"<<M<<"行"<<N<<"列的数组元素:"<<endl;
for(int i=0; i<M; i++)
for(int j=0; j<N; j++)
{
cin>>v[i][j];
}
// N组 a,b 的输入
cout<<endl<<endl<<"输入"<<N<<"组a,b值:"<<endl;
for(int i=0; i<N; i++)
cin>>a[i]>>b[i];
cout<<endl<<endl;
// 计算 sum
for(int i=0; i<M; i++)
{
for(int j=0; j<N; j++)
sum[i] += a[j]*v[i][j] + b[j];
cout<<"第"<<i+1<<"行元素经运算后和为:"
<<sum[i]<<endl;
// 以上两行只是为了展示下 计算的 sum值
// 验证计算是否正确 不需要可以删除
}
// 找到和最小的行数
int k=0;
for(int i=0; i<M; i++)
if(sum[k]>sum[i])
k=i;
//最终结果的输出
cout<<endl<<"和最小的行的元素为:\n";
for(int j=0; j<N; j++)
cout<<v[k][j]<<" ";
cout<<endl;
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询