View Code of Problem 16

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<stdbool.h>
typedef struct{
	char name[20];
	int flag;
}Children;
int a[1000010];
int num[100000];
int max(int a,int b){
	return a>b?a:b;
}
int main(){
	int n;
	int flag;
	char s[2000];
	int num1,num2;
	while(scanf("%d",&n)!=EOF){
		
		char temp[10][10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
		while(n--){
			scanf("%d",&flag);
			num1=0;num2=0;
			int count=0;
			while(1){
				scanf("%s",&s);
				
				if(strcmp(s,"=")==0){
					break;
				}
				if(strcmp(s,"+")==0){
					count=1;
					continue;
				}
				if(s[0]>='0'&&s[0]<='9'){
					int len=strlen(s);
					for(int i=0;i<len;i++){
						if(count==0){
							num1=num1*10+s[i]-'0';
						}else{
							num2=num2*10+s[i]-'0';
						}
					}
				}else{
					
					for(int i=0;i<10;i++){
						if(strcmp(s,temp[i])==0){
							if(count==0){
								num1=num1*10+i;
								break;
							}else{
								num2=num2*10+i;
								break;
							}
						}
					}
				}
			}
			
			if(flag==0){
				printf("%d\n",num1+num2);
			}else{
				int t=num1+num2;
				int pos=0;
				while(t>0){
					num[pos]=t%10;
					pos++;
					t/=10;
				}	
				for(int i=pos-1;i>0;i--){
						printf("%s ",temp[num[i]]);
				}
				printf("%s\n",temp[num[0]]);
			}
		}
		
	}
} 




	

Double click to view unformatted code.


Back to problem 16