View Code of Problem 11

    #include<stdio.h>

    struct fas
    {
    	int q;
    	char change;
    	int h;
    };
    void qianyi(struct fas a[], int j, int n){
    	int i;
    	for (i = j; i < n-1; i++)
    		a[i] = a[i + 1];
    }
    int main()
    {
    	struct fas a[100];
    	int t,i,j,k,n,m=1;
    	char c;
    	while (m)
    	{
    		scanf("%d", &t);
    		if (t == 0)
    			break;
    		printf("Case #%d:\n", m++);
    		for (k = 0; k < t; k++)
    		{
    			n = 0;
    			while (1)
    			{
    				scanf("%d %c %d", &a[n].q, &a[n].change, &a[n].h);
    				n++;
    				c = getchar();
    				if (c == '\n')break;
    			}
    			for (i = 0; i < n; i++)
    			{
    				for (j = i + 1; j < n; j++)
    					if (a[i].change == a[j].change)
    					{
    					a[i].q += a[j].q;
    					qianyi(a, j, n);
    					n--; i--;
    					break;
    					}
    			}
    			for (i = 0; i < n; i++)
    			{
    				if (a[i].h != 0){
    					a[i].q *= a[i].h;
    					a[i].h--;
    				}
    			}
    			for (i = 0; i < n; i++){
    				if (i != n - 1){
    					if (a[i].h == 0)printf("%d", a[i].q);
    					else printf("%d * %c ^ %d", a[i].q, a[i].change, a[i].h);
    					printf(" + ");
    				}
    				else{
    					if (a[i].h == 0)printf("%d", a[i].q);
    					else printf("%d * %c ^ %d", a[i].q, a[i].change, a[i].h);
    				}
    			}
    			printf("\n");
    		}
    	}
    }

Double click to view unformatted code.


Back to problem 11