//Bài làm của nhóm 31, gồm 5 thành viên: //Nguyễn Quý Danh 09520032 //Nguyễn Trung Việt 10520649 //Lưu Nguyễn Hữu Đức 10520210 //Võ Huỳnh Đức Huy 10520461 //Đỗ Văn Tuấn 10520312 static void Main(string[] args) { string x, y; try { //nhập từ cmd x = args[0]; y = args[1]; } catch { //nhập từ chương trình x = Console.ReadLine(); y = Console.ReadLine(); } //nếu có số nhập vào không hợp lệ thì thông báo rồi thoát khỏi chương trình if (!Utilities.Test(x, y)) { Console.ReadLine(); return; } //khởi tạo hai đối tượnng BigInts a = new BigInts(x); BigInts b = new BigInts(y); //thực hiện phép cộng a.Add(b); //xuất kết quả ra màn hình Console.WriteLine(x + " + " + y + " = " + Utilities.Reverse(a.show())); Console.ReadLine(); }
//hàm cộng dồn thêm một số nguyên dương public void Add(BigInts x) { string k = x.d; string kq = ""; int i, n, s, len = (d.Length < k.Length) ? d.Length : k.Length; //len = chiều dài của số nhỏ hơn for (i = n = s = 0; i < len; i++) //n là số dùng để nhớ, s là số dùng để lưu tổng tạm thời { s = int.Parse(d[i].ToString()) + int.Parse(k[i].ToString()) + n; //cộng chữ số với nhau và cộng thêm số nhớ kq += (s % 10).ToString(); n = s / 10; } while (i < d.Length) { s = int.Parse(d[i].ToString()) + n; //cộng chữ số với nhau và cộng thêm số nhớ kq += (s % 10).ToString(); n = s / 10; i++; } while (i < k.Length) { s = int.Parse(k[i].ToString()) + n; //cộng chữ số với nhau và cộng thêm số nhớ kq += (s % 10).ToString(); n = s / 10; i++; } if (n > 0) kq += n.ToString(); this.d = kq; }