按部门测量

时间:2013-05-05 17:05:40

标签: c++ c function math

函数为y=x^2+2x+1,域名为0到10.如果输入间隔数,程序将打印结果。完成功能MeasurationByDivision()

我在C代码下面做了,但是我得到了错误的结果.. 我想我错了一些错误..

应该是这个结果:

10  
505.000000  
35  
460.612245

我的代码:

#include <stdio.h>
#include <math.h>

void MeasurationByDivision( double* result, int intervals );
float f(float t) { return( pow(t,3) + 2 ); } 

int main(void) { 
    int intervals ;
    double result=0;
    scanf("%d", &intervals ) ;
    MeasurationByDivision(&result, intervals ) ;
    printf( "%lf\n", result ) ; 

    fflush(stdin);
    getchar();
}

void MeasurationByDivision(double* result, int intervals)
{


    int i,a=0;
    double x = 10/(double)intervals;
    float y[100];

for(i=1; i<=intervals; i++) {

    y[i]=a+i*x;
    *result += x*f(y[i]);

} 
} 

此代码结果为:

10   
3045.000000 

2 个答案:

答案 0 :(得分:2)

  

该功能为y=x^2+2x+1

那为什么你的功能呢?

float f(float t) { return( pow(t,3) + 2 ); }

更改它以匹配给定的功能,您应该得到预期的结果。

我还要摆脱100个元素的阵列:你根本不需要一个数组,如果你尝试超过100个间隔,事情会发生严重错误。

答案 1 :(得分:2)

float f(float t) { return( pow(t,3) + 2 ); } 

float f(float t) { return((t + 1)*(t + 1) ); } 

ADD to 应该是460.612245 ..为什么我得到这个结果?

使用

double f(double t) { return((t + 1)*(t + 1) ); } 
...
double y[100];