Beispiel #1
0
        public static ListSN CongSN(ListSN A, ListSN B)
        {
            int intRemember = 0;
            int intDiff = A.Count - B.Count;
            if (intDiff > 0)
                for (int i = 0; i < intDiff; i++)
                    B.AddNext(0);
            else if (intDiff < 0)
            {
                intDiff = 0 - intDiff;
                for (int i = 0; i < intDiff; i++)
                    A.AddNext(0);
            }
            ListSN C = new ListSN();
            A.ToFirst();
            B.ToFirst();
            while (A.NodeCurrent != null && B.NodeCurrent != null)
            {
                int value = A.NodeCurrent.Value + B.NodeCurrent.Value + intRemember;
                C.AddNext(value % 10);
                intRemember = value / 10;
                A.ToNext();
                B.ToNext();
            }

            return C;
        }
Beispiel #2
0
 public static ListSN CongSN(ListSN firstNumber, ListSN secondNumber)
 {
     int intRemember = 0;
     int intDiff = firstNumber.Count - secondNumber.Count;
     // Nếu số nguyên A nhiều hơn số nguyên B 1,2,.. thì thêm các số 0 vào số B
     if (intDiff > 0)
         for (int i = 0; i < intDiff; i++)
             secondNumber.AddNext(0);
     // Nếu số nguyên A nhỏ hơn số nguyên B 1,2,.. thì thêm các số 0 vào số A
     else if (intDiff < 0)
     {
         intDiff = 0 - intDiff;
         for (int i = 0; i < intDiff; i++)
             firstNumber.AddNext(0);
     }
     // Tạo 1 list C mới
     ListSN resultNumber = new ListSN();
     // Chuyển nodeCurrent trong A về chữ số cuối cùng của chuỗi A
     firstNumber.ToFirst();
     // Chuyển nodeCurrent trong B về chữ số cuối cùng của chuỗi B
     secondNumber.ToFirst();
     // Nếu chữ số hiện tại mà NodeCurrent trong A và trong B có thì ta thực hiện cộng nó lại
     while (firstNumber.NodeCurrent != null && secondNumber.NodeCurrent != null)
     {
         // Cộng giá trị 2 chỉ số hiện tại trong A và B
         int value = firstNumber.NodeCurrent.Value + secondNumber.NodeCurrent.Value + intRemember;
         // Add số này vào chuỗi C, nếu số này lớn hơn 10 thì lấy phần dư thôi và nhớ lại 1
         resultNumber.AddNext(value % 10);
         // Lấy số nhớ
         intRemember = value / 10;
         // Chuyển tới chỉ số tiếp theo của số A và B
         firstNumber.ToNext();
         secondNumber.ToNext();
     }
     // Nếu số nhớ cuối cùng khác 0 thì Add thêm vào chuỗi C(chuỗi kết quả)
     if (intRemember != 0)
         resultNumber.AddNext(intRemember);
     return resultNumber;
 }