Advertisement
zlatkov

AddSubtractMultiplyPolynomials

Jan 13th, 2013
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace AddSubtractMultiplyPolynomials
  8. {
  9.     class Polynomial
  10.     {
  11.         private List<double> coefficients;
  12.  
  13.         public Polynomial()
  14.         {
  15.             coefficients = new List<double>();
  16.         }
  17.  
  18.         public int PolynomialDegree
  19.         {
  20.             get
  21.             {
  22.                 return coefficients.Count - 1;
  23.             }
  24.         }
  25.  
  26.         public double this[int index]
  27.         {
  28.             get
  29.             {
  30.                 if (index >= 0 && index < coefficients.Count)
  31.                 {
  32.                     return coefficients[index];
  33.                 }
  34.                 else
  35.                 {
  36.                     return 0.0;
  37.                 }
  38.             }
  39.  
  40.             set
  41.             {
  42.                 if (index >= 0 && index < coefficients.Count)
  43.                 {
  44.                     coefficients[index] = value;
  45.                 }
  46.             }
  47.         }
  48.  
  49.         private void AddCoefficient(double coef)
  50.         {
  51.             coefficients.Add(coef);
  52.         }
  53.  
  54.         public void ReadPolynomial()
  55.         {
  56.             Console.Write("Enter the polynomial degree: ");
  57.             int polynomialDegree = int.Parse(Console.ReadLine());
  58.  
  59.             Console.WriteLine("Enter the polynomial coefficients:");
  60.             for (int i = 0; i <= polynomialDegree; ++i)
  61.             {
  62.                 coefficients.Add(double.Parse(Console.ReadLine()));
  63.             }
  64.         }
  65.  
  66.         private void Normalize()
  67.         {
  68.             if (PolynomialDegree >= 0)
  69.             {
  70.                 while (coefficients[PolynomialDegree] == 0.0)
  71.                 {
  72.                     coefficients.RemoveAt(PolynomialDegree);
  73.  
  74.                 }
  75.             }
  76.         }
  77.  
  78.         public static Polynomial operator +(Polynomial x, Polynomial y)
  79.         {
  80.             int biggerDegree = Math.Max(x.PolynomialDegree, y.PolynomialDegree);
  81.             Polynomial result = new Polynomial();
  82.  
  83.             double tmp = 0.0;
  84.             for (int i = 0; i <= biggerDegree; ++i)
  85.             {
  86.                 tmp = 0.0;
  87.                 if (i <= x.PolynomialDegree)
  88.                 {
  89.                     tmp += x[i];
  90.                 }
  91.                 if (i <= y.PolynomialDegree)
  92.                 {
  93.                     tmp += y[i];
  94.                 }
  95.  
  96.                 result.AddCoefficient(tmp);
  97.             }
  98.  
  99.             result.Normalize();
  100.             return result;
  101.         }
  102.  
  103.         public static Polynomial operator -(Polynomial x)
  104.         {
  105.             Polynomial result = new Polynomial();
  106.             for (int i = 0; i <= x.PolynomialDegree; ++i)
  107.             {
  108.                 result.AddCoefficient(-x[i]);
  109.             }
  110.             return result;
  111.         }
  112.  
  113.         public static Polynomial operator -(Polynomial x, Polynomial y)
  114.         {
  115.             Polynomial result = x + (-y);
  116.             return result;
  117.         }
  118.  
  119.         public static Polynomial operator *(Polynomial x, Polynomial y)
  120.         {
  121.             Polynomial result = new Polynomial();
  122.             for (int i = 0; i <= x.PolynomialDegree; ++i)
  123.             {
  124.                 for (int j = 0; j <= y.PolynomialDegree; ++j)
  125.                 {
  126.                     if (result.PolynomialDegree < i + j)
  127.                     {
  128.                         result.AddCoefficient(0.0);
  129.                     }
  130.                     result[i + j] += x[i] * y[j];
  131.                 }
  132.             }
  133.             result.Normalize();
  134.             return result;
  135.         }
  136.  
  137.         public override string ToString()
  138.         {
  139.             StringBuilder result = new StringBuilder("");
  140.             for (int i = PolynomialDegree; i >= 0; --i)
  141.             {
  142.                 if (i != PolynomialDegree)
  143.                 {
  144.                     result.Append(" ");
  145.                 }
  146.                 result.Append(coefficients[i].ToString());
  147.             }
  148.             return result.ToString();
  149.         }
  150.     }
  151.     class AddSubtractMultiplyPolynomial
  152.     {
  153.         static void Main(string[] args)
  154.         {
  155.             Polynomial a = new Polynomial();
  156.             Polynomial b = new Polynomial();
  157.  
  158.             a.ReadPolynomial();
  159.             b.ReadPolynomial();
  160.  
  161.             Polynomial r = a + b;
  162.             Console.WriteLine("Addition: " + r.ToString());
  163.             r = a - b;
  164.             Console.WriteLine("Subtraction: " + r.ToString());
  165.             r = a * b;
  166.             Console.WriteLine("Multiplication: " + r.ToString());
  167.  
  168.         }
  169.     }
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement