C ++简单的字符串程序

时间:2017-04-13 13:54:07

标签: c++ string

初学者

我在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;
}

2 个答案:

答案 0 :(得分:0)

想想我明白了,我过度思考这个

我把它放在for循环中,如下所示 - 所以可以输入任意数量的单词,用户必须在

输入测试用例的数量

&#13;
&#13;
#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;
&#13;
&#13;

答案 1 :(得分:0)

最终,您执行相同的任务 N 次。

首先,我们来讨论如何存储信息。在功能上,我们有一个字符串作为输入,产生两个字符串作为输出。 std::pair(来自<utility>)让我们轻松代表这一点。但为了偶数,std::array可能是我们更好的代表。由于我们将可变数量的单词作为输入,因此将输出可变数量的std::arraystd::vector(来自<vector>)是我们的朋友。

其次,让我们讨论如何处理信息。对每个输出组件使用命名变量不会缩放,所以让我们切换到一个固定数组(下面标注为array<string,2>。通过切换到一个固定数组进行输出,寻址每个分裂成为循环索引的函数({{ 1}})。下面是一个在编译时推广已知分割大小的解决方案。

index % 2