可能是错误的if语句,输入后没有移动到下一行

时间:2014-02-03 14:41:17

标签: c++ if-statement

当我运行程序时,我必须在输出中输入我想要的行数。我有1到100行的限制。每一行都是一个任务,其名称为任务,后跟增加的数字,例如:Task1:,Task2,....当我在输入中键入内容时,它必须转换输入字符串/请参阅下面的代码 - 除了主要代码(); /。 我的问题是,当我输入第一个输入时,它应该转到下一个任务/下一行/但它没有。我输入了例如10个字符串,但是他们不会将每个字符串分别用于下一个任务,但是它们仍然处于一个任务中......希望您现在明白。

 #include<iostream>
    #include<string>
    #include <ctype.h>

    using namespace std;

    void Convert(string input){
        string output = "";
        string flag = "";
        bool underscore = false;
        bool uppercase = false;
        if ( islower(input[0]) == false){
            cout << "Error!" <<endl;
            return;
        }

        for (int i=0; i < input.size(); i++){
            if ( (isalpha( input[i] ) || (input[i]) == '_') == false){
                cout << "Error!" <<endl;
                return;
            }
            if (islower(input[i])){
                if (underscore){
                    underscore = false;
                    output += toupper(input[i]);
                }
                else
                    output += input[i];

            }
            else if (isupper(input[i])){
                if (flag == "C" || uppercase){
                    cout << "Error!"<<endl;
                    return;
                }
                flag = "Java";
                output += '_';
                output += tolower(input[i]);

            }
            else if (input[i] == '_'){
                if (flag == "Java" || underscore){
                cout << "Error!" <<endl;
                return;
                }
                flag = "C";
                underscore = true;
            }
        }
        cout << output <<endl;
    } 



    int main(){

        const int max = 100;
        string input;
        int pocet_r;
        cout << "Zadaj pocet uloh:" << endl;
        cin >> pocet_r;

        if(pocet_r >= 1 && pocet_r <=100)
        {
                   for (int i = 0; i <pocet_r; i++)
                   {
                     cout << "Uloha " << i+1 << ":" << endl;
                     while (cin >> input)
                     Convert (input);



                    while(input.size() > max)
                     cout << "slovo musi mat minimalne 1 a maximalne 100 znakov" << endl;

                     while(input.size() > max)
                     cin >> input;


                    while (cin >> input)
                    Convert(input);



                   }
        }else{
         cout << "Minimalne 1 a maximalne 100 uloh" << endl;
    }


    system("pause");
    }

1 个答案:

答案 0 :(得分:0)

您在转换时的第一个if将始终在非下划线上失败并返回。我不认为这是有意的。同意cin循环的其他答案。接下来的两个时间应该是if if。使用调试器逐步执行此代码并逐行观察并查看失败的位置。你在这里遇到了多个问题,我并不完全确定意图是什么。

编辑 - 我没有正确解析额外的括号。转换中的第一个实际上是可以的。