Как мне ... вычислить точечное произведение массива структуры
Я пытаюсь написать программы на C++, которые вычисляют точечное произведение двух заданных векторов. В векторах a и b в массив структур(row и col) будут храниться только ненулевые элементы. Каждый раз я получаю нерелевантные результаты. Правильный результат должен быть 50. Пожалуйста, совет.
Заранее спасибо.
<pre>#include <iostream> #include <vector> using namespace std; const int n=10; /* vector size */ struct element { int index; /* original index of non-zero array element */ int value ; /* integer non-zero value at index x */ }; element row[n]; element col[n]; vector<int> a={0,0,7,0,5,0,0,8,0,4,-1}; vector<int> b={0,0,0,5,6,0,0,0,0,5,-1}; void generate_row_and_col() { for (int i=0; i<=n; i++) { if(a[i]!=0) { row[i].index=i; row[i].value=a[i]; } } for (int j=0; j<=n; j++) { if(b[j]!=0) { col[j].index=j; col[j].value=b[j]; } } } int dotproduct() { /* calculate the dot product of row and col output the result*/ int i=0; int j=0; int product=0; while(row[i].index!=-1 && col[j].index!=-1) { if(row[i].index == col[j].index) { product=product+row[i].value*col[j].value; i++; j++; } else if(row[i].index<col[j].index) { i++; } else { j++; } } return product; } int main() { generate_row_and_col() ; int r; r=dotproduct(); cout<<"result="<<r<<endl; return 0; }
Что я уже пробовал:
Я думаю, что не могу правильно прочитать векторы в массиве структур.
Nelek
Я не понимаю, что вы пытаетесь сделать. То, что я думаю, что вы говорите, не соответствует тому, что я вижу в вашем коде.
Было бы неплохо, если бы вы отредактировали вопрос и дали немного больше объяснений. И пример" что это должно быть " матрицы / векторов на каждом шаге.
CPallini
Извините, а какова логика отказа от нулевых значений в пользу мусора?