grade_report.f90 en Fortran
Los puntajes de quiz se pliegan en promedios y calificaciones, y luego en un reporte formateado.
! Average quiz scores into letter grades and print the class report.
program grade_report
implicit none
character(len=8) :: names(4) = ["Imani ", "Theo ", &
"Sofia ", "Miles "]
integer :: quizzes(3, 4) = reshape( &
[92, 88, 95, 78, 83, 80, 85, 91, 89, 62, 70, 68], [3, 4])
real :: avg
integer :: i
print '(a)', "student avg grade"
print '(a)', "---------------------"
! Each column of the matrix is one student's three quizzes.
do i = 1, 4
avg = sum(quizzes(:, i)) / 3.0
print '(a, f6.1, 2x, a)', names(i), avg, letter(avg)
end do
print '(a)', "---------------------"
print '(a, f5.1)', "class avg ", sum(quizzes) / 12.0
print '(a, i0)', "quizzes graded: ", size(quizzes)
contains
! One grade band per branch, best first.
pure function letter(avg) result(grade)
real, intent(in) :: avg
character(len=6) :: grade
if (avg >= 90.0) then
grade = "A"
else if (avg >= 80.0) then
grade = "B"
else if (avg >= 70.0) then
grade = "C"
else
grade = "retake"
end if
end function letter
end program grade_report
Cómo funciona
reshapevierte doce puntajes en una matriz de 3 por 4, una columna por estudiante.sum(quizzes(:, i)) / 3.0promedia una columna con una sección de arreglo.- La función contenida
lettermapea cada promedio a su banda de calificación.
Palabras clave y builtins usados aquí
charactercontainsdoelseendfunctionifimplicitintegerintentlennoneprintprogrampurerealreshaperesultsumthen
El intento, en números
- Líneas
- 38
- Caracteres a escribir
- 1013
- Tokens
- 220
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 203 segundos.
Paso 2 de 3 en Bis; paso 26 de 27 en Fundamentos del lenguaje.