初学者
我在C ++中写了下面的内容,它是一个简短的程序,目前需要2个单词作为输入,然后输出相同的单词,但这些单词被分成偶数和奇数。我希望能够为T' T'做到这一点。换句话说,但我无法弄明白。我希望能够首先输入将要跟随的单词数,例如10.然后输入单词并返回T结果。因此,用户指定的数量不限于2个单词。
我需要将下面的内容放到一个函数中,然后从那里开始,但是我想学习最好的技巧 - 请问有什么建议吗?
谢谢! 亚历克斯
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
int T;
cin >> T;
string FirstWord;
cin >> FirstWord;
int LengthFirst;
LengthFirst = FirstWord.length();
string EvenFirst;
string OddFirst;
for (int i = 0; i < LengthFirst; i += 2){
EvenFirst = EvenFirst + FirstWord[i];
}
for (int i = 1; i < LengthFirst; i += 2){
OddFirst = OddFirst + FirstWord[i];
}
string SecondWord;
cin >> SecondWord;
int LengthSecond;
LengthSecond = SecondWord.length();
string EvenSecond;
string OddSecond;
for (int i = 0; i < LengthSecond; i += 2){
EvenSecond += SecondWord[i];
}
for (int i = 1; i < LengthSecond; i += 2){
OddSecond += SecondWord[i];
}
cout << EvenFirst << " " << OddFirst << endl;
cout << EvenSecond << " " << OddSecond << endl;
return 0;
}
答案 0 :(得分:0)
想想我明白了,我过度思考这个
我把它放在for循环中,如下所示 - 所以可以输入任意数量的单词,用户必须在
输入测试用例的数量
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
int T;
cin >> T;
for (int i = 0; i < T; i++){
string FirstWord;
cin >> FirstWord;
int LengthFirst;
LengthFirst = FirstWord.length();
string EvenFirst;
string OddFirst;
for (int i = 0; i < LengthFirst; i += 2){
EvenFirst = EvenFirst + FirstWord[i];
}
for (int i = 1; i < LengthFirst; i += 2){
OddFirst = OddFirst + FirstWord[i];
}
cout << EvenFirst << " " << OddFirst << endl;
}
return 0;
}
&#13;
答案 1 :(得分:0)
最终,您执行相同的任务 N 次。
首先,我们来讨论如何存储信息。在功能上,我们有一个字符串作为输入,产生两个字符串作为输出。 std::pair
(来自<utility>
)让我们轻松代表这一点。但为了偶数,std::array
可能是我们更好的代表。由于我们将可变数量的单词作为输入,因此将输出可变数量的std::array
。 std::vector
(来自<vector>
)是我们的朋友。
其次,让我们讨论如何处理信息。对每个输出组件使用命名变量不会缩放,所以让我们切换到一个固定数组(下面标注为array<string,2>
。通过切换到一个固定数组进行输出,寻址每个分裂成为循环索引的函数({{ 1}})。下面是一个在编译时推广已知分割大小的解决方案。
index % 2