作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有一个函数
Vector getNthRoots(double a, double b, double c, int n)
{
Vector v;
int i;
v.length = 0;
double m, a2, b2, c2;
if (n % 2 == 0)
{
a2 = a;
b2 = b;
c2 = c;
if (a<0)
a2 = a*(-1);
if (b<0)
b2 = b*(-1);
if (c<0)
c2 = c*(-1);
m = floor(pow(max(a2, b2, c2),1/n));
for (i = 1; i <= m; i++)
if (pow(i, n) >= min(a2, b2, c2) && pow(i, n) <= max(a2, b2, c2))
{
v.values[v.length] = i;
v.length++;
v.values[v.length] = (-1)*i;
v.length++;
}
return v;
}
else {
for (i = ceil(pow(min(a, b, c),1/n)); i <= floor(pow(max(a, b, c),1/n)); i++)
if (pow(i, n) >= min(a, b, c) && pow(i, n) <= max(a, b, c))
{
v.values[v.length] = i;
v.length++;
}
return v;
}
}
这个函数应该给出在 min(a,b,c) 和 max(a,b,c) 区间内的 n 次方数字 (number^n);
其他函数/标题
double max(double a, double b, double c)
{
if (a >= b && a >= c)
return a;
if (b >= a && b >= c)
return b;
if (c >= a && c >= b)
return c;
return a;
}
double min(double a, double b, double c)
{
if (a <= b && a <= c)
return a;
if (b <= a && b <= c)
return b;
if (c <= a && c <= b)
return c;
return a;
}
#include <iostream>
#include <cmath>
using namespace std;
#define MAX_ARRAY_LENGTH 100
struct Vector
{
unsigned int length;
int values[MAX_ARRAY_LENGTH];
};
看来我无法得到好的答案。例如
对于 getNthRoots(32,15,37,5) 它应该返回一个 vector [2] 因为 2^5 =32 属于区间 [15,37] 但我没有收到任何东西或 getNthRoots(32,1,7,5) 它应该返回一个 vector [1,2] 但我只收到 1 作为答案
我猜问题就在这里for (i = ceil(pow(min(a, b, c),1/n)); i <= floor(pow(max(a, b, c),1/n)); i++)
但我不知道如何解决它
最佳答案
1/n 的计算结果为 0,因为它被计算为整数表达式。尝试将所有“1/n”替换为“1.0/n”。
注意处理 n 为 0 的情况。
关于c++ - getNthRoots函数错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27162082/
我是一名优秀的程序员,十分优秀!