Считая, что в этих строках находятся очень длинные числа, сформируйте третью строку- сумму этих чисел. - 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;
}

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


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

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

13   голосов , оценка 4.077 из 5
Похожие ответы