View Code of Problem 11

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

typedef struct{
	int coefficient;//系数 
	int character;//字母 
	int exponential;//指数 
}Monomial;//单项式 

int fun(Monomial m){
	int coefficient;
	int exponential;
	if(m.exponential!=-1&&m.coefficient!=0){
		if(m.exponential==0||m.exponential==1){		
			coefficient = m.coefficient;
			printf("%d",coefficient);
		}else{
			coefficient = m.coefficient*m.exponential;
			exponential = m.exponential-1;
			printf("%d * %c ^ %d",coefficient,m.character,exponential);
		}
		return 1;
	}
	return 0;
}

int main(){
	int t,count=1;
	char s[2000];
	while(scanf("%d",&t)!=EOF&&t!=0){
		getchar();
		printf("Case #%d:\n",count++);
		for(int i=0;i<t;i++){
			scanf("%[^\n]",s); 
			getchar();
			Monomial m[3];
			m[0].character='X';
			m[1].character='Y';
			m[2].character='Z';
			for(int j=0;j<3;j++){
				m[j].coefficient=0;
				m[j].exponential=-1;
			}	
			for(int j=2;j<strlen(s);j+=6){
				m[s[j]-'X'].coefficient+=s[j-2]-'0';
				m[s[j]-'X'].exponential=s[j+2]-'0';
			}
			fun(m[0]);
			if(m[1].exponential!=-1){
				if(m[0].exponential!=-1){
					printf(" + ");
				}
				fun(m[1]);
			}
			if(m[2].exponential!=-1){
				if(m[0].exponential!=-1||m[1].exponential!=-1){
					printf(" + ");
				}
				fun(m[2]);
			}
			printf("\n");
		}
	}
}

Double click to view unformatted code.


Back to problem 11