Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.72 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace Task_3._1
  6. {
  7. class Polynom
  8. {
  9. public Dictionary<int, double> degrees; // Тут хранятся пары степень x -> коэффициент при данной степени
  10.  
  11. public Polynom() // Конструктор класса, задающий пустой полином
  12. {
  13. degrees = new Dictionary<int, double>();
  14. }
  15.  
  16. public Polynom(List<double> listDegrees) /* Конструктор класса, задающий полином,
  17. коэффициенты которого лежат в листе и соответствуют степеням x начиная с x^0 по порядку
  18. Кэф x^0, Кэф x^1...
  19. */
  20. {
  21. degrees = new Dictionary<int, double>();
  22. for(int i = 0; i < listDegrees.Count; i++)
  23. {
  24. degrees[i] = listDegrees[i];
  25. }
  26. }
  27.  
  28. private void Add(int degree, double value) // Прибавление к полиному одночлена x^degree * value
  29. {
  30. if (!degrees.ContainsKey(degree)) //Если такой степени не встречалось, говорим, что кэф при ней был равен нулю.
  31. degrees[degree] = 0;
  32. degrees[degree] += value; // прибавляем к соответствующему кэфу value
  33. }
  34.  
  35. public void AddPolynom(Polynom polynom) // Прибавление полинома к данному полиному
  36. {
  37. foreach(var e in polynom.degrees) // Складываем все степени
  38. {
  39. this.Add(e.Key, e.Value);
  40. }
  41. }
  42.  
  43. public void SubPolynom(Polynom polynom) //Вычитание полинома из данного полинома
  44. {
  45. foreach (var e in polynom.degrees) //Вычитаем все степени
  46. {
  47. this.Add(e.Key, -e.Value);
  48. }
  49. }
  50.  
  51. public void Save(string filename) //Сохранение в файл
  52. {
  53. var lines = new List<string>(); //Строки, которые мы сохраним в файл
  54. foreach(var e in degrees)
  55. {
  56. lines.Add(String.Format("{0} {1}", e.Key, e.Value)); // каждый одночлен представится в виде строки "{Степень} {Кэф при степени}"
  57. }
  58. System.IO.File.WriteAllLines(filename, lines); //Запись в файл этих строк
  59. }
  60.  
  61. public static Polynom Load(string filename) //Загрузка из файла
  62. {
  63. var lines = System.IO.File.ReadAllLines(filename); //Считали строки
  64. Polynom polynom = new Polynom(); //Задали пустой полином
  65. foreach (var line in lines) //Прибавили к нему каждый из одночленов
  66. {
  67. var keyValue = line.Split();
  68. polynom.Add(int.Parse(keyValue[0]), double.Parse(keyValue[1]));
  69.  
  70. }
  71. return polynom;
  72. }
  73.  
  74. public override string ToString() // переопределили строковое представление, чтобы удобно печатать на консоль
  75. {
  76. var Monomials = new List<string>(); //Создали список одночленов
  77. foreach (var e in degrees)
  78. {
  79. Monomials.Add(String.Format("({0})*x^{1}", e.Value, e.Key)); //положили в него строки данного формата для каждого многочлена
  80. }
  81. return String.Join(" + ", Monomials); // Записали одночлены через + в одну строку и вернули ее
  82. }
  83.  
  84. }
  85. class Program
  86. {
  87. static void Main(string[] args)
  88. {
  89. var a = new Polynom(new List<double>() { 1, 2, 3, 2 }); //задали многочлены
  90. var b = new Polynom(new List<double>() { 1, 1, 0, 1 });
  91. Console.WriteLine(a); //напечатали на консоль
  92. Console.WriteLine(b);
  93. a.AddPolynom(b); //прибавили к a b
  94. Console.WriteLine(a);
  95.  
  96. a.SubPolynom(b); //Вычли из a b
  97. Console.WriteLine(a);
  98.  
  99. a.Save("1.txt"); // Сохранили a
  100. var c = Polynom.Load("1.txt"); // Загрузили его в c
  101. Console.WriteLine(c);
  102.  
  103.  
  104. }
  105. }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement