} //отрицание не влияет тк если один отр, то это отрицание будет, если 2 то сложение public static string operator -(Cloud x1, Cloud x2) { if (x1.digits.Count > x2.digits.Count) { int temp = 0; Cloud result = new Cloud(""); //List<int> tempest = new List<int>(); for (int i = 0; i < x1.digits.Count; i++) { if (x2.digits.Count - 1 >= i) { if ((x1.digits[i] - x2.digits[i]).ToString().Length < 0) { if (temp == 1) { result.digits.Add(1000000000 - (x1.digits[i] - x2.digits[i]) - temp); temp = 0; } else { result.digits.Add(1000000000 - (x1.digits[i] - x2.digits[i])); } temp = 1; } else { if (temp == 1) { result.digits.Add((x1.digits[i] - x2.digits[i]) - temp); temp = 0; } else { result.digits.Add(x1.digits[i] - x2.digits[i]); } } } } return(result.Display()); } else if (x1.digits.Count < x2.digits.Count) { int temp = 0; Cloud result = new Cloud(""); //List<int> tempest = new List<int>(); for (int i = 0; i < x2.digits.Count; i++) { if (x1.digits.Count - 1 >= i) { if ((x1.digits[i] + x2.digits[i]).ToString().Length > x1.digits[i].ToString().Length) { if (temp == 1) { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1)) + 1); temp = 0; } else { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1))); } temp = 1; } else { if (temp == 1) { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1)) + 1); } else { result.digits.Add(x1.digits[i] + x2.digits[i]); } } } } return(result.Display()); } else { int temp = 0; Cloud result = new Cloud(""); //List<int> tempest = new List<int>(); for (int i = 0; i < x1.digits.Count; i++) { if ((x1.digits[i] + x2.digits[i]).ToString().Length > x1.digits[i].ToString().Length) { if (temp == 1) { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1)) + 1); temp = 0; } else { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1))); } temp = 1; } else { if (temp == 1) { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1)) + 1); } else { result.digits.Add(x1.digits[i] + x2.digits[i]); } } } return(result.Display()); } }
public static string operator +(Cloud x1, Cloud x2) { if (x1.digits.Count > x2.digits.Count) { int temp = 0; Cloud result = new Cloud(""); //List<int> tempest = new List<int>(); for (int i = 0; i < x1.digits.Count; i++) { if (x2.digits.Count - 1 >= i) { if ((x1.digits[i] + x2.digits[i]).ToString().Length > x1.digits[i].ToString().Length) { if (temp == 1) { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1)) + 1); temp = 0; } else { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1))); } temp = 1; } else { if (temp == 1) { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1)) + 1); temp = 0; } else { result.digits.Add(x1.digits[i] + x2.digits[i]); } } } } return(result.Display()); } else if (x1.digits.Count < x2.digits.Count) { int temp = 0; Cloud result = new Cloud(""); //List<int> tempest = new List<int>(); for (int i = 0; i < x2.digits.Count; i++) { if (x1.digits.Count - 1 >= i) { if ((x1.digits[i] + x2.digits[i]).ToString().Length > x1.digits[i].ToString().Length) { if (temp == 1) { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1)) + 1); temp = 0; } else { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1))); } temp = 1; } else { if (temp == 1) { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1)) + 1); } else { result.digits.Add(x1.digits[i] + x2.digits[i]); } } } } return(result.Display()); } else { int temp = 0; Cloud result = new Cloud(""); //List<int> tempest = new List<int>(); for (int i = 0; i < x1.digits.Count; i++) { if ((x1.digits[i] + x2.digits[i]).ToString().Length > x1.digits[i].ToString().Length) { if (temp == 1) { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1)) + 1); temp = 0; } else { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1))); } temp = 1; } else { if (temp == 1) { result.digits.Add(int.Parse((x1.digits[i] + x2.digits[i]).ToString().Substring(1)) + 1); } else { result.digits.Add(x1.digits[i] + x2.digits[i]); } } } return(result.Display()); } } //отрицание не влияет тк если один отр, то это отрицание будет, если 2 то сложение