#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 을 채우고 to 4
를 반복했다는 사실을 놓쳤습니다 .i=1
4
0
로 반복하면 4
내 대답은 여전히 정확합니다.
그러나 그렇지 않으면 루프 arr[1]
는 arr[4]
. 최소값과 최대값이 배열의 이 부분에 있으면 답이 정확합니다. 단, 고정된 값 과 값을 arr[0]
기준으로 최소값이나 최대값인 경우 에는 확인되지 않아 최소값이나 최대값을 놓칠 수 있습니다.min
max
arr[0]
제 예에서는 arr[0]
최소값인 19보다 큰 23이므로 정답입니다.