getthemike - 1 year ago 106
Vb.net Question

# Pseudocode check. Needs validation for assignment

I have already turned this in so you won't be helping me cheat. Just wondering if this looks right:

The assignment:
Input a list of employee names and salaries, and determine the
mean (average) salary as well as the number of salaries above and
below the mean.

The Plan:
Allow input of names and salaries
Calculate Mean
Sort values
Count values above Mean
Count values below Mean

``````//This program will allow a user to input an employee name and salary
//The output will contain the mean salary
//as well as the number of salaries above and below the mean
//
//Arrays Used:
//Name(K) = Array for employee names
//Salary(K) = Array for salaries
//
//Variables Used:
//Mean = Mean of all employees Salaries
//UpMean = Number of Employees making more than the mean
//DwnMean = Number of Employees making less than the mean
//Sum = Sum of all salaries
//CountM = Counter for Mean
//CountUp = Counter for # of salaries above mean
//CountDwn = Counter for # of salaries below mean

Main
Call WelcomeMessage
Call InputData
Call Calculate
Call OutputData
End Program

WelcomeMessage
Write, “Beginning the Salary Program”
End WelcomeMessage

InputData
Declare Name(100) Of Strings
Declare Salary(100) Of Real
Declare Mean, UpMean, DwnMean As Real
Set Sum = 0
Set CountM = 0
Set CountUp = 0
Set CountDwn = 0
Write, "Enter Employee name and Salary."
Write, "Enter *,0 when done."
Input Name(K), Salary(K)
While Name(K) <> "*"
Set CountM = CountM + 1
Set Sum = Sum + Salary
Write, "Enter Employee name and Salary."
Write, "Enter *,0 when done."
Input Name(K), Salary(K)
End While
End InputData

Calculation
//Here Mean is found
Set Mean = Sum / CountM
//Here Number of Employees making more than the mean is found
For K = Step 1 to CountM
If Salary(K) > Mean Then
Set CountUp = CountUp + 1
End If
//Here Number of Employees making more than the mean is found
Set CountDwn = CountM - CountUp
//The above algorythm doesn't account for the possibility
//of someone making exactly the average so subtract 1 to reconcile
If Salary(K) = Mean Then
Set CountDwn = CountDwn - 1
End If
End Calculation

OutputData
Write, "There were,"  CountM, "salaries entered."
Write, "The mean salary is:", Mean
Write, "There are", CountUp, "employees who make more than the average"
Write, "There are", CountDwn, "employees who make less than the average"
End OutputData
``````

A note about calculating `CountDwn`:

Your "subtract 1 to reconcile" will, depending on how exactly the `For` loop works in the implementation language, (a) generate an "undeclared variable"-type error, (b) generate an "index out of range" error, or (c) subtract one IFF the last salary was exactly equal to the average. (Also, your code doesn't include an `End For` in `Calculation`, but I assume it should be immediately after the first `End If` in that function.)

Instead of calculating `CountDwn` from `CountUp` (after all, every single salary could be equal to the average), I'd suggest including it in the loop:

``````Calculation
//Here Mean is found
Set Mean = Sum / CountM

For K = Step 1 to CountM
//Here Number of Employees making more than the mean is found
If Salary(K) > Mean Then
Set CountUp = CountUp + 1
End If

//Here Number of Employees making less than the mean is found
If Salary(K) < Mean Then
Set CountDwn = CountDwn + 1
End If
End For
End Calculation
``````

Note that `CountUp + CountDwn` is not necessarily equal to `CountM`.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download