程序在执行整个代码

时间:2017-01-21 17:07:50

标签: c++ char symbols

所以这段代码应该是最后一个" reverse_display"在单词开头的字符串的每个单词中的符号,如下所示: CIN>> 哦,铃儿响叮当,铃儿响叮当,一路叮当响。哦,坐在一匹马开的雪橇上真是太有趣了。 3 COUT<< hO,glejin llsbe,glejin llsbe,glejin一路走来。 hO,hatw fun ti si ot ider ni a one rseho peno ighsle。

一切正常,因为在执行结束后,程序停止工作,没有任何特殊原因我可以看到。我尝试在程序结束时输入测试cout,然后执行,然后程序再次停止工作。我在没有租借代码的情况下尝试了0,但是徒劳无功。这是我的存在,请帮忙。

 #include <iostream>
#include <string>
using namespace std;
int check_if_reverse_display_overload (int, int);
int main ()
{
    string dumi="";
    string duma="";

    getline (cin,dumi);

    dumi.append(" ");

    int reverse_display, reverse_display_overload, i=0, k=0;

    cin>>reverse_display;

    for (int i=0; i< dumi.length(); i++)
    {

        if ((dumi[i]>='A' && dumi[i]<='Z') || (dumi[i]>='a' && dumi[i]<='z') || dumi[i]=='-' || ( dumi[i]>='0' && dumi[i]<='9'))
        {

            duma[k]=dumi[i];
            k++;
        }
        else
        {
            if (((dumi[i-1]>='A' && dumi[i-1]<='Z') || (dumi[i-1]>='a' && dumi[i-1]<='z') || dumi[i-1]=='-' || (dumi[i-1]>='0' && dumi[i-1]<='9'))  && i!=1)
            {
            reverse_display_overload=check_if_reverse_display_overload(reverse_display, k);

            for (int j=k-reverse_display_overload; j<k; j++)
            {
                cout<<duma[j];
            }
            for (int j=0; j<k-reverse_display_overload; j++)
            {
                cout<<duma[j];
            }

            duma="";
            k=0;
            }
            cout<<dumi[i];

        }

    }
// cout<<"bogomil rainov e pi4";
    return 0;
}

int check_if_reverse_display_overload (int reverse_display, int k)
{
    if (k==0)
    {

        return reverse_display;
    }
    if(reverse_display>k)
    {

        return check_if_reverse_display_overload(reverse_display-k, k);
    }
    else
    {

        return reverse_display;
    }
}

1 个答案:

答案 0 :(得分:0)

我的一个朋友帮我找到了错误。它与这段代码有关。它与字符串杜马阵列之外的工作有关。虽然我还是无法理解这个bug的本质。

 if ((dumi[i]>='A' && dumi[i]<='Z') || (dumi[i]>='a' && dumi[i]<='z') || dumi[i]=='-' || ( dumi[i]>='0' && dumi[i]<='9'))
    {

        duma[k]=dumi[i]; // the error because of this line
        k++;
    }