XHAENEUNG 계속해서 오답나요ㅜ

  • ultimate1994
    ultimate1994

    현재 코드에서 계속 답이 오답처리 되는데요. 그 이전까지는 RTE(nonezero return code) 뜨다가 예외처리 문제 일 수 있다고 해서 예외처리 다 다시해주니까 오답이네요ㅠㅠ 어디에서 오류가 난 걸까요?

    #pragma warning(disable:4996)
    
    #include <iostream>
    #include <string>
    #include <algorithm>
    #include <ctype.h>
    
    using namespace std;
    
    int main() {
        int equation_num;
    
        scanf("%d", &equation_num);
    
    
        string *a = new string[equation_num];
        string *b = new string[equation_num];
        string *c = new string[equation_num];
        char *oper = new char[equation_num];
        char *equation = new char[equation_num];
    
        int *result = new int[equation_num];
    
        string *result_s = new string[equation_num];
    
        string num[] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" };
        int tmp_num[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    
        for (int i = 0; i < equation_num; i++) {
            int tmp1 = 0, tmp2 = 0;
            string tmp_result = "";
            cin >> a[i] >> oper[i] >> b[i] >> equation[i] >> c[i];
    
            if (c[i].length() > 10) {                       //if c[i]'s length over ten letters, die
                exit(1);
            }
    
            for (int j = 0; j < c[i].length(); j++) {       //if c[i]'s letter is not lower case, die
                if (islower(c[i][j]) == 0) {
                    exit(1);
                }
            }
    
            for (int j = 0; j < 11; j++) {
                if (a[i] == num[j]) { tmp1 = tmp_num[j]; }
                if (b[i] == num[j]) { tmp2 = tmp_num[j]; }
            }
    
            if (tmp1 > 10 || tmp1 < 0) {                    //if input a is over 10 or lower than 0, die
                exit(1);
            }
            if (tmp2 > 10 || tmp2 < 0) {                    //if input b is over 10 or lower than 0, die
                exit(1);
            }
    
            switch (oper[i]) {
            case '+': result[i] = tmp1 + tmp2; break;
            case '-': result[i] = tmp1 - tmp2; break;
            case '*': result[i] = tmp1 * tmp2; break;
            }
    
            if (result[i] > 10 || result[i] < 0) {
                result_s[i] = "NO";
                continue;
            }
    
            for (int j = 0; j < 11; j++) {
                if (tmp_num[j] == result[i]) {
                    tmp_result = num[j];
                    break;
                }
            }
    
            sort(c[i].begin(), c[i].end());
            sort(tmp_result.begin(), tmp_result.end());
    
            if (c[i] == tmp_result) {
                result_s[i] = "YES";
            }
            else {
                result_s[i] = "NO";
            }
        }
    
        for (int i = 0; i < equation_num; i++) {
            cout << result_s[i] << endl;
        }
    
        system("pause");
        return 0;
    }
    

    6년 전
1개의 댓글이 있습니다.
  • ultimate1994
    ultimate1994

    문제 해결 했습니다.

    YES와 NO를 Yes와 No로 바꾸니까 해결됐어요.


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