2012-05-06 10 views
6

Oto mój kod:wartości PowerShell zsumowanie

clear-host 

function isNumeric ($x) { 
try { 
    0 + $x | Out-Null 
    return $true 
} catch { 
    return $false 
} 
} 

function output-file ($ave, $high, $low, $date) 
{ 
write-output "Programer: Oday Sawaqed" 
write-output "Class: CIS 124" 
write-output "PowerShell Assignmnent" 
write-output "" 
Write-output "" 
write-output " Current Date     Average    Highest      Lowest" 
write-output " $date    $ave     $high     $low " 
} 


$array = @() 
$hold 
$n = 1 

do { 
$hold = read-host "number $n" 
if (isNumeric $hold -eq $true){ 
if (999 -ne $hold) { 
$array += $hold 
$n = $n + 1 
} 
else 
{ 
clear-host 
write-host "Thank you." 
write-host "The numbers you entered are:" $array 
write-host "Please select a file name to save the output:" 
$fileName = Read-host 

$date = get-date -format "dddd, MMMM d, yyyy" 
$array = $array | Sort-Object 
$ave = 
$high = $array | Select-Object -last 1 
$low = $array | Select-Object -first 1 

output-file $ave $high $low $date | Out-File c:\$fileName.txt 
} 
} 
else { 
write-host "Please enter a numeric value" 
} 
} 
while (999 -ne $hold) 

Teraz kod działa doskonale, po prostu nie może dowiedzieć się, jak dodać do siebie wartości w moim tablicy obliczyć średnią. Czy ktoś może mi pomóc lub dać mi wskazówkę! Wiem, że muszę dodać wartości razem, a następnie podzielić $ n, po prostu nie wiem, jak dodać wartości.

Odpowiedz

20

Aby obliczyć średnią można użyć Measure-Object cmdlet:

($array | Measure-Object -Average).average 
+0

Dziękuję bardzo :) Wiedziałem, że można to zrobić w ten sposób, z wyjątkiem tego, że zostałem umieszczony .ave zamiast .average i to dlatego nigdy nie zadziałało. Nadal jestem noobem. ale tak, dziękuję! –

+2

+1, szukałem sposobu na zsumowanie tablicy. A ty przypomniałeś mi, że ten środek-przedmiot wykonałby wiele zadań typu matematycznego. –

2

Jednym ze sposobów I found zrobić dodanie byłoby coś takiego:


$sum = $array -join '+' 
Invoke-Expression $sum 

Twój wyjście $sum jest po prostu zamiar dodać „+”, a następnie invoke-expression rzeczywiście do matematyki dla Ciebie. Więc wyjście będzie wyglądać następująco:


$sum 
1+2+3+4+5+6+7+8+9 
Invoke-Expression $sum 
45 
+0

Co o pierwszej metody wymienionej w linku, który wykorzystuje „środek-Object”, aby obliczyć sumę ? –

+0

to też zadziałało. bardzo dziękuję –

Powiązane problemy