Вычисление внутреннего произведения массива

#javascript

#javascript

Вопрос:

 // Write a program to calculate the innerproduct of two arrays (ip of v,w = sum, for all i, of vi*wi)

var v = [1, 2, 3, 'x'];
var w = [1, 2, 3, 4];
vSum_total = 0;
wSum_total = 0;

// calculate sum of v
for(i=0; i<v.length; i  )
{
    if (isNaN(v[i]))
    v[i] = 0
    else
    vSum_total  = Number(v[i]);
}

// calculate sum of w
for(i=0; i<v.length; i  )
{
    if (isNaN(v[i]))
    v[i] = 0
    else
    wSum_total  = Number(w[i]);
}

alert ("Total of v: "   (vSum_total));
alert ("Total of w: "   (wSum_total));
alert ("Inner product: "   (vSum_total * wSum_total));
 

Я пытаюсь вычислить внутреннее произведение массива, но мой результат не вызывает тревоги. Любые подсказки в правильном направлении были бы очень признательны!

Комментарии:

1. Глупый вопрос: vSum_total инициализируется значением 1 ?

2. Кстати, для вычисления «внутреннего произведения» требуется два вектора, а не один

3. что такое vSum ? вы имели в виду просто v

4. «Мой результат не настораживает» ???

5. Извините за путаницу, ребята… Я обновил код!

Ответ №1:

Поскольку vsum начинается с 0, когда вы умножаете его на любое число, оно остается равным 0.

Комментарии:

1. vsum действительно начинается с 0. Но OP использует vSum_total .

2. Предполагается, что vsum_total равно vsum и что вы добавляете v[i] к сумме, а не vsum[i] .

Ответ №2:

 var vSum = 1;

var v = [];
v[0] = parseInt(prompt("v0:"));
v[1] = parseInt(prompt("v1:"));
v[2] = parseInt(prompt("v2:"));
v[3] = parseInt(prompt("v3:"));

// calculate ip of v
for(i = 0; i < v.length; i  )
{
    vSum *= v[i];
}

alert(vSum);
 

Комментарии:

1. Объяснения лучше, чем дампы кода. Фрагменты кода — отличный способ украсить сообщение, но объяснение того, что OP сделал неправильно, — лучший способ дать ответ.

2. Да, я должен был добавить объяснение.

Ответ №3:

vSum должно быть v (или наоборот).

Вы пытаетесь использовать целое число как массив, поэтому ваш скрипт прерывается.

Включите свой отладчик.

Комментарии:

1. Не говоря уже о том, что такое vSum_total ? Это даже определено где угодно.