Разработать класс, перегрузить в нем операции сложения, вычитания и деления - C#
Формулировка задачи:
Пожалуйста помогите решить задачу:
Требуется разработать класс, перегрузить в нем указанные операции, написать программу, использующую этот класс. В методах класса по необходимости следует использовать исключения.
С помощью коллекций. Реализовать операции +, -, / десятичного числа с любым количеством цифр в целой и дробной части.
Решение задачи: «Разработать класс, перегрузить в нем операции сложения, вычитания и деления»
textual
Листинг программы
using System;
namespace ConsoleApplication13
{
internal class Polynome
{
private readonly int[] _a;
public Polynome(string length)
{
_a = new int[Convert.ToInt32(length)];
}
public Polynome(params int[] koef)
{
int length = koef.Length;
_a = new int[length];
for (int i = 0; i < length; i++)
_a[i] = koef[length - i - 1];
}
public int Length
{
get { return _a.Length; }
}
public int this[int i]
{
get { return _a[i]; }
set { _a[i] = value; }
}
public override string ToString()
{
int i = 0;
var result = "";
foreach (var x in _a)
{
if (x != 0)
result = " + " + ((x == 1 ? "" : x.ToString()) + (i > 1 ? "x^" + i : i == 1 ? "x" : "")) + result;
i++;
}
return result.Substring(3, result.Length - 3);
}
public static Polynome operator +(Polynome lhs, Polynome rhs)
{
var polynome = new Polynome(Math.Max(lhs.Length, rhs.Length).ToString());
for (int i = 0; i < lhs.Length; i++)
polynome[i] = lhs[i];
for (int i = 0; i < rhs.Length; i++)
polynome[i] += rhs[i];
return polynome;
}
public static Polynome operator *(Polynome lhs, Polynome rhs)
{
var polynome = new Polynome((lhs.Length + rhs.Length - 1).ToString());
for (int i = 0; i < lhs.Length; i++)
for (int j = 0; j < rhs.Length; j++)
polynome[i + j] += lhs[i] * rhs[j];
return polynome;
}
}
internal class Program
{
private static void Main()
{
var a = new Polynome(1, 2, 3);
var b = new Polynome(1, 2);
var c = new Polynome(5);
Console.WriteLine("({0}) + ({1}) = {2}", a, b, a + b);
Console.WriteLine("({0}) * ({1}) = {2}", a, b, a * b);
Console.WriteLine("({0}) * ({1}) * ({2}) = {3}", a, b, c, a * b * c);
Console.ReadKey();
}
}
}