XHAENEUNG 문제 좀 도와주세요...!

  • 슐슐
    슐슐

    문제는 XHAENEUNG 이구요,
    먼저 메인함수 순서입니다

    1. A와 B를 숫자로 바꾸어 계산합니다.
    2. 결과값이 0보다 작거나 10보다 크면 오답으로 출력합니다.
    3. 그게 아니라면 결과값을 영어로 바꾸어 입력된 C와 비교합니다.

    댓글에 올려주신 예제도 넣어보고 음수값도 넣어봤는데 왜 안넘어가는걸까요 ㅠㅠ;


    #include<iostream>
    #include<string.h>
    using namespace std;
    int change(char *str)
    {
        if (!strcmp(str, "zero"))   return 0;
        else if (!strcmp(str, "one"))   return 1;
        else if (!strcmp(str, "two"))   return 2;
        else if (!strcmp(str, "three")) return 3;
        else if (!strcmp(str, "four"))  return 4;
        else if (!strcmp(str, "five"))  return 5;
        else if (!strcmp(str, "six"))   return 6;
        else if (!strcmp(str, "seven")) return 7;
        else if (!strcmp(str, "eight")) return 8;
        else if (!strcmp(str, "nien"))  return 9;
        else if (!strcmp(str, "ten"))   return 10;
        else    return -1;
    }
    void rechange(int num, char *buff)
    {
        if (num == 0)   strcpy(buff, "zero");
        else if (num == 1) strcpy(buff, "one");
        else if (num == 2) strcpy(buff, "two");
        else if (num == 3) strcpy(buff, "three");
        else if (num == 4) strcpy(buff, "four");
        else if (num == 5) strcpy(buff, "five");
        else if (num == 6) strcpy(buff, "six");
        else if (num == 7) strcpy(buff, "seven");
        else if (num == 8) strcpy(buff, "eight");
        else if (num == 9) strcpy(buff, "nine");
        else if (num == 10) strcpy(buff, "ten");
    }
    int calc(char *A, char opr, char *B)
    {
        if (opr == '+') return change(A) + change(B);
        if (opr == '-') return change(A) - change(B);
        if (opr == '*') return change(A) * change(B);
    }
    bool alphabet(char *ans, char *C)
    {
        int arr[2][26] = { 0, };
        for (int i = 0; i < strlen(ans); i++)
            arr[0][ans[i] - 'a']++;
        for (int i = 0; i < strlen(C); i++)
            arr[1][C[i] - 'a']++;
        for (int i = 0; i < 26; i++)
            if (arr[0][i] != arr[1][i])
                return false;
        return true;
    }
    int main()
    {
        int t_case;
        cin >> t_case;
        while (t_case) {
            char A[7] = { 0, }, B[7] = { 0, }, C[11] = { 0, }, buff[11] = { 0, }, opr;
            cin >> A >> opr >> B >> buff >> C;
            int res = calc(A, opr, B);
            if (res < 0 || res > 10)
                cout << "No" << endl;
            else {
                rechange(res, buff);
                bool ch = alphabet(buff, C);
                if (ch)
                    cout << "Yes" << endl;
                else
                    cout << "No" << endl;
            }
            t_case--;
        }
        return 0;
    }
    


    8년 전
2개의 댓글이 있습니다.
  • 파밀리아
    파밀리아

    change 안의 9는 왜 nien 인가요? nine가 아니라


    8년 전 link
  • 슐슐
    슐슐

    헐..그런실수를 ㅠㅠ 고맙습니다! 바로넘어가네요..ㅎㅎ...


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