作者changkh (留学生涯)
看板ck47th320
标题Re: [问题] 把一个档案里的"行"乱排?
时间Tue Mar 29 22:11:36 2005
※ 引述《changkh (留学生涯)》之铭言:
: ※ 引述《genie2 (新挑战)》之铭言:
: : 一个简单的问题
: : 我现在有一个档案,大概有一两千行(假设有N行)
: : 每行都是像
: : 0 1 0 0 1 0
: : 这样子0和1的格式
: : 每行的数字个数是固定的
: : 我现在想要把整个档案的每一行乱数重排
: : 目前想到的方法是把整个档案读到int array里面(用c)
: : 然後再用一个产生好的1~N乱数sequence去把array里的东西读出来
: : 应该很staight forward
: : 问题是有点烦
: : 有没有人知道有什麽软体可以直接完成这种事情的?
: 你可以用 C++的STL来做。
: 把数字读到vector里面,之後用random_shuffle,就可以了。
试着写写看好了,没有真的debug,所以当做参考吧。
#include <vector>
#include <algorithm>
#include <fstream>
#include <iterator>
using namespace std;
int main()
{
vector<int> intvec;
vector<int>::iterator pvec;
int i;
fstream ifile, ofile;
ifile.open("input",ios::in);
ofile.open("input", ios::out);
while (!ifile.eof())
{
读入一行,对该行的每个数字
{
取出数字,放在i
intvec.push_back(i);
}
random_shuffle(intvec.begin(), intvec.end());
for (pvec=intvec.begin(); pvec != intvec.end(); pvec++)
{
ofile<<*pvec<<" ";
}
ofile<<endlk;
intvec.clear();
}
ifile.close();
ofile.close();
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 68.43.196.35