Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2009, 22:45   #1
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
Смущение Двумерный массив на JS

значит понадобилось мне для расчета энтропии сигналов написать программу)
мог бы на делфи написать, но вот чтото захотелось на JS)
встала проблема двумерного массива, для передачи сообщений с ошибками и без из состояния X в Y

Реализовал построение двумерного массива так:
Код:
var VBS=new Array(N);
for(var VBSi=0; VBSi<VBS.lenght; VBSi++) {
VBS[VBSi]=new Array(N);
}
где N- это количество отправленных сообщений. Задается при вызове функции RaschetInf(N).
Для проверки задаю элемент и вызываю его
Код:
VBS[1][1]=2;
alert(VBS[1][1]);
но не пашет Т_Т

кстате сказать, если создавать вручную типа:
Код:
var VBS=new Array(N);
VBS[0]=Array(N);
VBS[0][0]=1;
Alert(VBS[0][0]);
выдает 1. все ок, но циклом не хочет Т__Т

Последний раз редактировалось Seran4ek; 19.10.2009 в 23:11.
Seran4ek вне форума Ответить с цитированием
Старый 20.10.2009, 21:08   #2
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

О! решил проблемы заменив в
Код:
for(var VBSi=0; VBSi<VBS.lenght; VBSi++)
"VBSi<VBS.lenght;" на "VBSi<N;"

объясните мне, почему нельзя было через длину массива? О_о
Seran4ek вне форума Ответить с цитированием
Старый 20.10.2009, 21:27   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
var VBS=new Array(N);
for(var VBSi=0; VBSi<VBS.lenght; VBSi++) {
VBS[VBSi]=new Array(N);
}
Правильно: length
Arigato вне форума Ответить с цитированием
Старый 20.10.2009, 21:35   #4
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

Цитата:
Правильно: length
ахахаха) блин и так всегда) ошибки под носом) спасибо ^^

[оффтоп] это изза того что я пишу в браузере и даже подстветки кода нет, всегда то скобку забуду, то еще чтото, а норм оболочки так и не могу найти, все громоздкие какието[/оффтоп]
Seran4ek вне форума Ответить с цитированием
Старый 20.10.2009, 21:39   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от Seran4ek
а норм оболочки так и не могу найти, все громоздкие какието
Notepad2 вполне неплохой Блокнотик.
Arigato вне форума Ответить с цитированием
Старый 20.10.2009, 21:50   #6
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

спасибо, скачаю)
просто все дело в том,что когда пишу в браузере то сразу кликнул на "сохр" и проверил работу, а в блокнотах нужно код переносить и все такое)
Seran4ek вне форума Ответить с цитированием
Старый 25.10.2009, 16:58   #7
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

Люди, еще одна проблема возникла.

Код:
for(VBSi=0; VBSi<N; VBSi++) {
  for(var VBSj=0; VBSj<N; VBSj++) {
if (VBSi=VBSj) {
VBS[VBSi][VBSi]=Math.random() * (0.3)  + 0.7;
}
}
}
alert(VBS[0][0]);
и вот VBS[0][0] у меня получается underfined. с чего бы? я же циклы с нулей начинаю, и по условию 0=0 он должен был посчитать значение. или в яваскрипте 0 не равен 0? О_о
Seran4ek вне форума Ответить с цитированием
Старый 25.10.2009, 17:04   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

А до этого кода массив VBS как создавался?
Вообще, если вы хотите заполнить диагональ массива, то зачем делать так не рационально? Проще что-то вроде такого:
Код:
for ( var i = 0; i < N; i++ )
  VBS[i][i] = ...;
Arigato вне форума Ответить с цитированием
Старый 25.10.2009, 17:44   #9
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

да, задавался
Код:
var VBS=new Array(N);
for(var VBSi=0; VBSi<N; VBSi++) {
VBS[VBSi]=Array(N);
}
потом VBSi занулил и использовал дальше для задания значений массива

Цитата:
Проще что-то вроде такого:
спасибо за подсказку, очень кстати, а то для заполнения остальных мне бы пришлось второй раз прогонять по циклу)

Последний раз редактировалось Seran4ek; 25.10.2009 в 17:46.
Seran4ek вне форума Ответить с цитированием
Старый 25.10.2009, 18:23   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от Seran4ek
VBS[VBSi]=Array(N);
Надо:
Код:
VBS[VBSi]=new Array(N);
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный массив на С Darh Помощь студентам 2 08.10.2009 20:20
Двумерный массив!!! hoangvu2005 Помощь студентам 2 17.02.2009 21:50
Двумерный массив Wi1D Помощь студентам 12 10.12.2008 00:55
Двумерный массив... slim5 Помощь студентам 2 20.06.2008 23:16
Двумерный массив в С++ Draid Помощь студентам 2 07.03.2008 22:06