Что нового

[Массивы] Как сложить все числа из массива

atlake

Новичок
Сообщения
40
Репутация
0
Например массив:
Код:
Global $mas[10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


Как сложить все числа из массива? 1+2+3+4+5+6+7+8+9+10=55
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
atlake
Код:
Dim $mas[10] = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']	;	Объявление массива

Local $n	;	Объявление прменной

For $i = 0 To UBound($mas)-1	;	Запускаем цикл со значением от нуля до макс. значения массива

	$n += $mas[$i]	; К переменной $n применяем добовляющее присвоение "+="
	
Next	;	Цикл закончен перейти к выполнению других операций

ConsoleWrite($n&@LF)	;	Записать в консоль сумму сложения
 
Автор
A

atlake

Новичок
Сообщения
40
Репутация
0
ivsatel
Часто вижу такую конструкцию, только так и не могу понять, ..как она работает. Ну да ладно, главное работает. Никогда с массивами не дружил...) спасибо!
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Можно ещё вот так

Код:
Local $summ, $array[13] = [1, 2, 3, 4, 'text 1', 5, 6, 7, 'text 2', 8, 'text 3', 9, 10]

For $number In $array
	If IsNumber($number) Then
	    $summ += $number
	EndIf
Next

ConsoleWrite($summ & @LF)
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Viktor1703
Всё чётко, только от Dim настоятельно на офсайте отучают всех. Надо Local, а Dim наверно в 0.01% случаев.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
AZJIO

Эт мой косяк, видимо не обратил на него внимания.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
DarWiM [?]
А почему нельзя Dim?
Я использую Dim в функциях по отношению к глобальному массиву только если мне через некоторое время после работы скрипта он понадобится на короткий срок, а потом обнуляю его до следующего раза. Примерно так:
Код:
Global $aArray

;какие-то действия
;стал нужен массив
_MyFunc($aArray)
;что-то делаем с массивом
;обнуляем его
$aArray = 0
;и так дальше

Func _MyFunc(ByRef $a_Array)
	If Not IsArray($a_Array) Then Dim $a_Array[5][2]
	For $i = 0 To 4
		For $j = 0 To 1
			$a_Array[$i][$j] = Random(1, 100, 1)
		Next
	Next
EndFunc   ;==>_MyFunc


PS
Вариант от Viktor1703 должен работать быстрее.
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
DarWiM [?]
А почему нельзя Dim?
Потому что это имеет двойственный смысл. А область видимости обычно известна. А мы копируя примеры в справке привыкаем использовать Dim для объявления массива. Тот кто будет читать скрипт тоже задаётся лишним вопросом в какой области видимости указанная переменная.
 

Naisho

Знающий
Сообщения
86
Репутация
12
Код:
#include <Array.au3>

Global $mas[10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
$summ = Execute (_ArrayToString($mas, "+" ))
ConsoleWrite($summ&@CRLF)
 
Автор
A

atlake

Новичок
Сообщения
40
Репутация
0
Мне понравился больше всего вариант от Naisho.
Самый простой для понимания и без всяких циклов...
Спасибо! :ok: Будем использовать
 
Верх