View Code of Problem 16

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>

int main()
{
    int i,j,t,flag,len = 0,sum;
    int a[10] = {0};
    char str[10],b[10][10] = {"zero","one","two","three","four","five","six","seven","eight",
    "nine"};

    scanf("%d",&t);
    for(i = 0;i < t;i++)
    {
        sum = 0;
        scanf("%d",&flag);
        if(flag == 0)
        {
            while(scanf("%s",str) != EOF && strcmp(str,"="))
            {
                if(str[0] >= '0' && str[0] <= '9')
                {
                    len = strlen(str);
                    for(j = 0;j < len;j++)
                    {
                        a[j] = str[j] - 48;
                    }
                }
                else if(strcmp(str,"+") == 0)
                {
                    for(j = 0;j < len;j++)
                    {
                        sum = sum + a[j]*pow(10,len - 1 - j);
                    }

                    len = 0;
                }
                else
                {
                    for(j = 0;j < 10;j++)
                    {
                        if(strcmp(str,b[j]) == 0)
                        {
                            a[len++] = j;
                            break;
                        }
                    }
                }
            }
            if(strcmp(str,"=") == 0)
            {
                for(j = 0;j < len;j++)
                {
                    sum += a[j]*pow(10,len - 1 - j);
                }
                printf("%d\n",sum);
            }
        }
        else
        {
            while(scanf("%s",str) != EOF && strcmp(str,"="))
            {
                if(str[0] >= '0' && str[0] <= '9')
                {
                    len = strlen(str);
                    for(j = 0;j < len;j++)
                    {
                        a[j] = str[j] - 48;
                    }
                }
                else if(strcmp(str,"+") == 0)
                {
                    for(j = 0;j < len;j++)
                    {
                        sum = sum + a[j]*pow(10,len - 1 - j);
                    }
                    len = 0;
                }
                else
                {
                    for(j = 0;j < 10;j++)
                    {
                        if(strcmp(str,b[j]) == 0)
                        {
                            a[len++] = j;
                            break;
                        }
                    }
                }
            }
            if(strcmp(str,"=") == 0)
            {
                for(j = 0;j < len;j++)
                {
                    sum += a[j]*pow(10,len - 1 - j);
                }
                while (sum >= 10)
                {
                    printf("%s ",b[sum/10]);
                    sum%=10;
                }
                printf("%s\n",b[sum]);
            }
        }
    }

    return 0;
}

Double click to view unformatted code.


Back to problem 16