Pekín cadena de prueba de la máquina, más sumador de punto y fácil * flotante, tenga en cuenta la manera fácil de finalización

La idea básica:

Si la terminación, puede reducir efectivamente la longitud;

 

Puntos clave:

No;

 

#include <iostream> 
#include <vector> 
#include <string> 
#include <sstream> 
#include <algoritmo> 
using namespace std; 

vector <string> carga (cadena s) { 
	int index; 
	cadena B; 
	vector <string> vec; 
	ss stringstream (s); 
	while (getline (ss, b,) '') { 
		vec.push_back (b); 
	} 
	Devolver vec; 
} 

Cadena add (cadena a, b string, int & ca) { 
	int max = -1; 
	cadena rn = ""; 
	si (a.size ()> B.Size ()) { 
		= max B.Size (); 
		rn = a.substr (max, a.size () - max); 
	} 
	Else if (a.size () <B.Size ()) { 
		= max a.size (); 
		= Max a.size (); 
	} 
	Int carry = 0; 
	res String = ""; 
	for (int i = max - 1; i> = 0; i--) { 
		int temp = (a [i] - '0') + (b [i] - '0') + carry; 
		res = char ( '0' + temp% 10) + res; 
		carry = temp / 10; 
	} 
	Ca = carry; 
	res + = rn; 
	while (! res.size () = 0 && res [res.size () - 1] == '0') 
		res.pop_back (); 
	res regresar; 
} 

Add_in cadena (cadena a, b string, int cn) { 
	inversa (a.begin (), a.end ()); 
	revertir (b.begin (), b.end ()); 
	int carry = CN; 
	res String = ""; 
	for (int i = 0; i <a.size () && i <B.Size ();
		res = res + char ( '0' + temp% 10); 
		carry = temp / 10;
	} 
	Si (res.size () <a.size ()) { 
		for (int i = res.size (); i <a.size (); i ++) { 
			si (carry == 0) 
				res + = a [ yo]; 
			else { 
				temp int = (a [i] - '0') + carry; 
				res + = char ( '0' + temp% 10); 
				carry = temp / 10; 
			} 
		} 
		Si (carry = 0) 
			res + = '1'; 
	} 
	Else if (res.size () <B.Size ()) { 
		for (int i = res.size (); i <B.Size (); i ++) { 
			si (carry == 0) 
				res + = b [yo]; 
			else { 
				int temp = (b [i] - '0') + carry; 
				res + = char ( '0' + temp% 10); 
				carry = temp / 10; 
		Si (carry!
	} 
	Else { 
		si (carry = 0) 
			res + = '1'; 
	} 
	Inversa (res.begin (), res.end ()); 
	res regresar; 
} 

Int main () { 
	string s1, s2; 
	while (cin >> s1 >> s2) { 
		vector <string> SS1 = carga (S1); 
		vector <string> SS2 = carga (s2); 
		int carry = 0; 
		res String = add (SS1 [1], SS2 [1], acarreo); 
		cadena res_in = add_in (SS1 [0], SS2 [0], acarreo); 
		res_in tribunal << << "" << res << endl; 
	} 
}

  

Supongo que te gusta

Origin www.cnblogs.com/songlinxuan/p/12460027.html
Recomendado
Clasificación