Считая, что в этих строках находятся очень длинные числа, сформируйте третью строку- сумму этих чисел. - C#

Узнай цену своей работы

Формулировка задачи:

Вот сама задача: Даны две символьные строки, состоящие только из цифр (длина каждой более 10 символов). Считая, что в этих строках находятся очень длинные числа, сформируйте третью строку- сумму этих чисел. P.S. считает лишь маленькое значение чисел, а по условию задачи у меня должно быть введено число больше 10 значений, но постоянно вылазит ошибка..
Листинг программы
  1. Console.WriteLine("Введите первое число");
  2. string S1 = Console.ReadLine();
  3. int a = int.Parse(S1);
  4. Console.WriteLine("Введите второе число");
  5. string S2 = Console.ReadLine();
  6. int b = int.Parse(S2);
  7. int c = a + b;
  8. Console.WriteLine(a.ToString() + " + " + b.ToString() + " = " + c.ToString());
  9. Console.ReadLine();

Решение задачи: «Считая, что в этих строках находятся очень длинные числа, сформируйте третью строку- сумму этих чисел.»

textual
Листинг программы
  1. public static string Add(string a, string b)
  2. {
  3.     //делаем строки одинаковой длины, добавляя в начало короткой нужное количество нулей
  4.     if (a.Length < b.Length) a = new string('0', b.Length - a.Length) + a;
  5.     if (a.Length > b.Length) b = new string('0', a.Length - b.Length) + b;
  6.     //объявляем строку суммы
  7.     string sumStr = string.Empty;
  8.     //sumDigits - сумма соответствующих разрядов числа
  9.     //over - остаток, т.е. единица, переходящая в рязряд, если сумма предыдущих разрядов числа >=10
  10.     int over = 0, sumDigits;
  11.     //перебираем символы от последнего к первому
  12.     for (int i = a.Length - 1; i >= 0; i--)
  13.     {
  14.         //сумма соответствующих разрядов числа + остаток от предыдущей суммы
  15.         sumDigits = int.Parse(a[i].ToString()) + int.Parse(b[i].ToString()) + over;
  16.         //к строке суммы спереди добавляем количество единиц в sumDigits
  17.         sumStr = sumDigits % 10 + sumStr;
  18.         //а количество десятков идет в остаток
  19.         over = sumDigits / 10;
  20.     }
  21.     //если сумма старших разрядов >=10, то к сумме спереди добавляем 1
  22.     if (over > 0) sumStr = "1" + sumStr;
  23.     //возвращаем строку суммы
  24.     return sumStr;
  25. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы