#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
int a[10],i,n,d[10],power;
float in[10];
clrscr();
printf("Enter the order ofthe polynomial\n");
scanf("%d",&n);
for(i=n;i>=0;i--)
{
printf("Enter the co-efficient of x^%d:",i);
scanf("%d",&a[i]);
}
printf("Given polynomial is\n");
for(i=n;i>=0;i--)
{
if(power<0)
{
break;
}
if(a[i]>0)
{
if(i!=n)
printf(" + ");
}
else if(a[i]<0)
printf(" - ");
else
printf(" ");
printf("%dx^%d",abs(a[i]),i);
}
//To find derivative
for(i=n;i>=0;i--)
d[i]=a[i]*i;
printf("\n Derivative of the given polynomial is\n");
for(i=n;i>=1;i--)
{
if(power<0)
{
break;
}
if(d[i]>0)
printf(" + ");
else if(d[i]<0)
printf(" - ");
else
printf(" ");
printf("%dx^%d",d[i],i-1);
}
getch();
}
上述程序只计算一阶导数,但我需要一个计算所有导数的程序 ex 2x ^ 3 + 2x ^ 2 + 3x + 1 f1 = 6x ^ 2 + 4x + 3 F2 = 12X + 4 F3 = 12
像这样我需要修改程序,但我没有得到如何做到这一点,请帮帮我//答案 0 :(得分:2)
试试这个
#include <stdio.h>
#include <stdlib.h>
typedef struct polynomial {
int order;
int *coefficient;
} Polynomial;
void init_poly(Polynomial *p){
int i;
printf("Enter the order of the polynomial\n");
scanf("%d", &p->order);
p->coefficient = malloc((p->order + 1)*sizeof(int));
for(i = p->order; i >= 0; --i){
printf("Enter the co-efficient of x^%d:", i);
scanf("%d", &p->coefficient[i]);
}
}
void drop_poly(Polynomial *p){
free(p->coefficient);
}
void print_poly(Polynomial *p){
int i;
for(i = p->order; i >= 0; --i){
if(p->coefficient[i]){
if(p->order != i){
printf(" %c ", p->coefficient[i] < 0 ? '-' : '+');
printf("%d", abs(p->coefficient[i]));
} else
printf("%d", p->coefficient[i]);
if(i)
printf("x^%d", i);
}
}
printf("\n");
}
void differential_poly(Polynomial *p){
int i;
for(i = 0; i < p->order; ++i){
p->coefficient[i] = p->coefficient[i+1] * (i+1);
}
p->coefficient[p->order--] = 0;
}
void r_print_differential_poly(Polynomial *p){
int i=1;
while(p->order){
differential_poly(p);
printf("f%d = ", i++);
print_poly(p);
}
}
int main(void){
Polynomial poly;
init_poly(&poly);
printf("Given polynomial is\n");
print_poly(&poly);
r_print_differential_poly(&poly);
drop_poly(&poly);
return 0;
}