📄 chazhisuanfa.cpp
字号:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
typedef struct {
float x;
float y;
}POINT;
float Lagrange(POINT Table[],int n,float x);
int Check_x_is_same_as_former(POINT Table[],int i){
int k;
for(k=0;k<i;++k)
if(fabs(Table[k].x-Table[i].x)<0.000001)
return 1;
return 0;
}
void InputTable(POINT Table[],int *n){
int i;
printf("\nNumber of Points n=");
scanf("%d",n);
for(i=0;i<*n;++i){
printf("Input %dth point(x%d,y%d):",i,i,i);
scanf("%f,%f",&Table[i].x,&Table[i].y);
if(Check_x_is_same_as_former(Table,i)){
printf("\nThis x is the same as the former,ReInput!\n",i);
--i;
}
}
}
float Lagrange(POINT Table[],int n,float x){
float Result,tmp;
int i,j;
Result=0.0;
for(i=0;i<n;++i){
tmp=1.0;
for(j=0;j<n;++j){
if(j==i)continue;
tmp*=((x-Table[j].x)/(Table[i].x-Table[j].x));
}
Result+=(tmp*Table[i].y);
}
return(Result);
}
void main(){
int n;
float x,y;
POINT Table[1000];
InputTable(Table,&n);
printf("\nInput x=");
scanf("%f",&x);
y=Lagrange(Table,n,x);
printf("\nL(%f)=%f\n",x,y);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -