Code OOP C++ bị lỗi has triggered a breakpoint

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");
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?