Solución

@donlarry
·28/3/2026TypeScript
solution.tsTypeScript
interface GradeResult {
  average: number;
  grade: string;
  passed: boolean;
  bonus: number;
}

const GRADE_A_THERESHOLD = 90
const GRADE_B_THERESHOLD = 80
const GRADE_C_THERESHOLD = 70
const GRADE_D_THERESHOLD = 60
const PASSING_SCORE = 60
const BONUS1 = 10
const BONUS2 = 5
const SHIFT_DECIMAL = 10

function sum(a: number, b: number): number {
  return a + b;
}

function round1(n: number) {
  return Math.round(n * SHIFT_DECIMAL) / SHIFT_DECIMAL;
}

function getGrade(average: number): string {
  if (average >= GRADE_A_THERESHOLD)
    return "A";
  if (average >= GRADE_B_THERESHOLD)
    return "B";
  if (average >= GRADE_C_THERESHOLD)
    return "C";
  if (average >= GRADE_D_THERESHOLD)
    return "D";
  return "F";
}

function getBonus(average: number, subject: string) {
  if (subject === "math" && average >= GRADE_A_THERESHOLD)
    return BONUS1;
  if (subject === "science" && average >= GRADE_B_THERESHOLD)
    return BONUS2;
  return 0;
}

export function processStudentGrades(grades: number[], subject: string): GradeResult {
  let totalScore = grades.reduce(sum);

  let average = round1(totalScore / grades.length);

  let grade = getGrade(average);

  let passed = average >= PASSING_SCORE;

  let bonus = getBonus(average, subject)

  return { average: average, grade: grade, passed: passed, bonus: bonus };
}
0respuestas
Respuestas
0

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.
Markdown