XHAENEUNG 문제질문입니다.

  • sea2003
    sea2003
    #include <iostream>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    
    int main(void)
    {
        int testNum;
        cin>>testNum;
    
        string num[11] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};
        string sort_num[11] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};
    
        for(int i=0;i<11;++i)
        {
            sort(sort_num[i].begin(), sort_num[i].end());
        }
    
        while(testNum--)
        {
            string left_side_str, right_side_str, answer_str;
            char operation;
            char equal;
    
            cin>>left_side_str >> operation >> right_side_str >> equal >> answer_str;
    
            int left_side_num, right_side_num, answer_num;
    
            sort(answer_str.begin(), answer_str.end());
    
            for(int i=0;i<11;++i)
            {
                if(!left_side_str.compare(num[i])){
                    left_side_num = i;
                    break;
                }
            }
    
            for(int i=0;i<11;++i)
            {
                if(!right_side_str.compare(num[i])){
                    right_side_num = i;
                    break;
                }
            }
    
            for(int i=0;i<11;++i)
            {
                if(!answer_str.compare(sort_num[i])){
                    answer_num = i;
                    break;
                }
            }
    
            int correct_answer;
    
            if(operation == '+') correct_answer = left_side_num + right_side_num;
            else if(operation == '-') correct_answer = left_side_num - right_side_num;
            else if(operation == '*') correct_answer = left_side_num * right_side_num;
    
            if(correct_answer > 10 || correct_answer < 0) cout<<"No"<<endl;
            else if(correct_answer == answer_num) cout<<"Yes"<<endl;
            else cout<<"No"<<endl;
        }
    }
    

    계속 살펴보는데 뭐가 틀렸는지 모르겠습니다 ㅠㅠ
    string num[11]이 left_side_str와 right_side_str를 비교하는 문자열이고
    string sort_num[11]이 answer_str과 정렬후 비교하는 문자열입니다.

    어느부분이 문제일까요? ㅠㅠ


    10년 전
2개의 댓글이 있습니다.
  • Being
    Being

    answer_str이 어디에도 해당되지 않을 때, answer_num의 값이 설정되지 않게 되는데, 이 경우의 동작은(즉, 초기화되지 않은 값에 대한 접근은) 보장할 수 없습니다. 실제로는, 많은 경우 직전 루프 반복에서 살아있던 answer_num의 값을 그대로 가지고 있습니다.


    10년 전 link
  • sea2003
    sea2003

    감사합니다!! 생각도 못했었는데 ㅠㅠㅠ
    다시한번 감사드립니다~~!


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