Venciity

[Jumpstart C#] Methods - 08.Sum

Mar 12th, 2014
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.55 KB | None | 0 0
  1. /*Напишете метод, който събира две положителни числа представени като масиви от цифри
  2.  * (всеки елемент arr[i] съдържа една цифра; последната цифра се пази в arr[0]).
  3.  * Всяко от двете числа може да има до 10000 на брой цифри.    */
  4. using System;
  5.     class Program
  6.     {
  7.         static byte[] Sum(byte[] n1, byte[] n2)
  8.         {
  9.             int maxLen = Math.Max(n1.Length, n2.Length);
  10.             byte[] result = new byte[maxLen + 1];
  11.  
  12.             int carry = 0;
  13.             int units = 0;
  14.  
  15.             for (int i = 0; i < result.Length; i++)
  16.             {
  17.                 int digitsSum = 0;
  18.  
  19.                 if (i < n1.Length)
  20.                 {
  21.                     digitsSum += n1[i];
  22.                 }
  23.                 if (i < n2.Length)
  24.                 {
  25.                     digitsSum += n2[i];
  26.                 }
  27.  
  28.                 digitsSum += carry;
  29.  
  30.                 carry = digitsSum / 10;
  31.                 units = digitsSum % 10;
  32.  
  33.                 result[i] = (byte)units;
  34.             }
  35.  
  36.             return result;
  37.         }
  38.  
  39.         static void Main()
  40.         {
  41.             byte[] n1 = { 0, 5, 3, 7, 1 }; // 17350
  42.             byte[] n2 = { 4, 6, 8, 8 }; // 8864
  43.  
  44.             byte[] sum = Sum(n1, n2);
  45.  
  46.             for (int i = sum.Length-1; i >= 0 ; i--)
  47.             {
  48.                 Console.Write(sum[i]);
  49.             }
  50.             Console.WriteLine();
  51.         }
  52.     }
Advertisement
Add Comment
Please, Sign In to add comment