C ++ Нет экземпляра перегруженной функции & quot; sqrt & quot; соответствует списку аргументов — Попытка определить, являются ли массивы чисел типа структуры идеальными квадратами

У меня есть домашнее задание на 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;
}

-2

Решение

vect это указатель к структура с arr поле, поэтому вам нужно определить, какое поле вы ищете:

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

Обратите внимание, что написание vect[i] Вы имеете в виду много элементы vect и пытается получить i-й один элемент vect. Но писать vect->arr[i] ты имеешь ввиду указатель в какой-то мере элемент vect, пытаясь оценить это arr поле и получить i-й элемент arr поле.

0

Другие решения

vect не является массивом, поэтому вы не можете использовать vect[i], ты должен написать vect->arr[i]-> Оператор используется для доступа к члену структуры. Вы должны также #include <math.h>В случае, если вы забыли это.

0

По вопросам рекламы [email protected]