为什么我的程序得不到正确结果,麻烦各位高手给看一下,谢了!

#include<iostream>#include<fstream>#include<sstream>#include<vector>usingnamespacestd... #include<iostream>
#include<fstream>
#include<sstream>
#include<vector>
using namespace std;
typedef vector<vector<int> > Mat;
Mat input();
void mysort(Mat& a);
void print(const Mat& a);
void main()
{
Mat a=input();
mysort(a);
print(a);
}
Mat input()
{
ifstream in("aaa.txt");
Mat a;
vector<int> b;
for(string s;getline(in,s);)
{
istringstream sin(s);
for(int c;sin>>c;)
b.push_back(c);
a.push_back(b);
}
return a;
}
void mysort(Mat& a)
{
for(int pass=1;pass<a.size();pass++)
for(int i=0;i<a.size()-pass;i++)
if(a[i]>a[i+1])
a[i].swap(a[i+1]);
}
void print(const Mat& a)
{
for(int i=0;i<a.size();i++)
{
for(int j=0;j<a[i].size();j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}

文件aaa.txt里的内容为
12 3 45 67 8 9
56 232 12 23
12 1
8
1212 2312
正确的结果应为
8
12 1
1212 2312
56 232 12 23
12 3 45 67 8 9
谢谢各位了!
展开
 我来答
living0605
2010-08-29
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
#include<iostream>
#include<fstream>
#include<sstream>
#include<vector>
using namespace std;
typedef vector<vector<int> > Mat;
Mat input();
void mysort(Mat& a);
void print(const Mat& a);
void main()
{
Mat a=input();
mysort(a);
print(a);
::system("PAUSE");
}

Mat input()
{
ifstream in("aaa.txt");
Mat a;
vector<int> b;
for(string s;getline(in,s);)
{
istringstream sin(s);
for(int c;sin>>c;)
b.push_back(c);
a.push_back(b);

b.clear(); //b中的数据要清空
}
return a;
}

void mysort(Mat& a)
{
for(int pass=1;pass<a.size();pass++)
for(int i=0;i<a.size()-pass;i++)
if(a[i].size() > a[i+1].size()) //因为a[i]也是一个范型vector.根据正确的输出结果可以知道根据数组的尺寸排序。而不是第一个数据的大小排序
a[i].swap(a[i+1]);
}

void print(const Mat& a)
{
for(int i=0;i<a.size();i++)
{
for(int j=0;j<a[i].size();j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式