gpt4 book ai didi

c++ - 一会儿数学运算

转载 作者:太空狗 更新时间:2023-10-29 20:55:53 24 4
gpt4 key购买 nike

我需要在 while 循环中解决这个操作。 NXZ 是用户给定的整数。

enter image description here

我试过了,但它没有显示真正的结果。

while (i <= n) {
double r = 1, p = 1;
p = x / n + z;
p = p * p;
cout << "Resultado: " <<p<< endl;
i++;
}

最佳答案

您的代码至少存在三个问题:

  1. 您在每次循环迭代时都重新声明并重新初始化 p,从而丢失之前的值。

  2. 您在每次迭代中将 p 设置为 x/n+z,从而丢失之前的值。

  3. 您的 x/n+z 在加法之前执行除法。


你在这里不断地“重置”p 的值:

while(i <= n)
{
// ...
// `p` is getting re-initialized to 1 here:
// (losing the previous value)
double r=1, p=1;

// `p` is being set to `x/n+z` here:
// (losing the previous value)
p = x/n+z;

p = p*p;
// ...
}

创建一个临时变量,并将 p 的声明移到循环外:

double p = 1;
while(i <= n)
{
// ...
double temp = x/n+z;
p = p * temp;
// ...
}

此外,正如 Daniel S. 所指出的,您需要在 n+z 周围加上括号:

double temp0 = x/n+z;
// Evaluates to (x/n)+z.

double temp1 = x/(n+z);
// Evaluates to x/(n+z). (Which is what you want.)

发生这种情况是因为 / 除法运算符的优先级高于 + 加法运算符。了解 operator precedence here .

关于c++ - 一会儿数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34712020/

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