C++ 没有与参数列表匹配的重载函数"sqrt"实例 - 试图查找结构类型的数字数组是否为完美平方



我有作业要做C++,我试图找出数组中的数字是否是完美的正方形。此外,该阵列是动态分配的。这是我的代码:

myVector perfectSquare(myVector *vect)
{
    myVector rez;
    rez.length = 0;
    for (int i = 0; i < vect->length; i++)
        if (vect[i] == sqrt(vect[i])*sqrt(vect[i])) // here it gives error
        {
            addToVector(&rez, vect->arr[i]);
        }
    return rez;
}

vect 是指向具有arr字段的结构的指针,因此您需要确定要查找的字段:

sqrt(vect->arr[i]) * sqrt(vect->arr[i])

请注意,vect[i]写你的意思是很多 vect 元素并试图获得第 i 个vect 元素。但是写vect->arr[i]你的意思是指向某个确切的 vect 元素指针,试图评估它的arr字段并获取arr字段的第 i 个元素。

vect不是

数组,所以你不能使用vect[i],你应该写vect->arr[i] - ->运算符用于访问结构的成员。你也应该#include <math.h>,以防你忘记了。

最新更新