XHAENEUNG 소스코드 왜 틀리다고 나오는지 이해가 안갑니다.

  • choidongyun
    choidongyun
    #include <iostream>
    
    using namespace std;
    
    int input;
    
    char one[100];
    
    char oper;
    
    char oper1;
    
    char two[100];
    
    char answer[100];
    
    int transone = 0;
    
    int transtwo = 0;
    
    char numbers[11][10] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" , "ten"};
    
    int answeris(int answer111){
        int check[11];
        int zzz = 0;
        int gogo = 0;
        for (int i = 0; i < 11; i++){
            if (numbers[answer111][i] == '\0'){
                if (answer[i] == '\0'){
                    gogo = 0;
                }
                else{
                    return -1100; 
                    gogo = 1;
                }
            }
    
    
        }
        if (gogo == 0){
            for (int i = 0; i < 9; i++){
                check[i] = 0;
            }
            for (int i = 0; i < 11; i++){
                if (numbers[answer111][i] == '\0'){
    
                    if (zzz == i){
                        return zzz;
                    }
                    else{
                        return -1100;
                    }
                }
                else{
                    for (int j = 0; j < 11; j++){
                        if (numbers[answer111][i] == '\0' || answer[j] == '\0'){
                            break;
                        }
                        else if (numbers[answer111][i] == answer[j] && check[j] == 0){
                            check[j] = 1;
                            zzz++;
                            break;
                        }
                    }
    
                }
            }
        }
        return -1100;
    
    
    }
    
    
    int whatnumber(char a[]){
        int end = 0;
        for (int i = 0; i < 11; i++){
            int flag = 0;
            for (int j = 0; j < 11; j++){
                if (numbers[i][j] == '\0'){
                    if (flag == j){
                        //cout << numbers[i] << " " << a << endl;
                        return i;
                    }
                }
                else{
                    if (a[j] == numbers[i][j]){
                        flag++;
                    }
                }
            }
        }
    
    
        return -1;
    }
    
    int main(){
    
        cin >> input;
    
        for (int i = 1; i <= input; i++){
    
            cin >> one >> oper >> two >> oper1 >> answer;
    
            //cin >> one >> oper >> two ;
    
            int answer1 = 0;
    
            transone = whatnumber(one);
    
            transtwo = whatnumber(two);
    
            if (oper == '+'){
    
                answer1 = transone + transtwo;
    
            }
    
            else if (oper == '-'){
    
                answer1 = transone - transtwo;
    
            }
            else if (oper == '*'){
    
                answer1 = transone * transtwo;
    
            }
    
            if (answer1 > 10){
    
                cout << "No" << endl;
    
            }
            else{
    
                int n1 = answeris(answer1);
    
                if (n1 == -1100){
    
                    cout << "No" << endl;
    
                }
                else{
    
                    cout << "Yes" << endl;
    
                }
    
            }
    
            for (int w = 0; w < 11; w++){
    
                one[w] = 0;
    
                two[w] = 0;
    
                answer[w] = 0;
    
            }
    
        }
    
        return 0;
    
    }
    

    9년 전
1개의 댓글이 있습니다.
  • 맥커터
    맥커터

    잘은 모르겠습니다만..
    뺄셈 했을때 음수가 나오는 예외처리 안해주신듯요


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