Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: winwebber on March 06, 2019, 08:12:29 PM

Title: Как перевернуть массив?
Post by: winwebber on March 06, 2019, 08:12:29 PM
Казалось простой вопрос но КАААК? у меня уже горит.
1
2
3
4
=>
4
3
2
1
Заранее благодарен
Title: Re: Как перевернуть массив?
Post by: Космич on March 06, 2019, 09:11:42 PM
Code: (clickermann) [Select]
STRSEPARATE("1:2:3:4", ":", $array)

$size = ARRSIZE($array)

FOR($i = 0, $i < $size/2)
   $temp = $array[$i]
   $array[$i] = $array[$size-$i-1]
   $array[$size-$i-1] = $temp
END_CYC

WHILE($size != 0)
   PRINT(ARRPOP($array))
   $size = ARRSIZE($array)
END_CYC

HALT
Title: Re: Как перевернуть массив?
Post by: Oraven on March 06, 2019, 09:12:50 PM
Переворачиваем массив $arr
Code: (clickermann) [Select]
$sz = ARRSIZE($arr)-1
FOR($i=0,$i<$sz/2)
   $tmp = $arr[$i]
   $arr[$i] = $arr[$sz-$i]
   $arr[$sz-$i] = $tmp
END_CYC

Пример:
Code: (clickermann) [Select]
LOGCLEAR

FOR($a=1,$a<=100) // формируем массив чисел
   ARRPUSH($arr, $a)
END_CYC

LOGWRITE ("=== ДО ===========")
FOR($a=0,$a<ARRSIZE($arr))
   LOGWRITE ($arr[$a])
END_CYC
LOGWRITE ("==================")

$sz = ARRSIZE($arr)-1
FOR($i=0,$i<$sz/2)
   $tmp = $arr[$i]
   $arr[$i] = $arr[$sz-$i]
   $arr[$sz-$i] = $tmp
END_CYC

LOGWRITE ("=== После ========")
FOR($a=0,$a<ARRSIZE($arr))
   LOGWRITE ($arr[$a])
END_CYC
LOGWRITE ("==================")

HALT
Title: Re: Как перевернуть массив?
Post by: winwebber on March 07, 2019, 11:03:27 AM
Oraven , всем спасибо, кто отвечал.
У меня твой вариат почи подошел, но немного подернизировал потому что терял в твоем варианте последниитри точки (координаты), вот что у меня получилось.
Code: [Select]
SCANPICTURE($arr,0,0, 1980,1040,"./bmp/line.bmp")
print("Before")
WHILE (arrsize($arr) > 0)
 $y_term = arrpop($arr)
 $x_term = arrpop($arr)
 print ($x_term,",",$y_term)
END_CYC   
print("After")
SCANPICTURE($arr,366,188, 1084,1043,"./bmp/line_messaging.bmp")
////is network list loaded
$sz = ARRSIZE($arr)-1
FOR($i=0,$i<$sz/2)
   $tmp = $arr[$i]
   $arr[$i] = $arr[$sz-$i]
   $arr[$sz-$i] = $tmp
END_CYC
WHILE (arrsize($arr) > 0)
 $x_term=arrpop($arr)
 $y_term=arrpop($arr)
 print ($x_term,",",$y_term)
END_CYC
Code: [Select]
10:59:35 AM Before
10:59:35 AM 459,1010
10:59:35 AM 459,914
10:59:35 AM 459,818
10:59:35 AM 459,733
10:59:35 AM 459,648
10:59:35 AM 459,563
10:59:35 AM 459,478
10:59:35 AM 459,393
10:59:35 AM 459,308
10:59:35 AM 459,223
10:59:35 AM After
10:59:37 AM 459,223
10:59:37 AM 459,308
10:59:37 AM 459,393
10:59:37 AM 459,478
10:59:37 AM 459,563
10:59:37 AM 459,648
10:59:37 AM 459,733
10:59:37 AM 459,818
10:59:37 AM 459,914
10:59:37 AM 459,1010