2012-05-06 32 views
6

Đây là mã của tôi:giá trị Powershell thêm cùng

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) 

Bây giờ mã hoạt động hoàn hảo, tôi chỉ không thể tìm ra cách để thêm lên các giá trị trong mảng của tôi để tính toán mức trung bình. ai đó có thể vui lòng giúp tôi hoặc cho tôi một gợi ý! tôi biết rằng tôi cần phải thêm các giá trị với nhau và sau đó chia được $ n, tôi chỉ không biết làm thế nào để thêm các giá trị.

Trả lời

20

Để tính trung bình bạn có thể sử dụng Measure-Object Cmdlet:

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

Cảm ơn bạn rất nhiều :) tôi biết bạn có thể làm điều đó theo cách này ngoại trừ việc tôi đã được đặt .ave thay vì. trung bình và đó là lý do tại sao nó không bao giờ làm việc. Tôi vẫn là một noob. nhưng vâng, cảm ơn bạn! –

+2

+1, tôi đang tìm cách tổng hợp một mảng. Và bạn nhắc tôi rằng đối tượng đo lường cũng sẽ thực hiện nhiều nhiệm vụ kiểu toán học. –

2

Một cách tôi found làm việc bổ sung sẽ là một cái gì đó như thế này:


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

đầu ra của bạn của $sum chỉ đơn giản là sẽ thêm dấu "+" và sau đó invoke-expression sẽ thực sự làm toán cho bạn. Vì vậy, đầu ra của bạn sẽ giống như thế:


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

gì về phương pháp đầu tiên được liệt kê trong các liên kết trong đó sử dụng "biện pháp đối tượng" để tính toán tổng ? –

+0

cũng đã hoạt động. cảm ơn bạn rất nhiều –

Các vấn đề liên quan