lecture 문제 런타임오류 나네요

  • User Avatar
    klata

    [[problem:LECTURE]]

    문제는 위에 첨부했어요;
    런타임오류가 어디서 나는지 알수 있을까요?
    참고로 오류의 종류는
    RTE (SIGABRT: program aborted, probably assertion fail)
    이거네요


    ~~~
    #include
    #include
    #include

    using namespace std;

    int main()
    {
    int T,t,I,J,lenth,count=0;
    string S;
    vector print(1000,"0");
    vector alpha;
    static int k=0;
    static int c=0;
    string swap;

    cin>>T;
    t=T;
    while(T)
    {
        cin>>S;
        for(unsigned int i=0; i<S.length(); i++)
        {
            alpha.push_back(S.substr(I,1));
        }
        for(int M=0; M<4; M++)
        {
            alpha.push_back("0");
        }
        for(lenth=0; lenth<1000; lenth++)
        {
            if (alpha[lenth] =="0")
            {
                break;
            }
        }
    
        for(J=lenth/2; J>0; J--)
        {
            for(I=0;I<=J;I++)
            {
                if(alpha[c+I*2] > alpha[c+I*2+2])
                {
                    if(alpha[c+I*2]=="0"||alpha[c+I*2+2]=="0")
                        break;
                    swap = alpha[c+I*2];
                    alpha[c+I*2] = alpha[c+I*2+2];
                    alpha[c+I*2+2] = swap;
                    swap=alpha[c+I*2+1];
                    alpha[c+I*2+1]=alpha[c+I*2+2+1];
                    alpha[c+I*2+2+1]=swap;
                }
            }
        }
        for(J=lenth/2; J>0; J--)
        {
            for(I=0;I<=J;I++)
            {
                if(alpha[c+I*2] >= alpha[c+I*2+2] && alpha[c+I*2+1] > alpha[c+I*2+2+1])
                {
                    if(alpha[c+I*2+1]=="0"||alpha[c+I*2+2+1]=="0")
                        break;
                    swap = alpha[c+I*2];
                    alpha[c+I*2] = alpha[c+I*2+2];
                    alpha[c+I*2+2] = swap;
                    swap=alpha[c+I*2+1];
                    alpha[c+I*2+1]=alpha[c+I*2+2+1];
                    alpha[c+I*2+2+1]=swap;
                }
            }
        }
        for(I = 0; I<lenth; I++)
        {
            print[k] = alpha[k];
            k++;
        }
        print[k] = "0";
        k+=4;
        T--;
        c+=lenth+4;
    }
    for(I=0; I<k+4*t; I++)
    {
        if(print[I] == "0")
        {
            cout<<"\n";
            I+=4;
            count++;
            if(count==t)
                break;
        }
        cout<<print[I];
    }
    

    }
    ~~~


    12년 전
1개의 댓글이 있습니다.
  • User Avatar
    Taeyoon_Lee

    cin>>S;
    for(unsigned int i=0; i<S.length(); i++)
    {
    alpha.push_back(S.substr(I,1));
    }
    여기부터 조금 이상해보이는데요. 변수 I가 초기화된 적이 없습니다.


    12년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.