Инструменты пользователя

Инструменты сайта


help:arrays

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:arrays [2014/12/02 19:46]
asv ====Массив переменных====
help:arrays [2014/12/04 02:01] (текущий)
Строка 114: Строка 114:
 </​sxh>​ </​sxh>​
  
-====Двумерные массивы с числовыми индексами==== +----
- +
-Пример симуляции двумерного массива +
- +
-<sxh qsp> +
-! Индексы i1  0..8 +
-i1_max=9 ​    +
- +
-! Индексы i2  0..5 +
-i2_max=6 +
- +
-! Заполнение данных массива  +
-i1=0 +
-:​ПрыгЗадатьМассив1 +
- i2=0 +
- :​ПрыгЗадатьМассив2 +
- $ДвумерныйМассив[i1*i2_max+i2]='​[<<​i1>>,<<​i2>>​]'​ +
- i2+=1 +
- if i2<​i2_max : Jump '​ПрыгЗадатьМассив2'​ +
-i1+=1 +
-if i1<​i1_max : Jump '​ПрыгЗадатьМассив1'​ +
- +
- +
-! Вывод данных массива +
-i1=0 +
-:​ПрыгВыводМассива1 +
- *Nl  +
- i2=0 +
- :​ПрыгВыводМассива2 +
- *P $ДвумерныйМассив[i1*i2_max+i2]+' ​ ' +
- i2+=1 +
- if i2<​i2_max : Jump '​ПрыгВыводМассива2'​ +
-i1+=1 +
-if i1<​i1_max : Jump '​ПрыгВыводМассива1'​ +
-*Nl  +
- +
-!{Результат  +
-[0,0]  [0,1]  [0,2]  [0,3]  [0,4]  [0,5]   +
-[1,0]  [1,1]  [1,2]  [1,3]  [1,4]  [1,5]   +
-[2,0]  [2,1]  [2,2]  [2,3]  [2,4]  [2,5]   +
-[3,0]  [3,1]  [3,2]  [3,3]  [3,4]  [3,5]   +
-[4,0]  [4,1]  [4,2]  [4,3]  [4,4]  [4,5]   +
-[5,0]  [5,1]  [5,2]  [5,3]  [5,4]  [5,5]   +
-[6,0]  [6,1]  [6,2]  [6,3]  [6,4]  [6,5]   +
-[7,0]  [7,1]  [7,2]  [7,3]  [7,4]  [7,5]   +
-[8,0]  [8,1]  [8,2]  [8,3]  [8,4]  [8,5]   +
-+
- +
-!Получение индексов массива через функцию ARRPOS +
- +
-$Поиск='​[2,​5]'​ +
- +
-i1=ARRPOS('​$ДвумерныйМассив',​$Поиск)/​i2_max +
-i2=ARRPOS('​$ДвумерныйМассив',​$Поиск) mod i2_max +
- +
-if ARRPOS('​$ДвумерныйМассив',​$Поиск)<>​-1 : +
- *Nl $Поиск+'​=[<<​i1>>,<<​i2>>​]'​  +
-else  +
- *Nl '​Элемент не найден'​ +
-end +
-!{Результат  +
-[2,​5]=[2,​5] +
-+
- +
-</​sxh>​ +
- +
- +
- +
- +
- +
-====Двумерные массивы с текстовыми индексами==== +
- +
-Пример работы с массивом имеющим текстовые индексы +
-<sxh qsp> +
-! Индексы i1  0..3 +
-i1_max=4 ​    +
- +
-! Индексы i2  0..5 +
-i2_max=6 +
- +
-! Заполнение данных массива  +
-i1=0 +
-:​ПрыгЗадатьМассив1 +
- i2=0 +
- :​ПрыгЗадатьМассив2 +
- ! Знак двоеточие используется как разделитель  +
- ! между двумя численными индексами переведенными в текст +
- $ДвумерныйМассивТекстовыйИндекс['<<​i1>>:<<​i2>>'​]='​[<<​i1>>,<<​i2>>​]'​ +
- ! $МассивИндекс нужен для дальнейшего поиска через ARRPOS/​ARRCOMP +
- $МассивИндекс['<<​i1>>:<<​i2>>'​]='<<​i1>>:<<​i2>>'​ +
- ! МассивПорядок нужен для использования KILLVAR +
- МассивПорядок['<<​i1>>:<<​i2>>'​]=ARRSIZE('​МассивПорядок'​) +
- ! Добавлять новый элемент и удалять нужно  +
- !только одновременно в 3х массивах +
-  +
- i2+=1 +
- if i2<​i2_max : Jump '​ПрыгЗадатьМассив2'​ +
-i1+=1 +
-if i1<​i1_max : Jump '​ПрыгЗадатьМассив1'​ +
- +
- +
-! Вывод данных массива +
-i1=0 +
-:​ПрыгВыводМассива1 +
- *Nl  +
- i2=0 +
- :​ПрыгВыводМассива2 +
- *P $ДвумерныйМассивТекстовыйИндекс['<<​i1>>:<<​i2>>'​]+' ​ ' +
- i2+=1 +
- if i2<​i2_max : Jump '​ПрыгВыводМассива2'​ +
-i1+=1 +
-if i1<​i1_max : Jump '​ПрыгВыводМассива1'​ +
- +
-*Nl  +
- +
-!{ Результат  +
-[0,0]  [0,1]  [0,2]  [0,3]  [0,4]  [0,5]   +
-[1,0]  [1,1]  [1,2]  [1,3]  [1,4]  [1,5]   +
-[2,0]  [2,1]  [2,2]  [2,3]  [2,4]  [2,5]   +
-[3,0]  [3,1]  [3,2]  [3,3]  [3,4]  [3,5]   +
-+
- +
- +
-!Получение индексов массива через функцию ARRPOS +
-$Поиск='​[3,​0]'​ +
- +
-N=ARRPOS('​$ДвумерныйМассивТекстовыйИндекс',​$Поиск) +
-if N<>-1: +
- !Ищем разделитель ':' ​ в индексе +
- K=STRPOS($МассивИндекс[N],':'​) +
- +
- i1=VAL(MID($МассивИндекс[N],​0,​K-1)) +
- i2=VAL(MID($МассивИндекс[N],​K+1,​LEN($МассивИндекс[N])-K)) +
- +
- *NL $Поиск+'​=[<<​i1>>,<<​i2>>​]'​ +
-else +
- *Nl '​Элемент не найден'​ +
-end +
- +
- +
-!{ Результат  +
-[3,​0]=[3,​0] +
-+
- +
-*NL +
-!Удаление элемента массива через текстовый индекс +
-$Удалить='<<​i1>>:<<​i2>>'​ +
-*NL '​Удаляем элемент с индексом <<​i1>>:<<​i2>>'​ +
- +
-!Получаем номер элемента +
- +
-N=МассивПорядок[$Удалить] +
- +
- +
-!Удаляем элемент +
-KILLVAR '​$ДвумерныйМассивТекстовыйИндекс',​ N +
-KILLVAR '​$МассивИндекс',​ N +
-KILLVAR '​МассивПорядок',​ N +
- +
-!Еще раз выводим данные массива +
- +
-i1=0 +
-:​ПрыгВыводМассива3 +
- *Nl  +
- i2=0 +
- :​ПрыгВыводМассива4 +
- if $ДвумерныйМассивТекстовыйИндекс['<<​i1>>:<<​i2>>'​]<>'':​ +
- *P $ДвумерныйМассивТекстовыйИндекс['<<​i1>>:<<​i2>>'​]+' ​ ' +
- else +
- *P '​[DEL] ​ ' +
- end +
- i2+=1 +
- if i2<​i2_max : Jump '​ПрыгВыводМассива4'​ +
-i1+=1 +
-if i1<​i1_max : Jump '​ПрыгВыводМассива3'​ +
- +
- +
- +
-!{ Результат +
-Удаляем элемент с индексом 3:0 +
-[0,0]  [0,1]  [0,2]  [0,3]  [0,4]  [0,5]   +
-[1,0]  [1,1]  [1,2]  [1,3]  [1,4]  [1,5]   +
-[2,0]  [2,1]  [2,2]  [2,3]  [2,4]  [2,5]   +
-[DEL]  [3,1]  [3,2]  [3,3]  [3,4]  [3,5]   +
-+
- +
-</​sxh>​ +
- +
- +
-====Массив переменных==== +
- +
-Пример использования индекса в названии массива +
- +
-<sxh qsp> +
-! Индексы i1  0..5 +
-i1_max=6 ​    +
- +
-! Индексы i2  0..2 +
-i2_max=3 +
- +
-! Заполнение данных массива  +
-i1=0 +
-:​ПрыгЗадатьМассив1 +
- i2=0 +
- :​ПрыгЗадатьМассив2 +
- !названия заполняемых массивов  +
- !$МассивПеременных0 , $МассивПеременных1 , $МассивПеременных2 +
- DYNAMIC {$МассивПеременных}+i1+{['<<​i2>>'​]='​[<<​i1>>,<<​i2>>​]'​ } +
- i2+=1 +
- if i2<​i2_max : Jump '​ПрыгЗадатьМассив2'​ +
-i1+=1 +
-if i1<​i1_max : Jump '​ПрыгЗадатьМассив1'​ +
- +
- +
-! Вывод данных массива +
-i1=0 +
-:​ПрыгВыводМассива1 +
- *Nl  +
- i2=0 +
- :​ПрыгВыводМассива2 +
- DYNAMIC {*P $МассивПеременных}+i1+{['<<​i2>>'​] +' ​ '}  +
- i2+=1 +
- if i2<​i2_max : Jump '​ПрыгВыводМассива2'​ +
-i1+=1 +
-if i1<​i1_max : Jump '​ПрыгВыводМассива1'​ +
- +
-!{ Результат  +
-[0,0]  [0,1]  [0,2]   +
-[1,0]  [1,1]  [1,2]   +
-[2,0]  [2,1]  [2,2]   +
-[3,0]  [3,1]  [3,2]   +
-[4,0]  [4,1]  [4,2]   +
-[5,0]  [5,1]  [5,2]    +
-+
- +
-</​sxh>​+
  
 +См. также: [[howto:​arrays|Продвинутое использование массивов]]
  
 ---- ----
 [[help:​strings|Вперёд:​ Строки]] [[help:​strings|Вперёд:​ Строки]]
help/arrays.txt · Последние изменения: 2014/12/04 02:01 (внешнее изменение)