问题重述
题目一:
现有多组整数数组,需要将他们合并成一个新的数组。合并规则,从每个数组按顺序
取出固定长度的内容合并到新的数组中,取完的内容会删除掉,如果该行不足固定长度
或者已经为空,则直接取出剩余部分的内容放到新的数组中,继续下行。如样例1,
获得长度3,先遍历第一行,获得2.5.6 ;再遍历第二行,获得1,7.4;再循环回到第行.
获得7,9,5 ;再遍历第二行,获得1,7,4;再循环回到第1行,获得7.按顺序拼接成最终结果
输入描述:
第一行是每次读取的固定长度,长度>0 ,第2-n行是需要合并的数组,不同的数组用回车换行分隔,数组内部用建号分隔
输出描述:
输出一新的数组,用逗号分隔。
输入:
3
2,5,6,7,9,5,7
1,7,4,3,4
输出:
2,5,6,1,7,4,7,9,5,3,4,7
代码运行截图:
代码:
#include<iostream>
#include<vector>
#include<string>
using namespace std;
void str_cut(vector<string>str_in, int cut_len);
int find_end(string str);
string result = "";
int main()
{
vector<string> v_str;
string _str;
int cut_len;
cin >> cut_len;
getchar();//获取换行符
while (getline(cin, _str))
{
if (!_str.empty())
{
v_str.push_back(_str);
}
else
{
break;
}
}
str_cut(v_str, cut_len);
cout << result << endl;
system("pause");
return 0;
}
void str_cut(vector<string>str_in,int cut_len)//循环处理str_in
{
string copy = "";
static int size_;
size_ = str_in.size();
while (size_ > 0)
{
for (int i = 0; i <str_in.size(); i++)
{
if (str_in[i].size() > 0)//!(str_in[i].empty)第i个字符数组不为空
{
int num = 0, pos;
while (num < cut_len)
{
pos = str_in[i].find_first_of(',', 0);//','第一次出现的数组下标
if (pos == -1)//只剩最后一个数字
{
copy = str_in[i].substr(0);
result += copy;
str_in[i].erase(0);//删除
size_ -= 1;
if (size_ > 0)
{
result += ",";
}
break;
}
copy = str_in[i].substr(0, pos + 1);
num += 1;
result += copy;//包含‘,’
str_in[i].erase(0, pos + 1);//删除
}
}
}
}
}
喜欢的朋友留个赞支持一下吧_