#!/bin/csh -f
# Compute numerical mean of letter grades,
# e.g., "lgradavg A B- D+ C F A".
# A=4, B=3, C=2, D=1, F=0.  +=1/2, - ignored.
# Gives same result with any changes of case, e.g., "gradavg a b_ D= c F a"

set s = 0
foreach i ($*)
  switch ($i)
  case A*:
  case a*:
    @ s = $s + 4000
    breaksw
  case B*:
  case b*:
    @ s = $s + 3000
    breaksw
  case C*:
  case c*:
    @ s = $s + 2000
    breaksw
  case D*:
  case d*:
    @ s = $s + 1000
    breaksw
  endsw
  switch ($i)
  case *+:
  case *=:
    @ s = $s + 500
    breaksw
  case *-:
  endsw
end

@ a = $s / ($#argv * 10)
@ i = $a / 100
@ f = $a
if ($a>99) set f = `echo $a | cut -c2,3`

echo $i.$f
