#include #include #include void getdata (double a[], double fa[]) { char fname[64]; FILE *f; int i, j, n, rc; char c; do { printf ("File: "); scanf ("%s", fname); if ((f = fopen (fname, "rt")) != NULL) break; printf ("Cannot open file %s\n", fname); } while (1); do {fscanf(f, "%c", &c);} while(c!=10); do {fscanf(f, "%c", &c);} while(c!=10); for (i = 0; i < 18; i++) { fscanf (f, "%lf", &a[i]); fscanf (f, "%lf", &fa[i]); } fclose (f); } double interpolation (double T[18], double Tk[18], double Cpk[18], int n, int k) { static double r, r1; int i, j; r=0; for(i=0; i<=n; i++) {r1=Cpk[i]; for(j=0; j<=n; j++) {if (j==i) goto end; r1*=(T[k]-Tk[j])/(Tk[i]-Tk[j]); end: } r+=r1; } return(r); } void main (void) { static double T[18], Cp[18], Tk[18], Cpk[18], d; static int n, i, j, k; getdata(T,Cp); printf("Enter the degree of interpolationg polynomial: "); scanf("%d",&n); printf("Enter the points of interpolation: \n"); for(i=0; i<=n; i++) {printf("%d. ",i+1); scanf("%d",&k); Tk[i]=T[k-1]; Cpk[i]=Cp[k-1]; } clrscr(); printf("No. | Cp value | Interpolated value | Error\n"); for (i=0; i<18; i++) {printf("%d",i+1); gotoxy(7,i+2); printf("%4.4lf",Cp[i]); gotoxy(18,i+2); k=0; {for(j=0; j<=n; j++) if(T[i]==Tk[j]) k=1; } if (k==0) {d=interpolation(T,Tk,Cpk,n,i); printf("%4.4lf",d); } else printf("Point"); gotoxy(39,i+2); if (k==0) {d=fabs(d-Cp[i]); printf("%.10lf\n",d); } else printf("%d\n",k-1); } }