View difference between Paste ID: BRy8eYKY and j4ZzdYTX
SHOW: | | - or go back to the newest paste.
1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6
7
namespace _08_SumOfArrayOfDigits
8
{
9
    class Program
10
    {
11
        static void PrintArray(List<int> list)
12
        {            
13
            //list.Reverse();
14
            foreach (var item in list)
15
            {
16
                Console.Write(item);
17
            }
18
        }
19
        static List<int> SumDigits(byte[] firstArray, byte[] secondArray)
20
        {
21
            List<int> resultArray = new List<int>();
22
            int remainder = 0;
23
            int biggerLength = firstArray.Length < secondArray.Length ? 
24
                secondArray.Length : firstArray.Length;
25
26
            int firstArrayLength = firstArray.Length;
27
            int secondArrayLength = secondArray.Length;
28
            
29
30
            for (int index = 0; index < biggerLength ; index++)
31
            {
32
                //Така можеш с минимални промени да започнеш достъпването на масивите
33
                //от последния им елемент към първия.
34
                int firstArrayDigit = firstArrayLength - index -1 >= 0 ?
35
                    firstArray[firstArrayLength - index -1] : 0;
36
                int secondArrayDigit = secondArrayLength - index -1 >= 0 ?
37
                    secondArray[secondArrayLength - index -1] : 0;
38
39
                int digit = firstArrayDigit + secondArrayDigit + remainder;
40
                remainder = digit / 10; 
41
 
42
                //Можеш да позлваш  resultArray.Insert(0, digit) вместо Add
43
                // Тогава няма да имаш нужда да обръщаш масива по-долу.
44
                resultArray.Add(digit % 10);
45
            }
46
47
            if (remainder > 0)
48
            {
49
                //Ако използваш Insert горе, трябва да го изпозлваш и тук
50
                resultArray.Add(remainder);
51
            }
52
            //Обърни масива тук, а не в "PrintArray" метода. Защо? Ами :
53-
            // Първо: В идеалният случай, методът ти трябва да  прави едно нещо - да принтира например.
53+
            // Първо: В идеалният случай, методът ти трябва да  прави едно нещо -
54
            //да принтира, например.
55
            //Твоят метод реално прави две неща: обръща масив(1) и тогава го принтира(2).
56
            //Второ: Името на метода ти е заблуждаващо - казва се "PrintArray", а
57
            // името му би трябвало да бъде: "ReverseAndPrintArray"
58
            //Ако някой друг (или ти след време) реши да го преизползва ще очаква от 
59
            // метода един резултат, но ще получи друг.
60
            resultArray.Reverse();
61
62
            return resultArray;
63
        }
64
        static void Main()
65
        {
66
            byte[] num1 = { 1,6 };
67
            byte[] num2 = { 5 };
68
69
            PrintArray(SumDigits(num1, num2));
70
            Console.WriteLine();
71
        }
72
        
73
    }
74
}