#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct Polynomial
{
unsigned int deg;
double* coeff;
};
void createPolynomial(struct Polynomial);
void destroyPolynomial(struct Polynomial);
struct Polynomial addpoly(struct Polynomial,struct Polynomial);
int main()
{
char esc;
int k;
struct Polynomial a;
struct Polynomial b;
struct Polynomial c;
do
{
printf("Podaj stopieñ wielomianu\n");
scanf("%u",&a.deg);
printf("%u\n",a.deg);
createPolynomial(a);
\
for(k=a.deg; k>=0; k--)
{
printf("a[%d]=",k);
scanf("%lf",&a.coeff[k]);
}
printf("Podaj stopieñ wielomianu\n");
scanf("%u",&b.deg);
printf("%u\n",b.deg);
createPolynomial(b);
for(k=b.deg; k>=0; k--)
{
printf("b[%u]=",k);
scanf("%lf",&b.coeff[k]);
}
c=addpoly(a,b);
for(k=c.deg; k>=0; k--)
{
if(c.coeff[k]<0.0)
{
printf("-%lf*x^%u",-c.coeff[k],k);
}
else
{
printf("+%lf*x^%u",c.coeff[k],k);
}
};
destroyPolynomial(a);
destroyPolynomial(b);
destroyPolynomial(c);
esc=getch();
}
while(esc!=27);
}
void createPolynomial(struct Polynomial p)
{
p.coeff=(double*)malloc((p.deg+1)*sizeof(double));
}
void destroyPolynomial(struct Polynomial p)
{
free(p.coeff);
}
struct Polynomial addpoly(struct Polynomial a,struct Polynomial b)
{
int i;
struct Polynomial c;
if(a.deg>b.deg)
{
c.deg=a.deg;
}
else
{
c.deg=b.deg;
}
createPolynomial(c);
if(c.deg==a.deg)
{
for(i=0; i<=c.deg; i++)
c.coeff[i]=a.coeff[i];
for(i=0; i<=b.deg; i++)
c.coeff[i]+=b.coeff[i];
}
else
{
for(i=0; i<=c.deg; i++)
c.coeff[i]=b.coeff[i];
for(i=0; i<=a.deg; i++)
c.coeff[i]+=a.coeff[i];
}
return c;
}
Gdzieś tu jest Segmentation Fault ale nie mam pomysłu gdzie
Problemy z Segmentation Fault pojawiły się po opakowaniu tablicy w strukturkę
Co do reprezentacji listowej to mam listę liczb całkowitych do której trzeba dołożyć jedno pole
ale nie mam pomysłu na funkcje