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