In: Computer Science
Code the following in bash and run. Please show full code and don’t forget to comment your code.
Make a code that takes any list of numbers and calculates and displays the mean, median and mode.
Mean is also called average. The program to calculate mean is:
# Total numbers
n=5
# copying the value of
n
m=$n
# initialized sum by
0
sum=0
# array initialized
with
# some numbers
array=(1 2 3 4 5)
# loop until n is
greater
# than 0
while [ $n -gt 0 ]
do
# copy element in
a
# temp
variable
num=${array[`expr $n
- 1`]}
# add them to
sum
sum=`expr $sum +
$num`
# decrement count of
n
n=`expr $n -
1`
done
# displaying the average
# by piping with bc command
# bc is bash calculator
# command
avg=`echo "$sum / $m" | bc
-l`
printf '%0.3f' "$avg"
To compute median:
!/bin/bash
# This program computes the median of a list of integers on the command line.
# If there are no arguments, then it asks the user to enter them on
# separate lines. Then it prints the median (middle
# value after sorting). If there are an even number of numbers, then
# the median is the average of the 2 middle values, rounding down
# Copy the command line into array n
i=0 # current element of n
finished=0 # 1 (true) when there is no more interactive input expected
while (($# > 0)); do
((n[i] = $1))
shift
((i++))
finished=1
done
# Else if there are no arguments then ask the user to enter some numbers
if ((!finished)); then
echo Enter some numbers, one per line. Enter a blank line when done.
while ((!finished)); do
read x
if [ "$x" == "" ]; then
finished=1
else
((n[i++]=x))
fi
done
fi
# If n is empty then give up
size=${#n[*]}
if ((size==0)); then
echo Error: at least one number is expected
exit 1
fi
# Bubble sort n
((i=size-1))
while ((i>0)); do
j=0
while ((j<i)); do
if ((n[j]>n[j+1])); then #swap so n[j] <= n[j+1]
((t=n[j]))
((n[j]=n[j+1]))
((n[j+1]=t))
fi
((++j))
done
((--i))
done
# Compute the median from the middle 1 or 2 elements
((mid = size/2))
if ((size % 2 == 0)); then
((median = (n[mid] + n[mid-1]) / 2))
else
((median = n[mid]))
fi
# Print the sorted array and the median
echo The median of ${n[*]} is $median