class P5_T_34::Interface
Define la interfaz para manipular un exámen (inicializarlo, orodenarlo, corregirlo…)
Attributes
calification[R]
correct[R]
exam[R]
incorrect[R]
inverseProc[R]
Public Class Methods
new(examI)
click to toggle source
# File lib/P5_T_34/Interface.rb, line 11 def initialize(examI) @exam = examI # Objeto de tipo Exam que contendrá las preguntas a corregir @calification = 0; # Calificación final después de realizar una corrección @correct = 0; # Número de respuestas correctas @incorrect = 0; # Número de respuestas incorrectas # Objeto Proc utilizado para el orden descendente de las preguntas @inverseProc = Proc.new { |first, second| second <=> first } end
Public Instance Methods
showQuestions()
click to toggle source
Muestra las preguntas en el orden actual de corrección
# File lib/P5_T_34/Interface.rb, line 28 def showQuestions () @exam.to_s end
simulation(answers)
click to toggle source
Muestra por pantalla la solución de un exámen paso a paso
# File lib/P5_T_34/Interface.rb, line 22 def simulation(answers) sortQuestions solve_to_s(answers) end
solve(answers)
click to toggle source
Resolver el exámen obteniendo las repuestas en un array. Retorna la calificación obtenida.
# File lib/P5_T_34/Interface.rb, line 50 def solve (answers) # Inicializamos variables @correct = 0 @incorrect = 0 @calification = 0 cont = 0 @exam.each { |act| if (answers[cont] == act.correct) then @correct += 1 else @incorrect += 1 end cont += 1 # Siguiente respuesta } @calification = ((@correct * 10) / (@exam.size)) end
solve_to_s(answers)
click to toggle source
Resolver el exámen obteniendo las respuestas en un array. Retorna un string que contiene todas las preguntas del exámen con sus respuestas corregidas y la calificación final.
# File lib/P5_T_34/Interface.rb, line 72 def solve_to_s (answers) #Inicializamos variables @correct = 0 @incorrect = 0 @calification = 0 cont = 0 #Comenzamos el examen texto = "\nTitulo del examen: " + @exam.title + "\n ---------------------------------------------------------------------- \n" @exam.each { |act| texto += cont.to_s + ") " + act.to_s + "\n ------------------------ \n Respuesta: " + answers[cont].to_s if (answers[cont] == act.correct) then @correct += 1 texto += " \t ---> Respuesta Correcta\n ------------------------\n" else @incorrect += 1 texto += " \t ---> Respuesta Incorrecta\n ------------------------\n\n" end cont += 1 #Siguiente respuesta } @calification = ((@correct * 10)/ (@exam.size)) texto += "Calificación final: " + @calification.to_s return texto end
sortIQuestions()
click to toggle source
Ordena las preguntas usando el objeto Proc predefinido en la clase, que realiza una ordenación descendente.
# File lib/P5_T_34/Interface.rb, line 44 def sortIQuestions sortQuestions &@inverseProc end
sortQuestions(&sortProc)
click to toggle source
Ordena las preguntas según el bloque que se le pase. En caso de no pasarle un bloque, se ordena de forma ascendente
# File lib/P5_T_34/Interface.rb, line 35 def sortQuestions (&sortProc) titleTmp = @exam.title aux = Exam.new(titleTmp) aux.push(*(@exam.sort &sortProc)) @exam = aux end