Beispiel #1
0
void BigInt::removeNumbersFromNumbers(const ContainerType& subtrahendNumbers, ContainerType& minuendNumbers) const
{
	for (int currentRank = 0; currentRank < subtrahendNumbers.size(); currentRank++)
	{
		int minuendDigit = minuendNumbers[currentRank];
		int subtrahendDigit = subtrahendNumbers[currentRank];

		if (minuendDigit < subtrahendDigit)
		{
			minuendDigit += kBaseValue;

			int floatRank = currentRank + 1;
			do
			{
				if (minuendNumbers[floatRank])
				{
					minuendNumbers[floatRank]--;
					break;
				}
				else
				{
					minuendNumbers[floatRank] = kBaseValue - 1;
				}
				floatRank++;
			} 
			while (floatRank < minuendNumbers.size());

			if (floatRank == minuendNumbers.size() - 1 && 0 == minuendNumbers[floatRank])
			{
				minuendNumbers.pop_back();
			}
		}
		minuendNumbers[currentRank] = minuendDigit - subtrahendDigit;
	}
}
	void truncate_entries() {
		while(entries.size() > entries_max) {
			entries.pop_back();
		}
	}