Linux 创建一个成绩计算脚本,计算每个预科期中和期末科目的平均成绩
我想创建一个linux脚本,允许用户输入他/她有多少主题。脚本应为每个主题的平均值。所有科目都有3个学期。预科。期中考试和期末考试。脚本还应获得预科考试的平均成绩。期中考试、期末考试和总平均成绩(预科+期中考试+期末考试/3) 是的,给你:Linux 创建一个成绩计算脚本,计算每个预科期中和期末科目的平均成绩,linux,bash,sh,Linux,Bash,Sh,我想创建一个linux脚本,允许用户输入他/她有多少主题。脚本应为每个主题的平均值。所有科目都有3个学期。预科。期中考试和期末考试。脚本还应获得预科考试的平均成绩。期中考试、期末考试和总平均成绩(预科+期中考试+期末考试/3) 是的,给你: #!/bin/bash declare -A matrix #terms num_rows=3 #subjects read -p "Enter the number of subects:" num_columns declare -A subj_arr
#!/bin/bash
declare -A matrix
#terms
num_rows=3
#subjects
read -p "Enter the number of subects:" num_columns
declare -A subj_array
for ((i=1;i<=num_columns;i++)) do
read -p "Enter the name of subject ${i}:" subj_name
subj_array[$i+1]=${subj_name}
for ((j=1;j<=num_rows;j++)) do
if [[ $j == "1" ]] ; then
read -p "Enter prelim marks for subject ${subj_name}: " jj
elif [[ $j == "2" ]]; then
read -p "Enter midterm marks for subject ${subj_name}: " jj
else
read -p "Enter final marks for subject ${subj_name}: " jj
fi
matrix[$j,$i]=$jj
done
done
f1="%$((${#num_rows}+1))s"
f2=" %9s"
printf "$f1" ''
for ((i=1;i<=num_rows;i++)) do
printf "$f2" $i
done
echo
for ((j=1;j<=num_columns;j++)) do
printf "$f1" $j
for ((i=1;i<=num_rows;i++)) do
printf "$f2" ${matrix[$i,$j]}
done
echo
done
for ((i = 1; i <= $num_columns; i++)); do
sum_per_subj=0
for ((j = 1; j <= $num_rows; j++)); do
sum_per_subj=$(echo $sum_per_subj+${matrix[$j,$i]} | bc)
done
echo "Subject ${subj_array[$i+1]} Average is":
printf '%.4f\n' $(echo $sum_per_subj / $num_columns | bc -l)
done
overall_sum=0;
for ((i = 1; i <= $num_rows; i++)); do
sum_per_term=0
for ((j = 1; j <= $num_columns; j++)); do
sum_per_term=$(echo $sum_per_term+${matrix[$i,$j]} | bc)
done
overall_sum=$(echo $overall_sum+${sum_per_term} | bc)
if [[ $i == "1" ]] ; then
echo "Term prelim Average is":
elif [[ $i == 2 ]]; then
echo "Term mideterm Average is":
else
echo "Term final Average is":
fi
printf '%.4f\n' $(echo $sum_per_term / $num_rows | bc -l)
done
echo "overall Average is":
printf '%.4f\n' $(echo $overall_sum / $num_rows | bc -l)
#/bin/bash
声明-矩阵
#条件
行数=3
#科目
read-p“输入子项的数量:”num_列
declare-A subc_数组
对于((i=1;i
Enter number of subject: 3
Enter subject Name: Math
Enter Prelim Grade For Math: 89
Enter Midterm Grade For Math:89
Enter Final Grade For Math:89
Math Average is: 89
Enter subject Name: English
Enter Prelim Grade For English: 90
Enter Midterm Grade For English:90
Enter Final Grade For English:90
English Average is: 90
Enter subject Name: Science
Enter Prelim Grade For Science: 91
Enter Midterm Grade For Science:91
Enter Final Grade For Science:91
Science Average is: 91
Prelim Average is: 90
Midterm Average is:90
Final Average is:90
Overall Average is:90
#!/bin/bash
declare -A matrix
#terms
num_rows=3
#subjects
read -p "Enter the number of subects:" num_columns
declare -A subj_array
for ((i=1;i<=num_columns;i++)) do
read -p "Enter the name of subject ${i}:" subj_name
subj_array[$i+1]=${subj_name}
for ((j=1;j<=num_rows;j++)) do
if [[ $j == "1" ]] ; then
read -p "Enter prelim marks for subject ${subj_name}: " jj
elif [[ $j == "2" ]]; then
read -p "Enter midterm marks for subject ${subj_name}: " jj
else
read -p "Enter final marks for subject ${subj_name}: " jj
fi
matrix[$j,$i]=$jj
done
done
f1="%$((${#num_rows}+1))s"
f2=" %9s"
printf "$f1" ''
for ((i=1;i<=num_rows;i++)) do
printf "$f2" $i
done
echo
for ((j=1;j<=num_columns;j++)) do
printf "$f1" $j
for ((i=1;i<=num_rows;i++)) do
printf "$f2" ${matrix[$i,$j]}
done
echo
done
for ((i = 1; i <= $num_columns; i++)); do
sum_per_subj=0
for ((j = 1; j <= $num_rows; j++)); do
sum_per_subj=$(echo $sum_per_subj+${matrix[$j,$i]} | bc)
done
echo "Subject ${subj_array[$i+1]} Average is":
printf '%.4f\n' $(echo $sum_per_subj / $num_columns | bc -l)
done
overall_sum=0;
for ((i = 1; i <= $num_rows; i++)); do
sum_per_term=0
for ((j = 1; j <= $num_columns; j++)); do
sum_per_term=$(echo $sum_per_term+${matrix[$i,$j]} | bc)
done
overall_sum=$(echo $overall_sum+${sum_per_term} | bc)
if [[ $i == "1" ]] ; then
echo "Term prelim Average is":
elif [[ $i == 2 ]]; then
echo "Term mideterm Average is":
else
echo "Term final Average is":
fi
printf '%.4f\n' $(echo $sum_per_term / $num_rows | bc -l)
done
echo "overall Average is":
printf '%.4f\n' $(echo $overall_sum / $num_rows | bc -l)