Пример #1
0
void process(int n)
{
	while(n/2)
	{
		pushB(n % 2);
		n /= 2;
	}
	pushB(n%2);
	while((n=popB())!=-1)
	{
		if(to>=M)
			showError(4);
		c[to++] = n + '0';
	}
}
Пример #2
0
void List::getSum(List & val1, List & val2)
{
	int d1, d2,carry = 0; //variables for the digits and the carry value
	Node *curr1; 
	Node *curr2;
	curr1 = val1.tail;
	curr2 = val2.tail;
	while (curr1 != val1.tail->next || curr2 != val2.tail->next || carry != 0)
	{
		if (curr1 == val1.tail->next)
			d1 = 0; //set d1 value to 0 if the list ended
		else
		{
			d1 = curr1->digit;
			curr1 = curr1->prev; //used to move through the list
		}
		
		if (curr2 == val2.tail->next)
			d2 = 0;
		else
		{
			d2 = curr2->digit;
			curr2 = curr2->prev;
		}
		
		if (d1 + d2 + carry>= 10)
		{
			pushB(d1 + d2 - 10 + carry); //push the sum of the two digits + the value they carrided)

			carry = 1;
		}
		else
		{
			pushB(d1 + d2 + carry);
			carry = 0;
		}
		
	}
}