9

これが私のコードです:

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)

これでコードは完全に機能します。配列の値を合計して平均を計算する方法がわかりません。誰かが私を助けたり、ヒントをくれたりできますか?値を足し合わせてから$nで割る必要があることはわかっていますが、値を足す方法がわかりません。

4

2 に答える 2

28

平均を計算するには、Measure-Objectコマンドレットを使用できます。

($array | Measure-Object -Average).average
于 2012-05-07T04:50:15.993 に答える
3

追加を行うために私が見つけた1つの方法は、次のようなものです。


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

の出力$sumは単に「+」を追加するだけで、invoke-expression実際に計算が行われます。したがって、出力は次のようになります。


$sum
1+2+3+4+5+6+7+8+9
Invoke-Expression $sum
45
于 2012-05-07T00:26:43.983 に答える