user1863886
user1863886

Reputation:

Dynamic input array Powershell

once again I contact you because I am once again having problems with a Powershell script assignment. My current assignement is to make a script that lets a user put in 1-10 values. The values have to be positive numbers. After that I have to calculate an average of an array.

My idea in this was the following:

clear-host  
$averageArray = @()

Write-Host "How many numbers do you want to put in?" -for yellow
Write-Warning "Maximum is 10!"
Write-Host "Press the Enter key to continue."

$amountValues = Read-host
while($amountVAlues -notmatch "^([1-9]|[1][0])$") {
   $amountValues = Read-Host "Please enter a number between 1 and 10"

if($amountVAlues -notmatch "^([1-9]|[1][0])$") {Write-host "Error! Please enter a number between 1 and 10!"}
} 

$value1 = read-host "Enter number one"

while($value1 -notmatch '^\d+$') {
   $value1 = Read-Host 
if($value1 -notmatch '^\d+$') {Write-host "Error! Please enter a positive number!"}
} 

$value2 = read-host "Enter number two"

while($value2 -notmatch '^\d+$') {
   $value2 = Read-Host 
if($value2 -notmatch '^\d+$') {Write-host "Error! Please enter a positive number!"}
} 


$averageArray = $averageArray + $value1

write-host "$averageArray"


read-host

I created an array, and made the user input a number between 1-10 for the amount of total $values they want in the array. After that I wanted to loop the input of a $value, and input it in the array. I wanted to loop it as many times as the $amountValues variable.

Problem with doing this is that if I would loop it, $variable1 would get overwritten an 'x' amount of times.

Is there any way to input the values via a loop into the array?

Upvotes: 1

Views: 4719

Answers (1)

CB.
CB.

Reputation: 60918

I'ld do it like this:

while ( (1..10) -notcontains $g)
{
    $g = read-host "How many numbers do you want to put in? (value from 1 to 10) " 
}    
$ar=@()
for ($i=0; $i -lt $g; $i++)
{
   $ar += read-host "Enter value $($i+1)"
}    
$averageArray = ($ar | Measure-Object -Average).average    
write-host "Average is : $averageArray"

Upvotes: 5

Related Questions