<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Объединение массивов]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Объединение массивов форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 19 Apr 2026 04:44:24 +0300</pubDate>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2677/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Немного поправлю последний вариант:<br />
====code====
<pre>&nbsp;&nbsp;tab = {}
&nbsp;&nbsp;local n1, n2, n = #tab1, 1, 0
&nbsp;&nbsp;for i = 1, n1 do tab&#91;i&#93; = tab1&#91;i&#93; end
&nbsp;&nbsp;for i = 1, n1 do
&nbsp;&nbsp;&nbsp;&nbsp;local v1 = tab1&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;for j = n2, #tab2 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local v2 = tab2&#91;j&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n = n + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if v2 &#60; v1 then table.insert(tab, n, v2)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif i == n1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if v2 &#62; v1 then table.insert(tab, n, v2) end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if v2 &#62; v1 then n2 = j else n2 = j + 1 end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;end
</pre>
============= <br />
			<i>30.03.2015 22:33:04, Серж.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2677/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2677/topic329/</guid>
			<pubDate>Mon, 30 Mar 2015 22:33:04 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2650/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_OGU7cBCw" href="/user/47/" bx-tooltip-user-id="47">s_mike@rambler.ru</a>, ваш вариант рабочий, но, думаю, будет медленнее моего последнего. <br />
			<i>30.03.2015 13:09:20, Серж.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2650/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2650/topic329/</guid>
			<pubDate>Mon, 30 Mar 2015 13:09:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2649/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_dfZ83sGu" href="/user/47/" bx-tooltip-user-id="47">s_mike@rambler.ru</a> пишет: <br />Мудрено.<br /><br />=============<br />К тому же и работает не правильно...<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_lwMYlzUY" href="/user/62/" bx-tooltip-user-id="62">Николай Камынин</a> пишет: <br />такой вариант устроит:<br /><br />=============<br />Нет:<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_Z1KFKT8E" href="/user/54/" bx-tooltip-user-id="54">Серж</a> пишет: <br />исходные массивы портить не надо.<br /><br />=============<br /><br />Учитывая, что исходные массивы уже отсортированы, то можно использовать такой вариант:<br />
====code====
<pre>t1={1,2,3,6,7,8}
t2={1,3,5,7,8}
t = {}&nbsp;&nbsp;
 
local n2, n = 1, 0
for i = 1, #t1 do t&#91;i&#93; = t1&#91;i&#93; end
for i = 1, #t1 do
&nbsp;&nbsp;local v1 = t1&#91;i&#93;
&nbsp;&nbsp;for j = n2, #t2 do
&nbsp;&nbsp;&nbsp;&nbsp;local v2 = t2&#91;j&#93;
&nbsp;&nbsp;&nbsp;&nbsp;n = n + 1
&nbsp;&nbsp;&nbsp;&nbsp;if v2 &#60; v1 then table.insert(t, n, v2)
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if v2 &#62; v1 then n2 = j
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else n2 = j + 1 end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;end
end
</pre>
=============
Но здесь используется три цикла обхода массивов, вместо двух.<br />Попробую исправить свой первый вариант, чтобы работал правильно. <br />
			<i>30.03.2015 13:07:36, Серж.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2649/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2649/topic329/</guid>
			<pubDate>Mon, 30 Mar 2015 13:07:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2625/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			такой вариант устроит:<br />-----------------------------<br />for i=1,#b do a&#91;#a+1&#93;=b&#91;i&#93; end; <br />table.sort(a);<br />for i=2,#a do if a&#91;i-1&#93;==a&#91;i&#93; then a&#91;i-1&#93;=nil end end; <br />table.sort(a); <br />
			<i>29.03.2015 17:47:03, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2625/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2625/topic329/</guid>
			<pubDate>Sun, 29 Mar 2015 17:47:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2567/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			последняя строчка<br /><br />print(unpack( c ) ) <br />
			<i>27.03.2015 15:36:34, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2567/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2567/topic329/</guid>
			<pubDate>Fri, 27 Mar 2015 15:36:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2566/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Мудрено.Вот попробуйте (я не проверял)<br /><br /><br /><br />a={1,2,3,6,7,8}<br />b={4,5,6,7}<br /><br />c = {}<br />for _,v in pairs(a) do table.insert(c,v) end<br />for _,v in pairs(b) do table.insert(c,v) end<br /><br />table.sort(c,function(x,y) return x &lt; y end)<br /><br />for i=#c,2,-1 do<br />	if c&#91;i&#93; == c&#91;i-1&#93; then table.remove(c,i) end<br />end<br /><br />print(unpack&#169;) <br />
			<i>27.03.2015 15:35:47, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2566/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2566/topic329/</guid>
			<pubDate>Fri, 27 Mar 2015 15:35:47 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2564/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Задача следующая:<br />Есть два массива с целочисленными индексами, элементами которых являются числа, отсортированные в порядке возрастания.<br />Нужно объединить их таким образом, чтобы результирующий массив содержал все элементы из обоих массивов без дубликатов, отсортированные также в порядке возрастания значения.<br />Задача осложняется тем, что исходные массивы портить не надо. Иначе бы я использовал table.insert() для вставки новых элементов из одного массива в другой.<br />Поэтому решил задачу следующим способом:<br />
====code====
<pre>function table.join(tab1, tab2)
-- Объединение массивов
-- Значениями массивов могут быть только числа
&nbsp;&nbsp;local tab, n1, n2, index = {}, #tab1, 1, 0
&nbsp;&nbsp;for i = 1, n1 do
&nbsp;&nbsp;&nbsp;&nbsp;local v1 = tab1&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;for j = n2, #tab2 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local v2 = tab2&#91;j&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if v2 &#60; v1 or i == n1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index = index + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tab&#91;index&#93; = v2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index = index + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tab&#91;index&#93; = v1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if v2 == v1 then n2 = j + 1 break
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif i &#60; n1 then n2 = j break end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;end
&nbsp;&nbsp;return tab
end</pre>
=============
А на table.or() Lua ругается. <br />
			<i>27.03.2015 14:21:34, Серж.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2564/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2564/topic329/</guid>
			<pubDate>Fri, 27 Mar 2015 14:21:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2561/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Mb7z6XYs" href="/user/114/" bx-tooltip-user-id="114">Дмитрий</a> пишет: <br /><br />====quote====<br /> s_mike@rambler.ru пишет: <br />for k,v in pairs(t2) do<br /> t1&#91;k&#93; = v<br /> end<br /><br />=============<br />А разве при этом по меньшей мере часть элементов массива t1 не будет затерта значениями элементов из массива t2?<br />Или диапазон индексов k, возвращаемый функцией pairs, для каждого массива всегда уникален?<br /><br />=============<br />Задача поставлена расплывчато. &nbsp;<br />Функция table.or - это для ассоциативных таблиц. &nbsp;Для целочисленных матриц надо написать иначе, но как именно - это после конкретизации, что именно требуется <br />
			<i>27.03.2015 13:15:50, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2561/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2561/topic329/</guid>
			<pubDate>Fri, 27 Mar 2015 13:15:50 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2559/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_tQjS0EFT" href="/user/47/" bx-tooltip-user-id="47">s_mike@rambler.ru</a> пишет: <br />for k,v in pairs(t2) do<br /> t1&#91;k&#93; = v<br /> end<br /><br />=============<br />А разве при этом по меньшей мере часть элементов массива t1 не будет затерта значениями элементов из массива t2?<br />Или диапазон индексов k, возвращаемый функцией pairs, для каждого массива всегда уникален? <br />
			<i>27.03.2015 12:56:58, Дмитрий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2559/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2559/topic329/</guid>
			<pubDate>Fri, 27 Mar 2015 12:56:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2558/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_cBoQrgJ9" href="/user/54/" bx-tooltip-user-id="54">Серж</a> пишет: <br />Есть в Lua функция объединения массивов?<br />Чтобы из двух массивов<br />
====code====
<pre> t1 = {4, 5, 6} 
t2 = {1, 2, 3, 6, 7, 8} </pre>
=============
получить один:<br />
====code====
<pre> t = {1, 2, 3, 4, 5, 6, 7, 8} </pre>
=============
?<br /><br />=============<br />вариантов море.<br /><br />можно просто добавить поля из t2 в t1<br /><br />function table.or(t1,t2)<br /> &nbsp; for k,v in pairs(t2) do<br /> &nbsp; &nbsp; t1&#91;k&#93; = v<br /> &nbsp; end<br /> &nbsp; return t1<br />end<br />если исходные массивы портить не надо, тогда<br /><br />table.or( table.or( {},t1 ),t2)<br /><br />если речь идет именно о матрицах целочисленными индексами, тогда несколько сложнее, но ненамного. Если обрисуете точнее задачу, зачем вам это нужно, наверняка решение будет простейшим. <br />
			<i>27.03.2015 12:35:53, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2558/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2558/topic329/</guid>
			<pubDate>Fri, 27 Mar 2015 12:35:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2532/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="http://quik2dde.ru/viewtopic.php?id=135" target="_blank" rel="nofollow">http://quik2dde.ru/viewtopic.php?id=135</a></noindex> <br />
			<i>27.03.2015 10:41:05, sam063rus.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2532/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2532/topic329/</guid>
			<pubDate>Fri, 27 Mar 2015 10:41:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2531/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="http://lua-users.org/wiki/MetamethodsTutorial" target="_blank" rel="nofollow">http://lua-users.org/wiki/MetamethodsTutorial</a></noindex> <br />
			<i>27.03.2015 10:38:34, sam063rus.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2531/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2531/topic329/</guid>
			<pubDate>Fri, 27 Mar 2015 10:38:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2530/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			могу ошибаться, конечно но, нет.<br /><br />однако, чтобы это сделать можно воспользоваться метаметодом "Add" <br />
			<i>27.03.2015 10:33:44, sam063rus.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2530/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2530/topic329/</guid>
			<pubDate>Fri, 27 Mar 2015 10:33:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Объединение массивов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message2529/topic329/">Объединение массивов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Есть в Lua функция объединения массивов?<br />Чтобы из двух массивов<br />
====code====
<pre>t1 = {4, 5, 6} 
t2 = {1, 2, 3, 6, 7, 8}</pre>
=============
получить один:<br />
====code====
<pre>t = {1, 2, 3, 4, 5, 6, 7, 8}</pre>
=============
? <br />
			<i>27.03.2015 10:30:58, Серж.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message2529/topic329/</link>
			<guid>http://forum.quik.ru/messages/forum10/message2529/topic329/</guid>
			<pubDate>Fri, 27 Mar 2015 10:30:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
