#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;
}
它表示低和高被重新声明为不同类型的符号&#34;我不知道这意味着什么。基本上,我在这里所做的一切(READ:尝试)是从低(我设置为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;
}
^在括号之后仍然无法奏效。它说&#34;未定义引用&#39; WinMain @ 16&#39;&#34; ...
答案 0 :(得分: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;
答案 1 :(得分:1)
low
和high
已作为integrateF
方法的参数传递。但是他们在方法中再次被重新宣布。因此错误。
答案 2 :(得分:1)
低和高已作为integF方法的参数传递,并在方法内再次重新声明..
当用于计算s ..
时,x未被赋值double x,ans; double s = 1/2 * exp(( - x * x)/ 2);
答案 3 :(得分: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()是否未在命名空间内定义
答案 4 :(得分:0)
导致此错误的另一种方法是,在已将名称标签用作主要功能之外的变量的代码中“重新定义”您的函数-像这样(伪代码):
double integrateF = 0;
main(){
// get vars to integrate ...
}
double integrateF(double, double){
//do integration
}
您甚至不必在main内部调用函数来尝试编译时出现错误,相反,编译器无法理解:
double integrateF = 0 = (double, double) { };
在主要功能之外。
答案 5 :(得分:-1)
错误是因为您声明低和高两次 你的方法应该是这样的
double integrateF(double low, double high)
{
low = 0;
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;
}
答案 6 :(得分:-1)
当你在参数中声明数据类型时,你不必重新声明它们。
而不是
double integrateF(double low, double high)
{
double low = 0;
double high = 20;
.
.
.
}
你应该这样做
double integrateF(double low, double high)
{
low = 0;
high = 20;
.
.
.
}