Ошибка в проге на С++

leka-60

В проге есть функция:
double Scal(const Vect v,const Vect w)
{
int i;
double d=0;
for (i=0;i<v->size;i++)
d += (v->data)*(w->data);
return d;
}
почему пишется ошибка в строчке: d += (v->data)*(w->data);
Может библиотека какаянть не подключена.
Причём в классе HP, она работает, а VISUAL C++ пишет что ошибка в той строчке
Чё это такое?

margo11

а какой текст ошибки?

leka-60

error C2296: '*' : illegal, left operand has type 'double *'
и в этой же строчке вот такая ошибка ещё:
error C2297: '*' : illegal, right operand has type 'double *'

margo11

а если написать (v->data{i} ) * (w->data{i}) ?
Там не фигурные скобочки, а квадратные, естественно. Кстати, как поставить квадратные скобочки?

leka-60

Без шифта просто жми те кнопки...
а то что сказал, ща попробую...

leka-60

Ошибки исчезли, только я вот не пойму, а смысл не изменился самой функции? Я просто не особо шарю в С++

margo11

подозреваю, что смысл изменился, но стал правильным

Car-Elena

что за тип Vect?
выложи его описание

margo11

ЗА то, что смысл стал правильным, говорит хотя бы то, что раньше в цикле i не использовалось, а теперь используется. И еще, насколько я понимаю по названию функции, она вычисляет скалярное произведение векторов, а их координаты лежат в массиве vec->data. Поэтому скалярное произведение векторов - это как раз то, что вычисляется обновленной фукнцией

leka-60

пасибо!
Т.е. я так понял везде в проге где стоит v->data без нужно его добавить, так?

leka-60

typedef struct vect{
double* data;
int size;
} str_vect;

margo11

не факт, что везде. Дело в том, что v->data имеет тип (double *) - указатель на массив вещественных числе. Использование этого указателя самого по себе также может быть осмысленно. Универсальных предложений дать не могу. Здесь нужен конкретный текст проги.

leka-60

Код самой проги вот здесь

margo11

Дело в том, что можно писать в форуме курсивом . Это делается следующим образом: нужно поместить текст внутрь скобок [i] ТЕКСТ [/i]. Поэтому, там, где в проге написано курсивом, это просто значит, что до этого шло i внутри квадратных скобок. Но автор треда об этом не позаботился. Так что курсив - признак неточностей в тексте.

leka-60


Да, похоже на то, блина!
Спасибо за помошь!

margo11

только там после первой такой ошибки все курсивом. Поэтому, если у тебя есть только тот текст проги, который в форуме в посте, то уйдет время на восстановление (особенно, если не хочется врубаться в прогу)

leka-60

Значит как только курсив, то значит [\i] надо ставить, а как узнать где следующее [\i] стоит?
Оставить комментарий
Имя или ник:
Комментарий: