actually it is only 3.75 if you assume each course is weighted equally. that is, each course is worth the same number of credits.
A+ = 4.33
A = 4.00
A- = 3.67
B+ = 3.33
B = 3.00
B- = 2.67
C+ = 2.33
C = 2.00
C- = 1.67
D+ = 1.33
D = 1.00
D- = 0.67
E = 0.00
i don't know if D+ and D- exists for grading; i personally have never seen them. regardless, i included them in the expected values above.
let n >= 0
let gpa_n = the grade for a course, n
let c_n = the number of credits per course, n
average weighted gpa uses the formula:
gpa_average = sum_over_n(gpa_n * c_n) / sum_over_n(c_n)