Code không chạy được ở hàm “Đạo hàm đa thức”. Anh(chị) ai biết lỗi sai giúp em với ạ.
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
//f(x) = a1*x^N1 + .... + an
typedef struct{
float *heSo;
int *soMu;
}DATHUC;
//Ham nhap
void nhapDaThuc(DATHUC **dt, const char name, int &n)
{
printf("\nNhap bac da thuc %c: ", name);
scanf("%d", &n);
*dt = (DATHUC*)calloc(1, sizeof(DATHUC));
(*dt)->heSo = (float*)calloc(n+1, sizeof(float));
(*dt)->soMu = (int*)calloc(n+1, sizeof(int));
for(int i = n; i >= 0; i--)
{
(*dt)->soMu[i] = i;
printf("\n\nSo mu : %d", i);
printf("\nHe so : ");
scanf("%f", &((*dt)->heSo[i]));
}
}
//Ham xuat da thuc ra man hinh
void xuatDaThuc(DATHUC *dt, char name, int n)
{
printf("\nKet qua : \n");
printf("%c =", name);
for(int i = n; i >= 1; i--)
{
if(dt->heSo[i] != 0)
printf(" %.0fx^%d +", dt->heSo[i], dt->soMu[i]);
else
continue;
}
if(dt->heSo[0] != 0)
printf(" %.0f ", dt->heSo[0]);
}
//Ham tinh F(x0)
float tinh(DATHUC *dt, float x, int n)
{
float kq; //ket qua
for(int i = 0; i <= n; i++)
{
float tg = 1;
for(int j = 0; j < dt->soMu[i]; j++)
{
tg *= x;
}
kq += *dt->heSo * tg;
}
return kq;
}
//Dao ham da thuc
DATHUC daoHam(DATHUC *dt, int n, int bacDaoHam)
{
DATHUC *a=0;
printf("\nDao ham cap? : ");
scanf("%d", &bacDaoHam);
*a = *dt;
for(int i = n; i >= n - bacDaoHam; i--)
{
for(int j = 1; j<=bacDaoHam ; j++)
{
a->heSo[i] *= a->soMu[i];
a->soMu[i]--;
}
}
for(int i = n - bacDaoHam - 1; i >= 0; i--)
{
a->heSo[i] = 0;
a->soMu[i] = 0;
}
return *a;
}
int main(){
DATHUC *P=0, *Q=0 , *F=0;
int m=0, n=0, bac;
float t = 0;
nhapDaThuc(&P, 'P', m);
nhapDaThuc(&Q, 'Q', n);
xuatDaThuc(P, 'P', m);
xuatDaThuc(Q, 'Q', n);
t = tinh(P, 3, m);
printf("\np(3) = %.0f", t);
*F = daoHam(P, m, bac);
xuatDaThuc(F, 'F', m-bac);
return 0;
}