Khi nhập vào thì có trường hợp nó lỗi ở 1 số chỗ nào đó ở trên, may ra thì có th nó chạy hết code đến system(“pause”) nó mới lỗi, ai giúp em dc ko ạ
cDonThuc.h
#include <iostream>
#include <stdio.h>
using namespace std;
class cDonThuc
{
private:
int m;
float a;
public:
cDonThuc() {};
~cDonThuc() {};
void Nhap();
void Xuat();
void setm(int x) { m = x; }
void seta(float x) { a = x; }
int getm() { return m; }
float geta() { return a; }
float TinhGiaTriDonThuc(float x);
cDonThuc operator+(cDonThuc);
cDonThuc operator-(cDonThuc);
};
cDonThuc.cpp
#include "cDonThuc.h"
void cDonThuc::Nhap()
{
cout << "Nhap he so a = ";
cin >> a;
}
void cDonThuc::Xuat()
{
cout << a << "x^" << m;
}
float cDonThuc::TinhGiaTriDonThuc(float x)
{
return a * pow(x, m);
}
cDonThuc cDonThuc::operator+(cDonThuc x)
{
cDonThuc kq;
kq.a = a + x.a;
kq.m = m;
return kq;
}
cDonThuc cDonThuc::operator-(cDonThuc x)
{
cDonThuc kq;
kq.a = a - x.a;
kq.m = m;
return kq;
}
cDaThuc.h
#include "cDonThuc.h"
class cDaThuc
{
private:
int n;
cDonThuc *dt;
public:
cDaThuc();
~cDaThuc();
void Nhap();
void Xuat();
float TinhGiaTriDaThuc(float x);
friend cDaThuc operator+(cDaThuc, cDaThuc);
friend cDaThuc operator-(cDaThuc, cDaThuc);
};
cDaThuc.cpp
#include "cDaThuc.h"
cDaThuc::cDaThuc()
{
n = 0;
dt = new cDonThuc[n];
}
cDaThuc::~cDaThuc()
{
dt = NULL;
delete dt;
}
void cDaThuc::Nhap()
{
cout << "Nhap bac cao nhat cua da thuc n = ";
cin >> n;
dt = new cDonThuc[n];
for (int i = 0; i <= n; i++)
{
cout << "Nhap don thuc co mu bang " << i << " :" << endl;
dt[i].setm(i);
dt[i].Nhap();
}
}
void cDaThuc::Xuat()
{
for (int i = 0; i < n; i++)
{
if (dt[i].geta() != 0)
{
dt[i].Xuat();
cout << " + ";
}
}
if (dt[n].geta() != 0)
dt[n].Xuat();
cout << endl;
}
float cDaThuc::TinhGiaTriDaThuc(float x)
{
float kq = 0;
for (int i = 0; i <= n; i++)
{
kq += dt[i].TinhGiaTriDonThuc(x);
}
return kq;
}
cDaThuc operator+(cDaThuc x, cDaThuc y)
{
cDaThuc kq;
if (x.n > y.n)
{
kq = x;
for (int i = 0; i <= y.n; i++)
{
kq.dt[i] = x.dt[i] + y.dt[i];
}
}
else
{
kq = y;
for (int i = 0; i <= x.n; i++)
{
kq.dt[i] = x.dt[i] + y.dt[i];
}
}
return kq;
}
cDaThuc operator-(cDaThuc x, cDaThuc y)
{
cDaThuc kq;
if (x.n > y.n)
{
kq = x;
for (int i = 0; i <= y.n; i++)
{
kq.dt[i] = x.dt[i] - y.dt[i];
}
}
else
{
kq = y;
for (int i = 0; i <= x.n; i++)
{
kq.dt[i] = x.dt[i] - y.dt[i];
}
}
return kq;
}
source.cpp
#include "cDaThuc.h"
void main()
{
cDaThuc X, Y;
float x;
cout << "Nhap da thuc X : " << endl;
X.Nhap();
cout << "Da thuc vua nhap la : ";
X.Xuat();
cout << "Nhap da thuc Y : " << endl;
Y.Nhap();
cout << "Da thuc vua nhap la : ";
Y.Xuat();
cout << "Nhap x = ";
cin >> x;
cout << "Gia tri da thuc X = " << X.TinhGiaTriDaThuc(x) << endl;
cout << "Gia tri da thuc Y = " << Y.TinhGiaTriDaThuc(x) << endl;
cout << "Tong 2 da thuc X + Y = ";
(X + Y).Xuat();
cout << "Tong 2 da thuc X - Y = ";
(X - Y).Xuat();
system("pause");
}