- Em có một bài tập là cho nhập 2 đa thức, và tính tổng 2 đa thức đó, xuất ra màn hình kết quả. Em làm bài thì nó hiện lỗi “DaThucMotBienBac_n.exe has triggered a breakpoint.” và bảng No Symbols Loaded nhưng không biết sai ở đâu.
- Ý tưởng của là đa thức gồm bậc lớn nhất và mảng hệ số của nó.
- Em nghĩ là sai ở phần operator+ vì nhập xuất đa thức mảng đúng.
Các bác giúp em với ạ. Em cảm ơn.
- DaThuc.h :
#pragma once
#include <iostream>
using namespace std;
class DaThuc
{
private:
int n; //bac lon nhat
float* array; //mang he so
public:
DaThuc()
{
this->n = 0;
this->array = NULL;
}
DaThuc(DaThuc& dt)
{
this->n = dt.n;
this->array = new float[this->n+1];
for (int i = 0; i <= this->n; i++)
{
this->array[i] = dt.array[i];
}
}
~DaThuc()
{
delete[]array;
}
void Nhap();
void Xuat();
friend DaThuc operator+(DaThuc fx1, DaThuc fx2);
};
#include "DaThuc.h"
void DaThuc::Nhap()
{
cout << "Nhap bac lon nhat cua da thuc : ";
cin >> this->n;
cout << "Nhap mang he so : ";
this->array = new float[this->n+1];
for (int i = this->n; i >=0; i--)
{
cin >> this->array[i];
}
}
void DaThuc::Xuat()
{
cout << "f(x) = ";
for (int i = this->n; i >= 0; i--)
{
if (i == this->n)
{
cout << this->array[i] << "x^" << i;
}
else
{
if (this->array[i] >= 0)
{
cout << " + " << this->array[i] << "x^" << i;
}
else
{
if (this->array[i] < 0)
{
cout << " - " << abs(this->array[i]) << "x^" << i;
}
}
}
}
cout << endl;
}
DaThuc operator+(DaThuc fx1, DaThuc fx2)
{
DaThuc fx;
if (fx1.n >= fx2.n)
{
fx.n = fx1.n;
fx.array = new float[fx.n+1];
for (int i = fx1.n; i > fx2.n ; i--)
{
fx.array[i] = fx1.array[i];
}
for (int i = fx2.n; i >= 0; i--)
{
fx.array[i] = fx1.array[i] + fx2.array[i];
}
return fx;
}
else
{
fx.n = fx2.n;
fx.array = new float[fx.n+1];
for (int i = fx2.n; i > fx1.n; i--)
{
fx.array[i] = fx2.array[i];
}
for (int i = fx1.n; i >= 0; i--)
{
fx.array[i] = fx1.array[i] + fx2.array[i];
}
return fx;
}
}
int main()
{
DaThuc fx, fx1, fx2;
fx1.Nhap();
fx2.Nhap();
//fx1.Xuat();
//fx2.Xuat();
fx = fx1 + fx2;
fx.Xuat();
return 0;
}