View Code of Problem 11

#include<iostream>
#include<vector>
#include<string>
using namespace std;
struct MyStruct
{
	int a;
	int b;
};

struct Ret
{
	int x_a,x_b;
	int y_a,y_b;
	int z_a,z_b;
};

int main() {
	int t;
	int flag = 1;
	vector<MyStruct> X_num;
	vector<MyStruct> Y_num;
	vector<MyStruct> Z_num;
	vector<Ret> ret;
	while (cin >> t && t != 0) {
		string str;
		getchar();
		while (t--) {			
			getline(cin, str);
			for (int i = 0;i < str.length();i += 6) {
				if (str[i + 2] == 'X') {
					X_num.push_back({ str[i] - '0',str[i + 4] - '0' });
					if (str[i + 4] - '0' >= 1) {
						X_num[X_num.size() - 1].a = X_num[X_num.size() - 1].a*X_num[X_num.size() - 1].b;
						X_num[X_num.size() - 1].b -= 1;
					}
				}
				else if (str[i + 2] == 'Y') {
					Y_num.push_back({ str[i] - '0',str[i + 4] - '0' });
					if (str[i + 4] - '0' >= 1) {
						Y_num[Y_num.size() - 1].a = Y_num[Y_num.size() - 1].a*Y_num[Y_num.size() - 1].b;
						Y_num[Y_num.size() - 1].b -= 1;
					}
				}
				else {
					Z_num.push_back({ str[i] - '0',str[i + 4] - '0' });
					if (str[i + 4] - '0' >= 1) {
						Z_num[Z_num.size() - 1].a = Z_num[Z_num.size() - 1].a*Z_num[Z_num.size() - 1].b;
						Z_num[Z_num.size() - 1].b -= 1;
					}
				}
			}
			ret.push_back({ 0,0,0,0,0,0 });
			if (X_num.size() != 0)
				ret[ret.size() - 1].x_b = X_num[0].b;
			if (Y_num.size() != 0)
				ret[ret.size() - 1].y_b = Y_num[0].b;
			if (Z_num.size() != 0)
				ret[ret.size() - 1].z_b = Z_num[0].b;

			for (int i = 0;i < X_num.size();i++) {
				ret[ret.size() - 1].x_a += X_num[i].a;
			}
			for (int i = 0;i < Y_num.size();i++) {
				ret[ret.size() - 1].y_a += Y_num[i].a;
			}
			for (int i = 0;i < Z_num.size();i++) {
				ret[ret.size() - 1].z_a += Z_num[i].a;
			}
			X_num.clear();
			Y_num.clear();
			Z_num.clear();
		}	
		cout << "Case #" << flag << ":" << endl;
		for (int i = 0;i < ret.size();i++) {
			if (ret[i].x_a != 0)
				cout << ret[i].x_a;
			if(ret[i].x_b!=0)
				cout<< " * " << "X" << " ^ " << ret[i].x_b;
			if (ret[i].x_a != 0 && (ret[i].y_a != 0 || ret[i].z_a != 0))
				cout << " + ";
			if (ret[i].y_a != 0)
				cout << ret[i].y_a;
			if (ret[i].y_b != 0)
				cout << " * " << "Y" << " ^ " << ret[i].y_b;
			if (ret[i].y_a != 0 && ret[i].z_a != 0)
				cout << " + ";
			if (ret[i].z_a != 0)
				cout << ret[i].z_a;
			if (ret[i].z_b != 0)
				cout << " * " << "Z" << " ^ " << ret[i].z_b;
			cout << endl;
		}
		flag++;
		ret.clear();
	}
	
	return 0;
}

Double click to view unformatted code.


Back to problem 11