Лучший отвечающий
Сложение элементов массива

Вопрос
-
Добрый день.
Каким образом можно сложить значения элементов одномерного массива, к примеру, 1 2 3 4?
Из языка С на ум пришло
x:=0; for (i=0;i<=3;i++) { x:=x+arr[i] }
но таким образом посчитать в PS у меня не получается. В переменной $x всё тот же массив.
6 августа 2015 г. 8:40
Ответы
-
$x = @(1, 2, 3, 4) $x | foreach {$summ += $_} $summ
The opinion expressed by me is not an official position of Microsoft
- Помечено в качестве ответа nskalinin 6 августа 2015 г. 9:06
6 августа 2015 г. 8:51Модератор -
Не совсем понимаю какие у вас данные содержатся в $_.groups[1].value, но если $x - строка чисел, то видимо числа. Попробуйте их сразу преобразовать в числа и складывать как числа, а не как символы в строку.
Такой вариант:
[int]$x = 0
$str=Get-Content C:\klaes\fen76\_baz2\Daten\*.g05 [regex]::Matches($str,'(?<=;)(\d{1,2}\s)') | ForEach-Object {$x+=[int]$_.groups[1].value} $sumЕсли там числа большие (больше 65 тысяч), то int на int32 поменяйте, если дробные, то на double ну и т.д.
Если не подходит, дайте пример $str, чтобы понятней было.
- Помечено в качестве ответа nskalinin 6 августа 2015 г. 11:02
- Изменено Семен Герасимов 6 августа 2015 г. 11:22 лишняя строка в скрипте
6 августа 2015 г. 10:59
Все ответы
-
$x = @(1, 2, 3, 4) $x | foreach {$summ += $_} $summ
The opinion expressed by me is not an official position of Microsoft
- Помечено в качестве ответа nskalinin 6 августа 2015 г. 9:06
6 августа 2015 г. 8:51Модератор -
$arr = @(1,2,3,4,5) for ($i -eq 0;$i -lt $arr.Count;$i++) { $x += $arr[$i] } $x
- Изменено Антон Петров 6 августа 2015 г. 8:55
6 августа 2015 г. 8:53 -
Добрый день.
Каким образом можно сложить значения элементов одномерного массива, к примеру, 1 2 3 4?
Из языка С на ум пришло
x:=0; for (i=0;i<=3;i++) { x:=x+arr[i] }
но таким образом посчитать в PS у меня не получается. В переменной $x всё тот же массив.
судя по тому что вы написали массив у вас в переменной arr
А в Х у вас сумма
The opinion expressed by me is not an official position of Microsoft
6 августа 2015 г. 9:02Модератор -
$str=Get-Content C:\klaes\fen76\_baz2\Daten\*.g05 [regex]::Matches($str,'(?<=;)(\d{1,2}\s)') | ForEach-Object {$x+=$_.groups[1].value} $x | foreach {$sum+=$_} $sum
Вот мой код. У меня в $x тип данных String. Подскажите как его сконвертировать в Object?6 августа 2015 г. 9:08 -
Не совсем понимаю какие у вас данные содержатся в $_.groups[1].value, но если $x - строка чисел, то видимо числа. Попробуйте их сразу преобразовать в числа и складывать как числа, а не как символы в строку.
Такой вариант:
[int]$x = 0
$str=Get-Content C:\klaes\fen76\_baz2\Daten\*.g05 [regex]::Matches($str,'(?<=;)(\d{1,2}\s)') | ForEach-Object {$x+=[int]$_.groups[1].value} $sumЕсли там числа большие (больше 65 тысяч), то int на int32 поменяйте, если дробные, то на double ну и т.д.
Если не подходит, дайте пример $str, чтобы понятней было.
- Помечено в качестве ответа nskalinin 6 августа 2015 г. 11:02
- Изменено Семен Герасимов 6 августа 2015 г. 11:22 лишняя строка в скрипте
6 августа 2015 г. 10:59 -
Спасибо, в данном варианте работает.
А в $_.groups[1].value у меня символ строки (в исходном файле является числом).
6 августа 2015 г. 11:05