Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Применение splice к двумерному массиву и его вывод 
V
    Опции темы
JEEN
Дата 14.10.2013, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 8.3.2008

Репутация: нет
Всего: 1



Дан двумерный массив n*m
Задача: Вставить после всех столбцов, содержащих нулевой элемент, первый столбец

Вот часть кода, которая вставляет новый элемент справа
Код

for(var i=0; i<n; i++)
     a[i].splice(j+1, 0, a[i][0]);


потом я проверяю вставились ли строки, тут все отлично, строки вставились
Код

console.log(a[0].join(' '));


Потом я пытаюсь вывести этот массив по элементам и тут начинаются косяки. Последние элементы не выводятся.
Делаю вот так:
Код

for(var i=0; i<m; i++)
      console.log(a[0][i]);


Ответ:
надо заменить цикл на:
Код

for(i in a[0])


Это сообщение отредактировал(а) JEEN - 14.10.2013, 17:15
PM MAIL   Вверх
JEEN
Дата 15.10.2013, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 8.3.2008

Репутация: нет
Всего: 1



Задача все осталась прежней: Вставить после всех столбцов, содержащих нулевой элемент, первый столбец.

А проблема поменялась. Теперь, если в первом столбце есть 0, то идет зацикливание.
user posted image

Вот сам код
Код

for(var j=0; j<=m; j++) {
    zero = false;
                    
    // Смотрим есть ли ноль в этом столбце
    for(i in a)
        if(a[i][j] == 0)
            zero = true;
                    
    // Если есть ноль, добавляем дополнительный столбец
    if(zero)
        for(i in a)
            a[i].splice(j+1, 0, a[i][0]);
}


Есть еще один вопрос, если делать for(var j=0; j<m; j++), то последний столбец всегда игнорируется, если в нем есть 0. А с условием j<=m все нормально, так и должно быть?

Это сообщение отредактировал(а) JEEN - 15.10.2013, 07:55
PM MAIL   Вверх
JEEN
Дата 15.10.2013, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 8.3.2008

Репутация: нет
Всего: 1



Добавил j++; m++; теперь проблема исчезла, но слышал, что счетчик внутри цикла нельзя обновлять!?

Текущий код:
Код

for(var j=0; j<=m; j++) {
    zero = false;
                    
    // Смотрим есть ли ноль в этом столбце
    for(i in a)
        if(a[i][j] == 0)
            zero = true;
                    
    // Если есть ноль, добавляем дополнительный столбец
    if(zero) {
        for(i in a)
            a[i].splice(j+1, 0, a[i][0]);
        j++; 
        m++;
    }
}


Это сообщение отредактировал(а) JEEN - 15.10.2013, 08:42
PM MAIL   Вверх
dstorm81
Дата 15.10.2013, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



Цитата(JEEN @  15.10.2013,  08:39 Найти цитируемый пост)
 что счетчик внутри цикла нельзя обновлять!?
 ну раз слышал такое, то так оно и есть... куда деваться то... авторитетный слух явно...



--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0407 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.