View Code of Problem 16

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

char a[10][10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
int ss = 0;

void pt(int value)
{
    if (value < 10) {
        if (ss > 0) {
            putchar(' ');
        }
        printf("%s", a[value]);
        ss++;
        return;
    }
    
    pt(value / 10);
    if (ss > 0) {
        putchar(' ');
    }
    printf("%s", a[value % 10]);
}

int main()
{
    int t;
    char s[20];
    scanf("%d", &t);
    while (t--) {
        int d;
        int a1 = 0, b1 = 0;
        int plus = 0;
        scanf("%d", &d);
        while (1) {
            scanf("%s", s);
            if (s[0] == '=') {
                if (d == 0) {
                    printf("%d\n", a1 + b1);
                }
                else {
                    ss = 0;
                    pt(a1 + b1);
                    putchar('\n');
                }
                break;
            }
            else if(s[0] == '+')
            {
                plus = 1;
            }
            else {
                int i;
                for (i = 0; i < 10; i++) {
                    if (strcmp(s, a[i]) == 0) {
                        break;
                    }
                }
                
                if (i == 10) {
                    i = atoi(s);
                }
                if(plus == 0)
                    a1 = a1 * 10 + i;
                else b1 = b1 * 10 + i;
            }
        }
    }
}

Double click to view unformatted code.


Back to problem 16