Функция найти продукт Dot

Я пытаюсь заполнить два массива и затем использовать функцию, чтобы найти скалярное произведение. Иногда это будет работать, а иногда нет. Я не уверен, так ли я заполняю массивы или как я работаю над этой функцией. Кроме того, если я установлю размер 6 и введу 1,2,3,4,5,6, первый массив будет заполнен 1,2,3,4,1,2 … он сбрасывается после 4. Второй массив правильно заполнен.
Я не знаю, может ли кто-нибудь помочь мне в этом.

#include <iostream>
using namespace std;

int dotProduct(int* array1, int*array2, int size);

int main() {

int  size = 0;

int *array_one = new int[size]{};
int *array_two = new int[size]{};

cout << "Please enter array size:" << "\n";
cin >> size;

while (size <= 0) { // First while loop, checking array size

cout << "Please enter array size:" << "\n";
cin >> size;
}                 //end of first while loop

cout << "========= Begin Entering Array Elements ========="<< "\n";
cout << "Array 1: "<< "\n";

for (int i = 0; i<size; i++){ // Filling up first array, first for
loop
cout << "Enter element number "<< i+1 << ": " ;
cin >> array_one[i];
}                               // end or first for loop

cout <<"=================================================" <<
"\n";
cout << "Array 2:" << "\n";

for (int i = 0; i<size; i++){ // Filling up first array, first for
loop
cout << "Enter element number "<< i+1 << ": " ;
cin >> array_two[i];
}

cout << "The dot product is: " <<
dotProduct(array_one,array_two,size);
}

int dotProduct(int *arrayUno, int *arrayDos, int size){

int total = 0;

for (int i =0; i <= size ; i++ ){
total = total + (*arrayUno)*(*arrayDos);
arrayUno++;
arrayDos++;
}

return total;
}

1

Решение

int  size = 0;

int *array_one = new int[size]{};
int *array_two = new int[size]{};

cout << "Please enter array size:" << "\n";
cin >> size;

while (size <= 0) { // First while loop, checking array size

cout << "Please enter array size:" << "\n";
cin >> size;
}                 //end of first while loop

Вы выделяете массивы до того, как получите размер. Вы должны сначала получить размер. Измените этот код на:

int size = 0;

cout << "Please enter array size:" << "\n";
cin >> size;

int *array_one = new int[size]{};
int *array_two = new int[size]{};
1

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

Других решений пока нет …

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