View Code of Problem 132

#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
using namespace std;
int main()
{
	string a, b;
	while (cin >> a >> b)
	{
		string z1;
		string z2;
		vector<char>res1;//整数部分和
		int i = 0;
		while (i < a.size())
		{
			if (a[i] == '.')
			{
				break;
			}
			i++;
		}
		vector<char>a1;
		vector<char>a2;
		vector<char>res;
		z1 = a.substr(0, i);
		int len1 = i;
		int cnt1 = a.size() - i;
		if (cnt1 == 0)
		{
			cnt1++;
			//a1.push_back('0');
		}
		for (int j = i + 1;j < a.size();j++)
			a1.push_back(a[j]);
		
		i = 0;
		while (i < b.size())
		{
			if (b[i] == '.')
			{
				break;
			}
			i++;
		}
		z2 = b.substr(0, i);
		int len2 = i;
		int cnt2 = b.size() - i;
		if (cnt2 == 0)
		{
			cnt2++;
			//a1.push_back('0');
		}
		if (len1 < len2)
		{
			string ss(len2 - len1, '0');
			z1 = ss + z1;
		}
		else
		{
			string ss(len1 - len2, '0');
			z2 = ss + z2;
		}
		//int carry = 0;
		
		
		for (int j = i + 1;j < b.size();j++)
			a2.push_back(b[j]);
		if (cnt1 < cnt2)
		{
			for (int k = 0;k < cnt2 - cnt1;k++)
				a1.push_back('0');
		}
		else
		{
			for (int k = 0;k < cnt1 - cnt2;k++)
				a2.push_back('0');
		}
		int carry = 0;
		for (int j = a1.size() - 1;j >= 0;j--)
		{
			
			int z = (a1[j] - '0' + a2[j] - '0' + carry) % 10;
			carry= (a1[j] - '0' + a2[j] - '0' + carry) /10;
			res.push_back(z + '0');
		}
		//if(carry!=0)
		for (int j = z1.size() - 1;j >= 0;j--)
		{
			int z = (z1[j] - '0' + z2[j] - '0' + carry) % 10;
			carry = (z1[j] - '0' + z2[j] - '0' + carry) / 10;
			res1.push_back(z + '0');
		}
		if (carry != 0)
			cout << "1";
		for (int j = res1.size() - 1;j >= 0;j--)
			cout << res1[j];
		for (int j = res.size() - 1;j >= 0;j--)
		{
			if (res[j] != '0')
			{
				cout << ".";
				break;
			}
		}
		int flag = 0;
		for (int j = res.size() - 1;j >= 0;j--)
		{
			if(res[j]!='0'||flag==1)
				cout << res[j];
		}
		cout << endl;
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 132