Pruebas de opción múltiple

Published by persolut in

Tu tarea es escribir un programa que permita a los profesores crear una prueba de opción múltiple en una clase llamada Testpaper y también poder asignar una calificación mínima para aprobar. La clase Testpaper debe implementar la interfaz ITestpaper proporcionada en la plantilla de código, que tiene las siguientes propiedades:

  1. string Subject
  2. string[] MarkScheme
  3. string PassMark

Las interfaces no definen constructores para las clases que las implementan, por lo que tendrás que agregar un método constructor que reciba los parámetros (string subject, string[] markScheme, string passMark).

Además, ¡debemos crear objetos de estudiantes para realizar la prueba! Crea otra clase llamada Student que implemente la interfaz IStudent proporcionada, que tiene los siguientes miembros:

  1. string[] TestsTaken
  2. void TakeTest(ITestpaper paper, string[] answers)

Ejemplos

paper1 = new Testpaper("Maths", new string[] { "1A", "2C", "3D", "4A", "5A" }, "60%")
paper2 = new Testpaper("Chemistry", new string[] { "1C", "2C", "3D", "4A" }, "75%")
paper3 = new Testpaper("Computing", new string[] { "1D", "2C", "3C", "4B", "5D", "6C", "7A" }, "75%")

student1 = new Student()
student2 = new Student()
student1.TestsTaken ➞ { "No tests taken" }
student1.TakeTest(paper1, new string[] { "1A", "2D", "3D", "4A", "5A" })
student1.TestsTaken ➞ { "Maths: Passed! (80%)" }

student2.TakeTest(paper2, { "1C", "2D", "3A", "4C" })
student2.TakeTest(paper3, { "1A", "2C", "3A", "4C", "5D", "6C", "7B" })
student2.TestsTaken ➞ { "Chemistry: Failed! (25%)", "Computing: Failed! (43%)" }

Notas

  • Redondea los porcentajes al número entero más cercano.
  • Recuerda que la propiedad TestsTaken debe devolver { "No tests taken" } cuando todavía no se haya realizado ninguna prueba.
  • Cuando se haya realizado una o más pruebas, la propiedad TestsTaken debe devolver un arreglo de cadenas ordenado alfabéticamente por asignatura, en el formato mostrado arriba.