Считая, что в этих строках находятся очень длинные числа, сформируйте третью строку- сумму этих чисел. - C#
Формулировка задачи:
Вот сама задача: Даны две символьные строки, состоящие только из цифр (длина каждой более 10 символов). Считая, что в этих строках находятся очень длинные числа, сформируйте третью строку- сумму этих чисел.
P.S. считает лишь маленькое значение чисел, а по условию задачи у меня должно быть введено число больше 10 значений, но постоянно вылазит ошибка..
Console.WriteLine("Введите первое число");
string S1 = Console.ReadLine();
int a = int.Parse(S1);
Console.WriteLine("Введите второе число");
string S2 = Console.ReadLine();
int b = int.Parse(S2);
int c = a + b;
Console.WriteLine(a.ToString() + " + " + b.ToString() + " = " + c.ToString());
Console.ReadLine();Решение задачи: «Считая, что в этих строках находятся очень длинные числа, сформируйте третью строку- сумму этих чисел.»
textual
Листинг программы
public static string Add(string a, string b)
{
//делаем строки одинаковой длины, добавляя в начало короткой нужное количество нулей
if (a.Length < b.Length) a = new string('0', b.Length - a.Length) + a;
if (a.Length > b.Length) b = new string('0', a.Length - b.Length) + b;
//объявляем строку суммы
string sumStr = string.Empty;
//sumDigits - сумма соответствующих разрядов числа
//over - остаток, т.е. единица, переходящая в рязряд, если сумма предыдущих разрядов числа >=10
int over = 0, sumDigits;
//перебираем символы от последнего к первому
for (int i = a.Length - 1; i >= 0; i--)
{
//сумма соответствующих разрядов числа + остаток от предыдущей суммы
sumDigits = int.Parse(a[i].ToString()) + int.Parse(b[i].ToString()) + over;
//к строке суммы спереди добавляем количество единиц в sumDigits
sumStr = sumDigits % 10 + sumStr;
//а количество десятков идет в остаток
over = sumDigits / 10;
}
//если сумма старших разрядов >=10, то к сумме спереди добавляем 1
if (over > 0) sumStr = "1" + sumStr;
//возвращаем строку суммы
return sumStr;
}