gpt4 book ai didi

c - 返回随机数而不是具体的 5.1

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:09 25 4
gpt4 key购买 nike

下面是边界阶段方法的代码,它返回限制的中点。但它没有将值返回给 main() 函数。对出现问题的行进行了注释。

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

float func(float x)
{
float f = (pow(x,2) + (54 / x));
return f;
}

float bPhase(float x0, float delta)
{
float x1 , f0, f1, f2, a, b, mPt;
int k, p;
k = 0;
p = 0;

f0 = func(x0 - delta);
p++;
f1 = func(x0);
p++;
f2 = func(x0 + delta);
p++;

if(f0 <= f1 && f1 <= f2)
delta = -1 * delta;
else
delta = delta;

printf("%f %f %f\n", f0, f1, f2);

x1 = x0 + pow(2,k) * delta;
while(func(x1) < func(x0))
{
k++;
a = x0;
x0 = x1;
x1 = x1 + pow(2,k) * delta;
b = x1;
printf("%f %f %f\n", func(a),func(x0),func(b));
p++;
}

printf("Minimum lies between %.3f and %.3f", a, b);
printf("\nIteration no: %d\n", k+1);
printf("Total no. of function evaluations: %d\n", p);

mPt = ((a+b)/2.0);
printf("%f\n", mPt); //Here prints 5.1

return mPt; //Should return 5.1, but not returning
}

int main(void)
{

float x0, mPt;
float delta;

printf("Enter initial guess: "); // guess is .6
scanf("%f", &x0);
printf("Enter increment: "); // 0.5
scanf("%f", &delta);

bPhase(x0, delta);

printf("\n%f\n", mPt); //should print 5.1 but prints random

return 0;
}

函数 bPhase 没有返回任何东西。请帮忙。主函数未从 bPhase 函数接收 mPt 的值。这里是新手。谢谢。

最佳答案

main 中有一个名为 mPt 的变量,bPhase 中有一个名为 mPt 的变量。这些不是相同的变量。不同的变量可能在不同的范围内以相同的名称存在。

此外,当 bPhase 返回时,您不会对返回值执行任何操作。您需要将其分配给 mPt。然后您会看到您期望的值。

mPt = bPhase(x0, delta);

关于c - 返回随机数而不是具体的 5.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52099606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com