Advertisement
JavaFan

Multiply Polinoms

Jan 4th, 2014
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace _12.SumMultPolinoms
  8. {
  9. class Program
  10. {
  11. // Extend the program to support also subtraction and multiplication of polynomials.
  12.  
  13. static decimal[] addArraysOfDigits(decimal[] arr1, decimal[] arr2)
  14. {
  15. int maxLen = arr1.Length > arr2.Length ? arr1.Length : arr2.Length;
  16.  
  17. decimal[] tempArr = new decimal[maxLen];
  18. decimal[] sum = new decimal[maxLen];
  19.  
  20. if (arr1.Length > arr2.Length)
  21. {
  22. for (int i = 0; i < maxLen; i++)
  23. {
  24. if (i < arr2.Length)
  25. {
  26. tempArr[i] = arr2[i];
  27. }
  28. else
  29. {
  30. tempArr[i] = 0;
  31. }
  32. }
  33.  
  34. for (int i = 0; i < sum.Length; i++)
  35. {
  36. if (i < arr1.Length)
  37. {
  38. sum[i] = (arr1[i] + tempArr[i]);
  39. }
  40. }
  41. }
  42. else
  43. {
  44. for (int i = 0; i < maxLen; i++)
  45. {
  46. if (i < arr1.Length)
  47. {
  48. tempArr[i] = arr1[i];
  49. }
  50. else
  51. {
  52. tempArr[i] = 0;
  53. }
  54. }
  55.  
  56. for (int i = 0; i < sum.Length; i++)
  57. {
  58. if (i < arr2.Length)
  59. {
  60. sum[i] = (arr2[i] + tempArr[i]);
  61. }
  62. }
  63. }
  64.  
  65. return sum;
  66. }
  67.  
  68. static decimal[] substractArraysOfDigits(decimal[] arr1, decimal[] arr2)
  69. {
  70. int len = arr1.Length > arr2.Length ? arr1.Length : arr2.Length;
  71. int shortLen = arr1.Length < arr2.Length ? arr1.Length : arr2.Length;
  72.  
  73. decimal[] sum = new decimal[len];
  74.  
  75. for (int i = 0; i < shortLen; i++)
  76. {
  77. sum[i] = (arr1[i] - arr2[i]);
  78. }
  79.  
  80. if (arr2.Length > arr1.Length)
  81. {
  82. for (int i = shortLen; i < len; i++)
  83. {
  84. sum[i] = -arr2[i];
  85. }
  86. }
  87. else
  88. {
  89. for (int i = shortLen; i < len; i++)
  90. {
  91. sum[i] = arr1[i];
  92. }
  93. }
  94.  
  95. return sum;
  96. }
  97.  
  98. static decimal[] multiplyArraysOfDigits(decimal[] arr1, decimal[] arr2)
  99. {
  100.  
  101. int len = arr1.Length + arr2.Length;
  102.  
  103. decimal[] sum = new decimal[len];
  104.  
  105. for (int i = 0; i < arr1.Length; i++)
  106. {
  107. for (int j = 0; j < arr2.Length; j++)
  108. {
  109. if (arr1[i] != 0 && arr2[j] != 0)
  110. {
  111. sum[i + j] += arr1[i] * arr2[j];
  112. }
  113. }
  114. }
  115.  
  116. return sum;
  117. }
  118.  
  119. static void PrintPolinomial(decimal[] polinomial)
  120. {
  121. bool begining = false;
  122. for (int i = polinomial.Length - 1; i >= 0; i--)
  123. {
  124. if (polinomial[i] > 0)
  125. {
  126. if (begining == false)
  127. {
  128. Console.Write("{1}x^{0}", i, polinomial[i]);
  129. begining = true;
  130. }
  131. else
  132. {
  133. Console.Write(" +{1}x^{0}", i, polinomial[i]);
  134. }
  135. }
  136. else if (polinomial[i] < 0)
  137. {
  138. Console.Write(" {1}x^{0}", i, polinomial[i]);
  139. if (begining == false)
  140. {
  141. begining = true;
  142. }
  143. }
  144. }
  145. Console.WriteLine();
  146. Console.WriteLine();
  147. }
  148.  
  149. static void Main(string[] args)
  150. {
  151. decimal[] arr1 = { 0, 2, 3, 0 };
  152. Console.WriteLine("Array 1: " + string.Join("\t", arr1));
  153. decimal[] arr2 = { 0, 4, 0 ,2 };
  154. Console.WriteLine("Array 2: " + string.Join("\t", arr2));
  155. Console.WriteLine();
  156.  
  157.  
  158. // add
  159. Console.WriteLine("Add\n");
  160. decimal[] sum = addArraysOfDigits(arr1, arr2);
  161. Console.WriteLine("Array 3: " + string.Join("\t", sum));
  162. PrintPolinomial(sum);
  163.  
  164. // substract
  165. Console.WriteLine("Substracting...\n");
  166. decimal[] substract = substractArraysOfDigits(arr1, arr2);
  167. Console.WriteLine("Array 4: " + string.Join("\t", substract));
  168. PrintPolinomial(substract);
  169.  
  170. decimal[] substract2 = substractArraysOfDigits(arr2, arr1);
  171. Console.WriteLine("Array 5: " + string.Join("\t", substract2));
  172. PrintPolinomial(substract2);
  173.  
  174. // multiply
  175. Console.WriteLine("Multiply...\n");
  176. decimal[] multiply = multiplyArraysOfDigits(arr1, arr2);
  177. Console.WriteLine("Array 6: " + string.Join("\t", multiply));
  178. PrintPolinomial(multiply);
  179.  
  180. decimal[] multiply2 = multiplyArraysOfDigits(arr2, arr1);
  181. Console.WriteLine("Array 7: " + string.Join("\t", multiply2));
  182. PrintPolinomial(multiply2);
  183.  
  184. }
  185. }
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement