Mọi người coi giúp em phần thuật toán Tong2DaThuc với ạ, em nhập 2 đa thức vào thì chỉ in ra 2 đa thức chứ không in ra tổng 2 đa thức.
Tính tổng 2 đa thức:
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
struct DATHUC
{
float heso[100];
int somu[100];
int n;
};
DATHUC *Nhap()
{
DATHUC *B = new DATHUC;
cin >> (*B).n;
for (int i = 1; i <= (*B).n; i++)
{
cin >> (*B).heso[i];
cin >> (*B).somu[i];
}
return B;
}
void Xuat(DATHUC B)
{
int cnt = 0;
for (int i = 1; i <= B.n; i++)
{
if (!B.heso[i])
cnt++;
else if (!B.heso[i])
cout << B.heso[i];
else if (B.heso[i] == 1 && B.somu[i] == 1)
cout << "x";
else if (B.heso[i] == -1 && B.somu[i] == 1)
cout << "-x";
else if (B.somu[i] == 1)
cout << B.heso[i] << "x";
else if (B.somu[i] == 0)
cout << B.heso[i];
else if ((B.heso[i] == 1))
cout << "x^" << B.somu[i];
else if (B.heso[i] == -1)
cout << "-x^" << B.somu[i];
else
cout << B.heso[i] << "x^" << B.somu[i];
if (B.heso[i + 1] > 0 && i != B.n && cnt != i)
cout << "+";
}
if (cnt == B.n)
cout << 0;
}
DATHUC Tong2DaThuc(DATHUC *A, DATHUC *B)
{
DATHUC *C = new DATHUC;
int i, j, x;
j = 0;
if (A->n < B->n)
x = B->n;
else
x = A->n;
for (i = 1; i <= x; i++)
{
j++;
C->heso[i] = A->heso[i] + B->heso[j];
if(B->n>A->n)
{
C->somu[i]=B->somu[i];
}
else C->somu[i]=A->somu[i];
}
return *C;
}
int main()
{
DATHUC *A, *B;
A = Nhap();
B = Nhap();
cout << "Da thuc A: ";
Xuat(*A);
cout << "\nDa thuc B: ";
Xuat(*B);
cout << "\nA+B = ";
Xuat(Tong2DaThuc(A, B));
return 0;
}