怎么选取数组的前n项参与计算
如何选取数组的前n项参与计算
for循环里有100个多项式,但我想在计算的时候多项式的个数由外界输入,比如只取前60项计算,怎么实现比较简单,因为要循环执行300次,如果每算一项都判断这个多项式是否在前60项,会降低程序的执行效率,请大家指点。
------解决方案--------------------
使用函数指针数组,数组中的元素为一个函数指针,分别指向函数fun00,fun01,...,fun99.
- C/C++ code
for(i=0;i<300;i++) { x=valuex[i]; y=valuey[i]; A[i][0]=x+y; A[i][1]=x*x+3*y; A[i][2]=x+2*y*x; …… A[i][99]=x/2+20*y; }
for循环里有100个多项式,但我想在计算的时候多项式的个数由外界输入,比如只取前60项计算,怎么实现比较简单,因为要循环执行300次,如果每算一项都判断这个多项式是否在前60项,会降低程序的执行效率,请大家指点。
------解决方案--------------------
使用函数指针数组,数组中的元素为一个函数指针,分别指向函数fun00,fun01,...,fun99.
- C/C++ code
#include <stdio.h> double A[300][100]; double valuex[300]; double valuey[300]; int i; double fun00(double x,double y) {return x + y ;}; double fun01(double x,double y) {return x*x+ 3*y ;}; double fun02(double x,double y) {return x + 2*y*x;}; //... fun03(double x,double y) {return ...+... ;}; //... //... fun98(double x,double y) {return ...+... ;}; double fun99(double x,double y) {return x/2+20*y ;}; double (*funNN[100])(double,double)={ fun00, fun01, fun02, // fun03, // ... // fun98, fun99, }; int main() { double x,y; int f,FN; for (i=0;i<300;i++) { valuex[i]=(double)i; valuey[i]=(double)i; } FN=3; for (i=0;i<300;i++) { x=valuex[i]; y=valuey[i]; for (f=0;f<FN;f++) A[i][f]=funNN[f](x,y); } for (i=0;i<3;i++) { for (f=0;f<FN;f++) printf("%lg ",A[i][f]); printf("\n"); } return 0; } //0 0 0 //2 4 3 //4 10 10