一个二维向量的题

Dreamz 2008-12-02 06:34:16
这个题是用3个函数分别实现二维数组的输入,每一行的求和以及求平均值,现在的情况是输入数据后求出的每行的和以及平均值都不对,看不出是哪里的问题,还请大家帮忙解决,谢谢先:)

#include <iostream>
#include <vector>
using namespace std;

typedef vector<int> vi;
typedef vector<vi> vii;

vii input(const int m, const int n)
{
vii a;
a.resize(m);
for (int i=0; i<a.size(); ++i)
{
a[i].resize(n);
}
for (int i=0; i<a.size(); ++i)
{
for (int j=0; j<a[i].size(); ++j)
cin >> a[i][j];
}
return a;
}

void total(vii a)
{
int sum = 0;
for (int i=0; i<a.size(); i++)
{
for (int j=0; j<a[i].size(); j++)
{
sum += a[i][j];
}
cout << i+1 << ' : ' << sum << endl;
}
}

void average(vii a)
{
int sum = 0;
for (int i=0; i<a.size(); i++)
{
for (int j=0; j<a[i].size(); j++)
{
sum += a[j][i];
}
cout << "NO " << i << " average is " << double(sum)/2 << endl;
}
}

int main()
{
vii matrix = input(2,2);
total(matrix);
average(matrix);

return 0;
}
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dreamz 2008-12-02
  • 打赏
  • 举报
回复
谢谢球球,刚看到你的最新回复,呵呵
Qkill 2008-12-02
  • 打赏
  • 举报
回复
#include <iostream>
#include <vector>
using namespace std;

typedef vector<int> vi;
typedef vector<vi> vii;



void input(vii &a, const int m, const int n)
{
// vii a;
a.resize(m);
for (int i=0; i<a.size(); ++i)
{
a[i].resize(n);
}
for (i=0; i<a.size(); ++i)
{
for (int j=0; j<a[i].size(); ++j)
cin >> a[i][j];
}
// return a;
}

void total(vii a)
{
int sum = 0;
for (int i=0; i<a.size(); i++)
{
for (int j=0; j<a[i].size(); j++)
{
sum += a[i][j];
}
cout << i+1 << ':' << sum << endl;
sum = 0;
}
}

void average(vii a)
{
int sum = 0;
for (int i=0; i<a.size(); i++)
{
for (int j=0; j<a[i].size(); j++)
{
sum += a[i][j];
}
cout << "NO " << i << " average is " << (double)sum/2 << endl;
sum = 0;
}
}

int main()
{
vii matrix;
input(matrix, 2, 2);
total(matrix);
average(matrix);

return 0;
}
qqwx_1986 2008-12-02
  • 打赏
  • 举报
回复

vii input(const int m, const int n)
{
vii a;
a.resize(m);
for (int i=0; i<a.size(); ++i)
{
a[i].resize(n);
}
for (int i=0; i<a.size(); ++i)
{
for (int j=0; j<a[i].size(); ++j)
cin >> a[i][j];
}
return a;//临时变量,生命周期随函数的结束而结束
}
建议改为
void input(const int m, const int n,vii &a)
{
a.resize(m);
for (int i=0; i<a.size(); ++i)
{
a[i].resize(n);
}
for (int i=0; i<a.size(); ++i)
{
for (int j=0; j<a[i].size(); ++j)
cin >> a[i][j];
}
}
...
int main()
{
vii matrix ;
input(2,2,matrix);
total(matrix);
average(matrix);

return 0;
}

Dreamz 2008-12-02
  • 打赏
  • 举报
回复
自己发现错误了,字符串用' '来标记了,真晕= =
Dreamz 2008-12-02
  • 打赏
  • 举报
回复
求平均值这里是粗心的错误,但是每一行求和那里还没看出来是哪里的问题...
qqwx_1986 2008-12-02
  • 打赏
  • 举报
回复

void average(vii a)
{
int sum = 0;
for (int i=0; i<a.size(); i++)
{
for (int j=0; j<a[i].size(); j++)
{
sum += a[j][i];//==>sum += a[i][j];
}
cout << "NO " << i << " average is " << double(sum)/2 << endl;
}
}


65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧