#This function is used to generate random number between (0-100)
function RandomGen {
for i in {0..4}; do
arr[i]=$[$RANDOM%100]
echo Random Number $[$i+1] is ${arr[i]}
done
}
#This function is used to identify and display Highest and lowest number among generated random number.
function HighLow {
max=0 # ${arr[0]}
min=1000 # ${arr[0]}
for i in {1..4}; do
if [[ "${arr[i]}" -gt "$max" ]]; then
let "max = arr[i]"
fi
if [[ "${arr[i]}" -lt "$min" ]]; then
let "min = arr[i]"
fi
done
echo "Highest and lowest number among those random numbers are: $max and $min respectively."
}
答え1
短い答え:まずはmax
可能な最小数であり、min
可能な最大数よりも高いからです。
以下は、配列内の低い点と高い点を見つける簡単なアルゴリズムです。繰り返しが4回しかないので、何が起こっているのかを確認するために紙に書き留めなければなりません。あるいは、ループに複数のエコーを入れて、何が起こっているのかを確認できます。たとえば、
max=0 # ${arr[0]}
min=1000 # ${arr[0]}
for i in {1..4}; do
echo "Iteration $i: min=$min, max=$max"
if [[ "${arr[i]}" -gt "$max" ]]; then
echo "Found that ${arr[$i]} > $max"
let "max = arr[i]"
fi
if [[ "${arr[i]}" -lt "$min" ]]; then
echo "Found that ${arr[$i]} <$min"
let "min = arr[i]"
fi
done
echo "Highest and lowest number among those random numbers are: $max and $min respectively."
これはあなたに与えるでしょう
Random Number 1 is 23
Random Number 2 is 19
Random Number 3 is 92
Random Number 4 is 42
Random Number 5 is 12
Iteration 1: min=1000, max=0
Found that 19 > 0
Found that 19 <1000
Iteration 2: min=19, max=19
Found that 92 > 19
Iteration 3: min=19, max=92
Iteration 4: min=19, max=92
Found that 12 <19
Highest and lowest number among those random numbers are: 92 and 12 respectively.
max
最初に1000を割り当てると問題が発生します。
- - 編集する -
i=0
fromを埋めてto4
を繰り返したという事実を逃しました。i=1
4
0
として繰り返すと、4
私の答えはまだ正しいです。
しかし、そうでなければループarr[1]
はarr[4]
。最小値と最大値が配列のこの部分にある場合、答えは正しいです。ただし、固定値と値に基づいてarr[0]
最小値または最大値の場合は確認されず、最小値または最大値を見逃すことがあります。min
max
arr[0]
私の例では、arr[0]
最小値の19より大きい23なので正解です。