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

double integrateF(double low, double high)
{
    double low = 0;
    double high = 20;
    double delta_x=0;
    double x, ans;
    double s = 1/2*exp((-x*x)/2);

    for(x=low;x<=high;x++)
        delta_x = x+delta_x;
    ans = delta_x*s;

    return ans;
}

它说低和高被“重新声明为不同类型的符号”,我不知道这是什么意思。基本上,我在这里所做的一切(阅读:尝试)是从低(我设置为 0)到高(20)积分以找到黎曼和。for 循环看起来也有点迷幻……我迷路了。

编辑:

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

double integrateF(double low, double high)
{
    low = 0;
    high = 20;
    double delta_x=0;
    double ans = 0;
    double x;
    double s = 1/2*exp((-x*x)/2);

    for(x=low;x<=high;x++)
    {
        delta_x = x+delta_x;
        ans = ans+(delta_x*s);
    }
    return ans;
}

^这仍然行不通,在大括号和所有之后。它说“未定义对'WinMain@16'的引用”......

4

6 回答 6

6

您在函数内部重新定义了低和高,这与参数中定义的冲突。

for循环正在做

for(x=low;x<=high;x++)
{
   delta_x = x+delta_x;
}

你是故意的吗

for(x=low;x<=high;x++)
{
   delta_x = x+delta_x;
   ans = delta_x*s;
}

但是我认为你想做ans += delta_x*s;

于 2013-10-20T03:57:52.743 回答
1

低和高已经作为您的integrateF方法的参数传递,并且它们在方法内再次重新声明..

并且 x 在用于计算 s 时没有赋值。


双 x, ans; 双 s = 1/2*exp((-x*x)/2);


于 2013-10-20T04:25:13.500 回答
1

low并且high已经作为您的integrateF方法的参数传递。但是它们在方法内部再次被重新声明。因此错误。

于 2013-10-20T04:01:32.833 回答
0

您可能想这样尝试:-

for(x=low;x<=high;x++)
{                          //Use brackets since you are redefining low and high inside the function
delta_x = x+delta_x;
ans = delta_x*s;
}

或者

for(x=low;x<=high;x++)
{                          //Use brackets since you are redefining low and high inside the function
delta_x = x+delta_x;
}

编辑:-

它说“未定义对'WinMain@16'的引用”

确保您已main() or WinMain()定义。还要检查 main() 是否未在您的命名空间内定义

于 2013-10-20T03:56:44.810 回答
0

导致此错误的另一种方法是在代码中“重新定义”您的函数,其中该名称标签已用作主函数之外的变量 - 就像这样(伪代码):

double integrateF = 0;

main(){
 // get vars to integrate ...
}

double integrateF(double, double){
  //do integration
}

您甚至不必调用 main 内部的函数来尝试编译时出错,相反,编译器无法理解: double integrateF = 0 = (double, double) { }; 在 main 函数之外。

于 2018-12-25T05:57:03.247 回答
-1

当您在参数中声明了数据类型时,您不必重新声明它们。

代替

double integrateF(double low, double high)
{
    double low = 0;
    double high = 20;
    .
    .
    .
}

你应该这样做

double integrateF(double low, double high)
{
    low = 0;
    high = 20;
    .
    .
    .
}
于 2013-10-20T06:15:25.787 回答