detective1711

DaThuc.cpp

May 7th, 2014
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.95 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include "DaThuc.h"
  3. #include <iostream>
  4. #include <math.h>
  5.  
  6. using namespace std;
  7.  
  8. istream& operator>>(istream &is, DaThuc &d)
  9. {
  10.     cout << "Nhap x: "; is >> d.fX;
  11.     cout << "Nhap bac da thuc: "; is >> d.iBac;
  12.     d.fHeso = new float[];
  13.     for (int i = 0; i <= d.iBac; i++)
  14.     {
  15.         cout << "He so thu " << i + 1 << ": "; is >> d.fHeso[i];
  16.     }
  17.     return is;
  18. }
  19. ostream& operator<<(ostream &os, DaThuc d)
  20. {
  21.     for (int i = 0; i < d.iBac-1; i++)
  22.     {
  23.         os << d.fHeso[i] << "x" << d.fX << "^" << d.iBac - i << " + ";
  24.     }
  25.     os << d.fHeso[d.iBac - 1] << "x" << d.fX << " + ";
  26.     os << d.fHeso[d.iBac];
  27.     return os;
  28. }
  29. DaThuc::DaThuc()
  30. {
  31.     iBac = 0;
  32. }
  33. DaThuc::DaThuc(float x,int n)
  34. {
  35.     iBac = n;
  36.     fX = x;
  37.     fHeso = new float[];
  38.     for (int i = 0; i <= n; i++)
  39.     {
  40.         cout << "He so thu " << i + 1 << ": "; cin >> fHeso[i];
  41.     }
  42. }
  43.  
  44. DaThuc::~DaThuc()
  45. {
  46. }
  47.  
  48. double DaThuc::Calculate()
  49. {
  50.     double result=0;
  51.     if (iBac == 0)
  52.         return 1;
  53.     for (int i = 0; i < iBac; i++)
  54.     {
  55.         result = result + fHeso[i] * pow(fX, iBac - i);
  56.     }
  57.     return result;
  58. }
  59. //Copy cau truc cua mot da thuc
  60. DaThuc DaThuc::Clone()
  61. {
  62.     DaThuc tmp;
  63.     tmp.fX = fX;
  64.     tmp.iBac = iBac;
  65.     tmp.fHeso = new float[];
  66.     return tmp;
  67. }
  68. DaThuc DaThuc::operator+(DaThuc d)
  69. {
  70.     if (fX != d.fX)
  71.         return DaThuc();
  72.     DaThuc result;
  73.     result.fX = fX;
  74.     result.fHeso = new float[];
  75.     int  tmp;
  76.     tmp = abs(iBac - d.iBac);
  77.     if (iBac > d.iBac)
  78.     {
  79.         result.iBac = iBac;
  80.         for (int i = 0; i <= iBac; i++)
  81.         {
  82.             if (i < d.iBac)
  83.                 result.fHeso[i] = fHeso[i];
  84.             else
  85.                 result.fHeso[i] = fHeso[i] + d.fHeso[i - tmp];
  86.         }
  87.     }
  88.     else
  89.     {
  90.         result.iBac=d.iBac;
  91.         for (int i = 0; i <= d.iBac; i++)
  92.         {
  93.             if (i < iBac)
  94.                 result.fHeso[i] = d.fHeso[i];
  95.             else
  96.                 result.fHeso[i] = d.fHeso[i] + fHeso[i - tmp];
  97.         }
  98.     }
  99.     return result;
  100. }
  101. DaThuc DaThuc::operator-(DaThuc d)
  102. {
  103.     DaThuc tmp = d.Clone();
  104.     for (int i = 0; i <= d.iBac; i++)
  105.         tmp.fHeso[i] = 0 - d.fHeso[i];
  106.     return *this + tmp;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment