計算加算と合計を組み合わせる方法

計算加算と合計を組み合わせる方法

これが私が今まで持っているものです。ループが完了するたびにユーザー入力を取得するためにカウントを結合し、それらを合計して入力の平均を生成するにはどうすればよいですか?

#!/bin/bash
#Variables
lower=1
middle=50
higher=100
notdone=true

while [ $notdone ]; do

#Pick a Number
echo "Please pick a number between 1 and 100: "
read input


#Loop until wiithin range
until [[ $input -ge $lower ]] && [[ $input -le $higher ]]; do
    echo "Number not in range. 
    Please pick a number between 1 and 100: "
    read input
done

echo "You picked $input"

if [[ $input -ge $middle ]]; then 
    echo "Your answer is in the top half"
    fi

if [[ $input -le $middle ]]; then
    echo "Your answer is in the top half"
    fi
done

ベストアンサー1

$count質問に対するあなたのコメントに答えるためには、実際に平均を計算する前にそれを行う必要はありません。それまでは十分です。

total=$(( total + input ))

これにより、累積合計にユーザー入力が追加されます。

その後、平均は次のように計算できます$(( total / count ))(シェルは整数演算のみを実行するため、これは整数になります。」を参照)。Bashまたは他の言語/フレームワークで整数および浮動小数点計算を実行するには?")。


他のもの:

変数$notdoneが次に設定されました。ひも trueそして、あなたはそれで使用しますwhile [ $notdone ]。引用符のない文字列に対するこのようなテストは脆弱であり、whileループ条件は次のように書くのが最善です。

while [ "$notdone" = "true" ]

また、コード内の他のすべての変数拡張を参照することも考慮する必要があります。

if [[ "$input" -ge "$middle" ]]; then

これは入力ループで特に重要です。そうでない場合は、間にスペースがある内容を入力すると構文エラーが発生します。

を使用しているので、bash上記は次のように書くこともできます。

if (( input >= middle )); then

また、メインループを終了する方法がありません。echo結局、あなたは「あなたの答えは次のようになります。トップ半分」。

おすすめ記事