# Program of Fitting a Straight line, Exponential curve, Geometric curve, Hyperbola, Polynomial

```#include<stdio.h>
#include<conio.h>
#include<math.h>
#define MAX 10

void slm(FILE *);
void expcurve(FILE *);
void geocurve(FILE *);
void hyperbola(FILE *);
void polynomial(FILE *);

void main()
{
FILE *fp;
int i,choice,number;
float xvalue[MAX],yvalue[MAX];
fp=fopen(\"curfitt.dat\",\"w\");
clrscr();
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"\\n1.Fitting a Straight line     \");
fprintf(fp,\"\\n1.Fitting a Straight line     \");
printf(\"\\n2.Fitting a Exponential curve \");
fprintf(fp,\"\\n2.Fitting a Exponential curve \");
printf(\"\\n3.Fitting a Geometric curve   \");
fprintf(fp,\"\\n3.Fitting a Geometric curve   \");
printf(\"\\n4.Fitting a Hyperbola         \");
fprintf(fp,\"\\n4.Fitting a Hyperbola         \");
printf(\"\\n5.Fitting a Polynomial        \");
fprintf(fp,\"\\n5.Fitting a Polynomial        \");
printf(\"\\n6.Exit                        \");
fprintf(fp,\"\\n6.Exit                        \");
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
scanf(\"%d\",&choice);
fprintf(fp,\"%d\",choice);
switch(choice)
{
case 1 : slm(fp);
break;
case 2 : expcurve(fp);
break;
case 3 : geocurve(fp);
break;
case 4 : hyperbola(fp);
break;
case 5 : polynomial(fp);
break;
case 6 : exit(1);
break;
}
fclose(fp);
getch();
}

void slm(FILE *fp)
{
int i,number;
float sumx=0,sumy=0,xvalue[MAX],yvalue[MAX];
float productxy[MAX],sumxy=0,square[MAX],sumx2=0;
float denominator,a,b;
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"Enter how many values you want for (x,y) :   \");
fprintf(fp,\"Enter how many values you want for (x,y) :   \");
scanf(\"%d\",&number);
fprintf(fp,\"%d\",number);
for(i=0;i<number;i++)
{
printf(\"\\nEnter value for x(%d) :  \",i);
fprintf(fp,\"\\nEnter value for x(%d) :  \",i);
scanf(\"%f\",&xvalue[i]);
fprintf(fp,\"%f\",xvalue[i]);
}
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
for(i=0;i<number;i++)
{
printf(\"\\nEnter value for y(%d) :  \",i);
fprintf(fp,\"\\nEnter value for y(%d) :  \",i);
scanf(\"%f\",&yvalue[i]);
fprintf(fp,\"%f\",yvalue[i]);
}
for(i=0;i<number;i++)
{
sumx=sumx+xvalue[i];
}
for(i=0;i<number;i++)
{
sumy=sumy+yvalue[i];
}
for(i=0;i<number;i++)
{
productxy[i]=xvalue[i]*yvalue[i];
sumxy=sumxy+productxy[i];
}
for(i=0;i<number;i++)
{
square[i]=xvalue[i]*xvalue[i];
sumx2=sumx2+square[i];
}
clrscr();
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"STRAIGHT LINE MEHTOD                        \");
fprintf(fp,\"STRAIGHT LINE MEHTOD                        \");
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"  x        y         Ex2            Exy  \");
fprintf(fp,\"  x        y         Ex2            Exy  \");
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
for(i=0;i<number;i++)
{
printf( \"%0.2f     %0.2f        %.2f         %.2f  \",xvalue[i],yvalue[i],square[i],productxy[i]);
fprintf(fp, \"%0.2f     %0.2f        %.2f         %.2f  \",xvalue[i],yvalue[i],square[i],productxy[i]);
printf(\"\\n\");
fprintf(fp,\"\\n\");
}
denominator=(number*sumx2)-(sumx*sumx);
a=(sumy*sumx2)-(sumx*sumxy)/denominator;
b=((number*sumxy)-(sumx*sumy))/denominator;
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"The equation is             :   \");
fprintf(fp,\"The equation is             :   \");
printf(\"  y = %.2fx + %.2f  \",b,a);
fprintf(fp,\"  y = %.2fx + %.2f  \",b,a);

}

void expcurve(FILE *fp)
{

int i,number;
float xvalue[MAX],yvalue[MAX],sumx=0,sumlogy=0;
float productxlogy[MAX],sumxlogy=0,square[MAX],sumx2=0;
float denominator,a,b,c;
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"Enter how many values you want for (x,y) :   \");
fprintf(fp,\"Enter how many values you want for (x,y) :   \");
scanf(\"%d\",&number);
fprintf(fp,\"%d\",number);
for(i=0;i<number;i++)
{
printf(\"\\nEnter value for x(%d) :  \",i);
fprintf(fp,\"\\nEnter value for x(%d) :  \",i);
scanf(\"%f\",&xvalue[i]);
fprintf(fp,\"%f\",xvalue[i]);
}
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
for(i=0;i<number;i++)
{
printf(\"\\nEnter value for y(%d) :  \",i);
fprintf(fp,\"\\nEnter value for y(%d) :  \",i);
scanf(\"%f\",&yvalue[i]);
fprintf(fp,\"%f\",yvalue[i]);
}
for(i=0;i<number;i++)
{
sumx=sumx+xvalue[i];
}
for(i=0;i<number;i++)
{
sumlogy=sumlogy+log(yvalue[i]);
}
printf(\"\\nsumlogy=%.4f \",sumlogy);
for(i=0;i<number;i++)
{
productxlogy[i]=xvalue[i]*log(yvalue[i]);
sumxlogy=sumxlogy+productxlogy[i];
}
printf(\"\\n%.4f \",sumxlogy);
for(i=0;i<number;i++)
{
square[i]=xvalue[i]*xvalue[i];
sumx2=sumx2+square[i];
}
clrscr();
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"EXPONENTIAL CURVE MEHTOD                 \");
fprintf(fp,\"EXPONENTIAL CURVE MEHTOD                 \");
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"  x        y              Ex2             Exlogy  \");
fprintf(fp,\"  x        y              Ex2             Exlogy  \");
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
for(i=0;i<number;i++)
{
printf( \"%0.2f     %0.2f        %.2f         %.2f  \",xvalue[i],yvalue[i],square[i],productxlogy[i]);
fprintf(fp, \"%0.2f     %0.2f        %.2f         %.2f  \",xvalue[i],yvalue[i],square[i],productxlogy[i]);
printf(\"\\n\");
fprintf(fp,\"\\n\");
}
denominator=(number*sumx2)-(sumx*sumx);
c=((sumlogy*sumx2)-(sumx*sumxlogy))/denominator;
b=((number*sumxlogy)-(sumx*sumlogy))/denominator;
a=exp(c);
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"The equation is       :   \");
fprintf(fp,\"The equation is       :   \");
printf(\"    y = %.4fe^%.4fx    \",a,b);
fprintf(fp,\"    y = %.4fe^%.4fx    \",a,b);

}

void geocurve(FILE *fp)
{
int i,number;
float sumlogx=0,sumlogy=0,xvalue[MAX],yvalue[MAX];
float productlogxlogy[MAX],sumlogxlogy=0,square[MAX],sumlogx2=0;
float denominator,a,b,c;
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"Enter how many values you want for (x,y) :   \");
fprintf(fp,\"Enter how many values you want for (x,y) :   \");
scanf(\"%d\",&number);
fprintf(fp,\"%d\",number);
for(i=0;i<number;i++)
{
printf(\"\\nEnter value for x(%d) :  \",i);
fprintf(fp,\"\\nEnter value for x(%d) :  \",i);
scanf(\"%f\",&xvalue[i]);
fprintf(fp,\"%f\",xvalue[i]);
}
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
for(i=0;i<number;i++)
{
printf(\"\\nEnter value for y(%d) :  \",i);
fprintf(fp,\"\\nEnter value for y(%d) :  \",i);
scanf(\"%f\",&yvalue[i]);
fprintf(fp,\"%f\",yvalue[i]);
}
for(i=0;i<number;i++)
{
sumlogx=sumlogx+log(xvalue[i]);
}
for(i=0;i<number;i++)
{
sumlogy=sumlogy+log(yvalue[i]);
}
for(i=0;i<number;i++)
{
productlogxlogy[i]=log(xvalue[i])*log(yvalue[i]);
sumlogxlogy=sumlogxlogy+productlogxlogy[i];
}
for(i=0;i<number;i++)
{
square[i]=log(xvalue[i])*log(xvalue[i]);
sumlogx2=sumlogx2+square[i];
}
clrscr();
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"GEOMETRIC CURVE MEHTOD                 \");
fprintf(fp,\"GEOMETRIC CURVE MEHTOD                 \");
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"  x        y           Elogx2           Elogxlogy  \");
fprintf(fp,\"  x        y           Elogx2           Elogxlogy  \");
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
for(i=0;i<number;i++)
{
printf( \"%0.2f     %0.2f        %.2f         %.2f  \",xvalue[i],yvalue[i],square[i],productlogxlogy[i]);
fprintf(fp, \"%0.2f     %0.2f        %.2f         %.2f  \",xvalue[i],yvalue[i],square[i],productlogxlogy[i]);
printf(\"\\n\");
fprintf(fp,\"\\n\");
}
denominator=(number*sumlogx2)-(sumlogx*sumlogx);
c=((sumlogy*sumlogx2)-(sumlogx*sumlogxlogy))/denominator;
b=((number*sumlogxlogy)-(sumlogx*sumlogy))/denominator;
a=exp(c);
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"The equation is       :   \");
fprintf(fp,\"The equation is       :   \");
printf(\"    y = %.2fx^%.2f    \",a,b);
fprintf(fp,\"    y = %.2fx^%.2f    \",a,b);

}

void hyperbola(FILE *fp)
{
int i,number;
float denominator,a,b,xvalue[MAX],yvalue[MAX];
float sumx=0,square[MAX],sumx2=0,denomy[MAX],sumdenomy=0;
float productxy[MAX],sumxy=0;
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"Enter how many values you want for (x,y) :   \");
fprintf(fp,\"Enter how many values you want for (x,y) :   \");
scanf(\"%d\",&number);
fprintf(fp,\"%d\",number);
for(i=0;i<number;i++)
{
printf(\"\\nEnter value for x(%d) :  \",i);
fprintf(fp ,\"\\nEnter value for x(%d) :  \",i);
scanf(\"%f\",&xvalue[i]);
fprintf(fp,\"%f\",xvalue[i]);
}
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
for(i=0;i<number;i++)
{
printf(\"\\nEnter value for y(%d) :  \",i);
fprintf(fp,\"\\nEnter value for y(%d) :  \",i);
scanf(\"%f\",&yvalue[i]);
fprintf(fp,\"%f\",yvalue[i]);
}
for(i=0;i<number;i++)
{
sumx=sumx+xvalue[i];
}
for(i=0;i<number;i++)
{
square[i]=xvalue[i]*xvalue[i];
sumx2=sumx2+square[i];
}
for(i=0;i<number;i++)
{
denomy[i]=1/yvalue[i];
sumdenomy=sumdenomy+denomy[i];
}
for(i=0;i<number;i++)
{
productxy[i]=xvalue[i]*denomy[i];
sumxy=sumxy+productxy[i];
}
clrscr();
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"HYPERBOLA CURVE MEHTOD                 \");
fprintf(fp,\"HYPERBOLA CURVE MEHTOD                 \");
printf(\"\\n\\n\");
printf(\"  x        y          Elogx2           Elogx/y   \");
fprintf(fp,\"  x        y          Elogx2           Elogx/y   \");
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
for(i=0;i<number;i++)
{
printf( \"%0.2f     %0.2f        %.2f         %.2f   \",xvalue[i],yvalue[i],square[i],productxy[i]);
fprintf(fp, \"%0.2f     %0.2f        %.2f         %.2f   \",xvalue[i],yvalue[i],square[i],productxy[i]);
printf(\"\\n\");
fprintf(fp,\"\\n\");
}
denominator=(number*sumx2)-(sumx*sumx);
b=((number*sumxy)-(sumx*sumdenomy))/denominator;
a=((sumdenomy*sumx2)-(sumx*sumxy))/denominator;
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"The equation is       \");
fprintf(fp,\"The equation is       \");
printf(\"     y = 1/( %.3f + %.3fx )      \",a,b);
fprintf(fp,\"     y = 1/( %.3f + %.3fx )      \",a,b);

}

void polynomial(FILE *fp)
{
int  degree,i,j,k,l,number;
float z[MAX][MAX+1],a[MAX];
float temp,sum;
float denominator,b,xvalue[MAX],yvalue[MAX];
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
printf(\"Enter how many values you want for (x,y) :   \");
fprintf(fp,\"Enter how many values you want for (x,y) :   \");
scanf(\"%d\",&number);
fprintf(fp,\"%d\",number);
for(i=0;i<number;i++)
{
printf(\"\\nEnter value for x(%d) :  \",i);
fprintf(fp,\"\\nEnter value for x(%d) :  \",i);
scanf(\"%f\",&xvalue[i]);
fprintf(fp,\"%f\",xvalue[i]);
}
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
for(i=0;i<number;i++)
{
printf(\"\\nEnter value for y(%d) :  \",i);
fprintf(fp,\"\\nEnter value for y(%d) :  \",i);
scanf(\"%f\",&yvalue[i]);
fprintf(fp,\"%f\",yvalue[i]);
}
printf(\"\\nEnter the highest degree of the polynomial  :\");
fprintf(fp,\"\\nEnter the highest degree of the polynomial  :\");
scanf(\"%d\",&degree);
fprintf(fp,\"%f\",degree);
for(i=0;i<=degree;i++)
{
for(j=0;j<=degree;j++)
{
z[i][j]=0;
for(k=0;k<number;k++)
{
if(i==0 && j==0)
{
z[i][j]=0;
break;
}
else if (j==degree+1)
z[i][j]=z[i][j]+pow(xvalue[k],i)*yvalue[k];
else
z[i][j]=z[i][j]+pow(xvalue[k],j+1);
}
printf(\"\\nz[%d][%d]=%.3f\",i,j,z[i][j]);
fprintf(fp,\"\\nz[%d][%d]=%.3f\",i,j,z[i][j]);
}
}
for(j=0;j<degree;j++)
{
for(i=j+1;i<=degree;i++)
{
temp=z[i][j]/z[j][j];
for(k=j;k<=degree;k++)
{
z[i][k]=z[i][k]-(temp*z[j][k]);
}
}
}
a[degree]=z[degree][degree+1]/z[degree][degree];

for(i=degree-1;i>=0;i--)
{
sum=0;
for(j=i+1;j<=degree;j++)
{
sum=sum+(z[i][j]*a[j]);
}
a[i]=(z[i][degree+1]-sum)/z[i][i];
printf(\"%.3f\",a[i]);
fprintf(fp,\"%.3f\",a[i]);
if(i!=0)
{
printf(\"* X^%d + \",i);
fprintf(fp,\"* X^%d + \",i);
}
}
printf(\"\\n\\n\");
fprintf(fp,\"\\n\\n\");
}
```