Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.01 KB | None | 0 0
  1. #include "Hedder.h"
  2.  
  3. Vec::Vec(){
  4. }
  5.  
  6. Vec::~Vec(){
  7.   a.clear();
  8. }
  9.  
  10. void Vec::insert(Polynom x){
  11.   a.push_back(x);
  12. }
  13.  
  14. void Vec::erasee(int x){
  15.   a.erase(a.begin() + x);
  16. }
  17.  
  18. void Vec::reversee(std::vector<Polynom> a){
  19.   reverse(a.begin(), a.end());
  20. }
  21. void input(Polynom a, string s, Arr n){
  22.   cin >> s;
  23.   cin >> a;
  24.   n.s = s;
  25.   n.a = a;
  26. }
  27. //Polynom Vec::&operator[](int x){
  28. //  return a[x];
  29. //}
  30. Polynom::Polynom()
  31. {
  32.   try{
  33.     koef = NULL;
  34.   }
  35.   catch(int a){
  36.     cout << "no memory";
  37.   }
  38. }
  39.  
  40. Polynom::~Polynom()
  41. {
  42.    try{
  43.     delete[]koef;
  44.   }
  45.   catch(int a){
  46.     cout << "no polynom";
  47.   }
  48. }
  49. Polynom::Polynom(int an)
  50. {
  51.     try{
  52.     int i;
  53.     n = an;
  54.     koef = new double[n + 1];
  55.     for (i = 0; i <= n; i++)
  56.     {
  57.         koef[i] = 0;
  58.     }
  59.   }
  60.   catch(int a){
  61.     cout << "no memory";
  62.   }
  63. }
  64. Polynom::Polynom(const Polynom &f)
  65. {
  66.    try{
  67.     n = f.n;
  68.     koef = new double[n + 1];
  69.     for (int i = 0; i <= n; i++)
  70.         koef[i] = f.koef[i];
  71. }
  72. catch(int a){
  73.   cout << "no memory";
  74. }
  75. }
  76. int Polynom::getn()
  77. {
  78.     return n;
  79. }
  80. double Polynom::getkoef(int i)
  81. {
  82.   try{
  83.     if (i <= n)
  84.         return koef[i];
  85.     else
  86.         return 0.0;
  87.       }
  88.       catch(int a){
  89.         cout << "error";
  90.         return a;
  91.       }
  92. }
  93. double Polynom::sum(){
  94.   try{
  95.   int ans = 0;
  96.   for(int i = 0; i <= n; i++){
  97.     ans += koef[i];
  98.   }
  99.   return ans;
  100. }
  101. catch(int a){
  102.   cout << "error";
  103.   return a;
  104. }
  105. }
  106. Polynom Polynom::operator-(const Polynom &t) //оператор вычитания А-В
  107. {
  108.   try{
  109.     int i;
  110.     if (n >= t.n)//А>B
  111.     {
  112.         Polynom Z = *this;
  113.         for (i = 0; i <= t.n; i++)
  114.             Z.koef[i] = koef[i] - t.koef[i];
  115.         return Z;
  116.     }
  117.     else//B>A
  118.     {
  119.         Polynom Z(t.n);
  120.         for (i = 0; i <= n; i++)
  121.             Z.koef[i] = -t.koef[i] + koef[i];
  122.         for (i = n + 1; i <= t.n; i++)
  123.             Z.koef[i] = -t.koef[i];
  124.         return Z;
  125.     }
  126.   }
  127.   catch(int a){
  128.     cout << "error";
  129.     return a;
  130.   }
  131. }
  132. Polynom Polynom::operator+(const Polynom &t)//оператор сложения A+B
  133. {
  134.     try{
  135.     int i;
  136.     if (n >= t.n)//A>B
  137.     {
  138.         Polynom Z=*this;
  139.         for (i = 0; i <= n; i++)
  140.             Z.koef[i] = koef[i] + t.koef[i];
  141.         return Z;
  142.     }
  143.     else//A<B
  144.     {
  145.         Polynom Z=t;
  146.         for (i = 0; i <= n; i++)
  147.             Z.koef[i] = t.koef[i] + koef[i];
  148.         return Z;
  149.     }
  150.   }
  151.   catch(int a){
  152.     cout << "error";
  153.     return a;
  154.   }
  155. }
  156. Polynom Polynom::operator*(const Polynom &t)//оператор умножения А*В
  157. {
  158.   try{
  159.     int i,j;
  160.     Polynom Y(n+t.n);
  161.     for (i = 0; i <= n; i++)
  162.         for (j = 0; j <= t.n; j++)
  163.             Y.koef[i + j] += koef[i]*t.koef[j];
  164.     return Y;
  165.   }
  166.   catch(int a){
  167.     cout << "error";
  168.     return a;
  169.   }
  170. }
  171. Polynom Polynom::operator = (const Polynom &t)
  172. {
  173.     try{
  174.     if(this!=&t)
  175.     {
  176.         delete[] koef;
  177.         n = t.n;
  178.         koef = new double[n + 1];
  179.         for (int i = 0; i <= n; i++)
  180.             koef[i] = t.koef[i];
  181.     }
  182.     return *this;
  183.   }
  184.   catch(int a){
  185.     cout << "error";
  186.     return a;
  187.   }
  188. }
  189. istream &operator>>(istream &s, Polynom &c)// перегруженный оператор ввода
  190. {
  191.     int i;
  192.     for (i = 0; i <= c.n; i++)
  193.     {
  194.         s >> c.koef[i];
  195.     }
  196.     return s;
  197. }
  198. ostream &operator<<(ostream &s, const Polynom &c)
  199. {
  200. int i, n=0;
  201. for (i = 0; i <= c.n; i++)
  202. {
  203.     if (c.koef[i] != 0)
  204.         n++;
  205. }
  206. if (n != 0)
  207. {
  208.     if (c.koef[0] != 0)
  209.     {
  210.         s << c.koef[0];
  211.     }
  212.     for (i = 1; i <= c.n; i++)
  213.     {
  214.         if (c.koef[i] < 0)
  215.         {
  216.             if(c.koef[i]!=-1)
  217.                 s << c.koef[i] << "X^" << i;
  218.             else
  219.                 s << "-" << "X^" << i;
  220.         }
  221.         else
  222.         {
  223.             if (c.koef[i] != 0)
  224.             {
  225.                 if(c.koef[i] != 1)
  226.                     s << "+" << c.koef[i] << "X^" << i;
  227.                 else
  228.                     s<< "+" << "X^" << i;
  229.             }
  230.         }
  231.     }
  232. s << '\n';
  233. }
  234. else
  235. {
  236.     s << 0;
  237. }
  238. return s;
  239. }
  240. Arr::Arr()
  241. {
  242.   try{
  243.     a.koef = NULL;
  244.     string s;
  245.   }
  246.   catch(int a){
  247.     cout << "no memory";
  248.   }
  249. }
  250. Arr::Arr(int an)
  251. {
  252.   try{
  253.   string s;
  254.   int i;
  255.   n = an;
  256.   a.koef = new double[n + 1];
  257.   for (i = 0; i <= n; i++)
  258.   {
  259.       a.koef[i] = 0;
  260.   }
  261. }
  262. catch(int a){
  263.   cout << "no memory";
  264. }
  265. }
  266. Arr::~Arr()
  267. {
  268.    try{
  269.     delete []a.koef;
  270.     s.clear();
  271.   }
  272.   catch(int a){
  273.     cout << "no poly";
  274.   }
  275. }
  276. istream &operator>>(istream &s, Arr &c)// перегруженный оператор ввода
  277. {
  278.     s >> c.s;
  279.     s >> c.a;
  280.   //  return c;
  281.   return s;
  282. }
  283. ostream &operator<<(ostream &na, const Arr &c)
  284. {
  285.   na << c.s << endl;
  286. int i, n=0;
  287. for (i = 0; i <= c.a.n; i++)
  288. {
  289.     if (c.a.koef[i] != 0)
  290.         n++;
  291. }
  292. if (n != 0)
  293. {
  294.     if (c.a.koef[0] != 0)
  295.     {
  296.         na << c.a.koef[0];
  297.     }
  298.     for (i = 1; i <= c.a.n; i++)
  299.     {
  300.         if (c.a.koef[i] < 0)
  301.         {
  302.             if(c.a.koef[i]!=-1)
  303.                 na << c.a.koef[i] << "X^" << i;
  304.             else
  305.                 na << "-" << "X^" << i;
  306.         }
  307.         else
  308.         {
  309.             if (c.a.koef[i] != 0)
  310.             {
  311.                 if(c.a.koef[i] != 1)
  312.                     na << "+" << c.a.koef[i] << "X^" << i;
  313.                 else
  314.                     na<< "+" << "X^" << i;
  315.             }
  316.         }
  317.     }
  318. na << '\n';
  319. }
  320. //
  321. else
  322. {
  323.     na << 0;
  324. }
  325. return na;
  326. }
  327. double Arr::sum(){
  328.   try{
  329.   int ans = 0;
  330.   for(int i = 0; i <= n; i++){
  331.     ans += a.koef[i];
  332.   }
  333.   return ans;
  334. }
  335. catch(int a){
  336.   cout << "error";
  337.   return a;
  338. }
  339. }
  340.  
  341. int Arr::size(){
  342.   return s.size();
  343. }
  344. Polynom Arr::operator+(const Arr &t)//оператор сложения A+B
  345. {
  346.     return (this->a + t.a);
  347. }
  348. Polynom Arr::operator-(const Arr &t)//оператор вычитания A-B
  349. {
  350.     return (this->a - t.a);
  351. }
  352. Polynom Arr::operator*(const Arr &t)//оператор умножения A*B
  353. {
  354.     return (this->a * t.a);
  355. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement