Код: Выделить всё
public BigInteger Add(BigInteger another)
{
var transposition = 0;
var i = 0;
var maxDischarge = Math.Max(_numbers.Length, another._numbers.Length);
var res = new int[maxDischarge + 1];
while (i < maxDischarge || transposition != 0)
{
var sum = transposition;
if (i < _numbers.Length)
{
sum += _numbers[i];
}
if (i < another._numbers.Length)
{
sum += another._numbers[i];
}
res[i] = sum % 10;
transposition = sum / 10;
i++;
}
return new BigInteger(res, _isNeg);
}
public BigInteger Sub(BigInteger another)
{
var transition = 0;
var i = 0;
var maxDischarge = Math.Max(_numbers.Length, another._numbers.Length);
var res = new int[maxDischarge];
while (i < _numbers.Length || i < another._numbers.Length)
{
var sub = -transition;
if (_numbers.Length > another._numbers.Length)
{
if (i < _numbers.Length)
{
sub += _numbers[i];
}
if (i < another._numbers.Length)
{
sub -= another._numbers[i];
}
if (sub < 0)
{
sub += 10;
transition = 1;
}
else // by chat gpt
{
transition = 0;
}
res[i] = sub;
i++;
}
else if (_numbers.Length < another._numbers.Length)
{
if (i < another._numbers.Length)
{
sub += another._numbers[i];
}
if (i < _numbers.Length)
{
sub -= _numbers[i];
}
if (sub < 0)
{
sub += 10;
transition = 1;
}
else // by chat gpt
{
transition = 0;
}
res[i] = sub;
i++;
}
}
return new BigInteger(res, _isNeg);
}
}
Я добавил bool Private readonly bool _isNeg; и в методе ToString я проверяю, есть ли число _isNeg
Подробнее здесь: https://stackoverflow.com/questions/783 ... on-c-sharp