#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 ? Это даже определено где угодно.