XHAENEUNG 질문드립니다.

  • tyjk32
    tyjk32
    #include <stdio.h>
    #include <string.h>
    
    int numReturn(char *alphabet, char (*s)[11]);
    int calc(int n1, int n2, char op);
    void strCompare(char *s1, char *s2);
    
    int main(void)
    {
        int t, i;
        char str[11][11] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};
        int num1, num2, num3;
        char n1[11], n2[11], n3[11];
        char op1, op2;
        int result;
    
        scanf("%d", &t);
    
        for(i = 0; i < t; i++)
        {
            scanf("%s %c %s %c %s", n1, &op1, n2, &op2, n3);
            num1 = numReturn(n1, str);
            num2 = numReturn(n2, str);
    
            result = calc(num1, num2, op1);
    
            if(result > 10)
            {
                printf("No\n");
                continue;
            }
    
            strCompare(str[result], n3);
        }
    
        return 0;
    }
    
    int numReturn(char *alphabet, char (*s)[11])
    {
        int i;
    
        for(i = 0; i < 11; i++)
        {
            if(strncmp(s[i], alphabet, strlen(alphabet)) == 0)
            {
                break;
            }
        }
    
        return i;
    }
    
    int calc(int n1, int n2, char op)
    {
        int result;
    
        switch(op)
        {
            case '+' :
                result = n1 + n2;
                break;
            case '-' :
                result = n1 - n2;
                break;
            case '*' :
                result = n1 * n2;
                break;
        }
    
        return result;
    }
    
    void strCompare(char *s1, char *s2)
    {
        int str1[26] = {0};
        int str2[26] = {0};
        int i;
    
        for(i = 0; i < 11; i++)
        {
            if(s1[i] == '\0' || s2[i] == '\0')
            {
                break;
            }
            if(s1[i] >= 97 && s1[i] <= 122)
            {
                str1[s1[i] - 97]++;
            }
    
            if(s2[i] >= 97 && s2[i] <= 122)
            {
                str2[s2[i] - 97]++;
            }
        }
    
        for(i = 0; i < 26; i++)
        {
            if(str1[i] != str2[i])
            {
                break;
            }
        }
    
        if(i == 26)
        {
            printf("Yes\n");
        }
        else
        {
            printf("No\n");
        }
    }
    

    댓글에 있는 모든 경우에 정상적으로 출력하는데도
    오답 처리가 되네요..
    도움좀 부탁드리겠습니다 ㅠㅠㅠ


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


    계산의 결과가 0보다 작을 경우가 처리되지 않은 것 같아 보입니다.


    10년 전 link
  • tyjk32
    tyjk32

    헉.. 그렇네요.. 감사합니다 ^^


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