0

以下のコードでやりたいことは、次のような行でファイルを解析することです

CSC3320,SYSTEM LEVEL PROGRAMMING,3,1,A
CSC3210,ASSEMBLY LEVEL PROGRAMMING,3,1,B

等級の合計 * 単位時間数 / 単位時間数の合計に基づいて GPA を計算します。分子と分母を別々に計算し、2 つを除算して出力を出力することで、これを実行しようとしています。

calculate(){
  awk -F, '
    numerator=0;
    denominator=0;
    if($4==1) {
         if($5=="A"){
            numerator+=(4*$3);
            denominator+=$3
         } else if ($5 == "B"){
            numerator+=(3*$3);
            denominator+=$3
         } else if ($5 == "C"){
            numerator+=(2*$3);
            denominator+=$3
         } else {
         }
     }
  GPA = numerator/denominator
  printf "Your GPA is %d\n" GPA
  'my_course.txt

}

私が得るのは、というエラーメッセージです

awk: 4 行目: 構文エラー if
awk: 18 行目: printf またはその付近の構文エラー

私の本では if else if ステートメントについて詳しく説明していません。では、これを入力した方法の正確なところは何ですか?

4

1 に答える 1

1

このコードは機能します。

calculate(){
  awk -F, '
  BEGIN{printf "Your GPA is : "}
  numerator = 0.0;
  denominator = 0.0;
  /^CSC/{
    if($4=1) {
         if($5=="A"){
            numerator+=(4.0*$3);
            denominator+=$3;
         } else if ($5 == "B"){
            numerator+=(3.0*$3);
            denominator+=$3;
         } else if ($5 == "C"){
            numerator+=(2.0*$3);
            denominator+=$3;
         } else {
           ; 
        }
     }
   }
   END{printf"%f", (numerator/denominator)}
  ' my_course.txt
}
于 2013-03-28T23:11:12.133 に答える