为什么代码块在获得输出后会产生运行时错误?

时间:2017-09-14 04:15:50

标签: runtime-error c++14

下面的代码在打印输出为大值后给出运行时错误,但是如果我使用小值则其工作正常。在此代码中,我们需要找到下一个最小的回文。 例如9999给出输出10001,它是正确的,没有运行时错误但是 999999999999999999999999999999给出了正确的输出但是在获得输出代码块后显示ran26.cpp停止工作,并且在ideone中它在打印输出后给出了运行时错误。

#include<iostream>
#include<string>
#include<ctype.h>
#include<algorithm>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int carry=1,flag=0,flag2=0;
        string str,str2;
        cin>>str;
        int len=str.size();
        while(1)
        {
        int ch[len];
        flag=0;flag2=0;
        carry=1;
        for(int i=0;i<len;i++)
            ch[i]=str[i]-'0';
        for(int i=len-1;i>=0;i--)
            {
            int x=ch[i];
            ch[i]=(x+carry)%10;
            carry=(x+carry)/10;
            }
        while(carry>0)
            {
            ch[len]=carry%10;
            len++;
            carry=carry/10;
            flag=1;
            }
            if(flag==1)
            {
                int start=0,end=len-1,temp1;
                while (start < end)
                {
                temp1 = ch[start];
                ch[start] = ch[end];
                ch[end] = temp1;
                start++;
                end--;
                }
            }
            for(int i=0;i<len;i++)
            {
                str[i]=ch[i]+'0';
                str2[len-1-i]=ch[i]+'0';
            }
            for(int i=0;i<len;i++)
            {
                if(str[i]!=str2[i])
                    flag2=1;
            }
            if(flag2==0)
            {
                for(int i=0;i<len;i++)
                    cout<<str[i];
                cout<<endl;
                break;
            }
        }
    }
    return 0;
}

提前致谢。

0 个答案:

没有答案