Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lua
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
borgetko
0 / 0 / 0
Регистрация: 11.07.2015
Сообщений: 17
1

Возможно ли разделить 2 массива

28.03.2018, 14:32. Просмотров 776. Ответов 4
Метки нет (Все метки)

Здравствуйте. Не знаю, особенности ли это языка или моих рук, но у меня возникла проблема такого характера:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
local tb1 = {}
tb1[1]=123
tb1[2]=1244213213
 
local REU = {}
function ReturnExceptUnit(tbl,unit)
    for i = 1, #tbl do
    if tbl[i] == unit then
      REU = tbl
      table.remove(REU,i)
      return REU
    end
    end
end
 
print(tb1[1])
print(tb1[2])
print(REU[1])
print(REU[2])
ReturnExceptUnit(tb1,1244213213)
print(tb1[1])
print(tb1[2])
print(REU[1])
print(REU[2])
 
123
1244213213
nil
nil
123
nil
123
nil
результатом должно было являться исключение элемента из таблицы REU (REU = tbl) элемента unit, но какого было мое удивление что если делать манипуляции над новой таблицей, то эти же манипуляции влияют на искомую таблицу tb1. как этого избежать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2018, 14:32
Ответы с готовыми решениями:

Не возможно разделить диск.
Включаю компьютер и вылазиет на черном экране у меня "loading operating system"...

Revit server. Возможно ли разделить видимость проектов между разными участниками?
Добрый день. Я по специальности проектировщик (строительство) сам немного...

Возможно ли разделить кости домино на 2 комплекта (сумма всех чисел на костях должна быть равной)?
нужна программа, которая проверяет, возможно ли разделить 34 кости домино,...

Файлы. Незнайка купил конфеты и хочет разделить их поровну между 9 коротышками. Определить, возможно ли это сделать?
Незнайка купил в магазине определенное количество конфет.Он хочет разделить их...

Нечетные элементы массива B(N) разделить на среднее квадратическое элементов этого массива
Нечетные элементы заданного массива B(N) разделить на среднее квадратическое...

4
vantfiles
47 / 42 / 21
Регистрация: 07.05.2013
Сообщений: 143
28.03.2018, 15:18 2
Лучший ответ Сообщение было отмечено borgetko как решение

Решение

Как я понимаю, это довольно распространенное заблуждение относительно Луа.
Дело в том, что идентификатор таблицы в Луа - это указатель на данные, то есть просто так написать table1 = table2 нельзя - оба идентификатора физически будут указывать на одни и те же данные.
Решается это разной степени сложности функциями для копирования таблицы в таблицу.

Вот пример для копирования простого массива:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function copy_array( t ) -- возвращаем копию таблицы
    local res = {}
    for i = 1, #t do
        res[i] = t[i]
    end
    return( res )
end
 
-- Ну и пример использования:
 
t1 = { 1, 2, 3, 4, 5 }
t2 = copy_array( t1 )
 
t2[ 3 ] = 12345
 
print( "t1:" )
 
for i = 1, #t1 do
    print( t1[ i ] )
end
 
print( "t2:" )
 
for i = 1, #t1 do
    print( t2[ i ] )
end
1
borgetko
0 / 0 / 0
Регистрация: 11.07.2015
Сообщений: 17
28.03.2018, 15:30  [ТС] 3
Ага, вот значит как. Спасибо. Кроме таблиц, с чем нибудь еще это связанно? Что еще нельзя явно указать через присвоить?
0
vantfiles
47 / 42 / 21
Регистрация: 07.05.2013
Сообщений: 143
28.03.2018, 15:53 4
Данные, имеющие тип number string boolean function копируются обычным присваиванием.

Данные типа userdata -- ну тут зависит от реализации.
Есть еще один нюанс - это объекты луа с метатаблицами. Копирование таких объектов - это тоже отдельная история.

Короче говоря, если не углубляться в дебри, копировать присвоением можно все, кроме таблиц.
1
borgetko
0 / 0 / 0
Регистрация: 11.07.2015
Сообщений: 17
28.03.2018, 16:09  [ТС] 5
Большое спасибо
0
28.03.2018, 16:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2018, 16:09

Найти среднее геометрическое значение массива и разделить элементы массива на него
1. Ввести массив A(N). Найти среднее геометрическое значение массива. Все...

Все элементы заданного массива разделить на сумму элементов массива
3. Ввести массив А(N). Все элементы массива разделить на сумму элементов...

Как разделить массив на два массива, или удалить из массива часть однотипных элементов?
как разделить массив на два массива или удалить из массива часть однотипных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru