viernes, 14 de febrero de 2014

Unidad 3: Ejercicio 10

Hacemos uso de la clase Test definida previamente para realizar un examen:

Hacer un programa en el que se declare un vector de 10 datos de tipo Test, asignándole valores al declararlo. Plantear a continuación un examen con las 5 preguntas almacenadas en el vector seleccionándolas de manera aleatoria y sin que haya preguntas repetidas. Se visualizará el número de preguntas acertadas y falladas.

package unidad3ejercicio9;

   import java.util.Random;
import java.util.Scanner;

public class unidad3ejercicio10 {

public static void main(String[] args) {


Test[] examen = new Test[10];
String[] opciones = new String[4];
Random preguntaAleatoria = new Random();
int preguntas[] = new int[5];
Scanner reader = new Scanner(System.in);
char respuesta;
int correcta = 0;
int erronea = 0;

for (int i = 0; i < examen.length; i++) {
examen[i] = new Test();
}

opciones[0] = "23";
opciones[1] = "8";
opciones[2] = "12";
opciones[3] = "25";

examen[0].setNumeroDePregunta(1);
examen[0].setEnunciado("¿Cuantos bits tiene un byte?");
examen[0].setOpciones(opciones);
examen[0].setValida('b');

opciones[0] = "Ocurre al crear varios métodos en una clase";
opciones[1] = "Es la acción de crear clases derivadas de una clase b";
opciones[2] = "Ocurre al crear un método sin retorno";
opciones[3] = "Ocurre al definir variables en una clase";

examen[1].setNumeroDePregunta(2);
examen[1].setEnunciado("¿Que entiende por herencia en Java?");
examen[1].setOpciones(opciones);
examen[1].setValida('b');

opciones[0] = "new";
opciones[1] = "abstract";
opciones[2] = "public";
opciones[3] = "private";

examen[2].setNumeroDePregunta(3);
examen[2].setEnunciado("¿Una clase o un método son abstractos si se declaran con la palabra reservada?");
examen[2].setOpciones(opciones);
examen[2].setValida('b');

opciones[0] = "Es una clase que no puede ser instanciada";
opciones[1] = "Secuencia de caracteres delimitada entre dobles comillas";
opciones[2] = "Es un método abstracto";
opciones[3] = "Son caracteres sin dobles comillas";

examen[3].setNumeroDePregunta(4);
examen[3].setEnunciado("¿Que es una cadena?");
examen[3].setOpciones(opciones);
examen[3].setValida('d');

opciones[0] = "IndexOf";
opciones[1] = "ReadLine";
opciones[2] = "Equals";
opciones[3] = "Trim";

examen[4].setNumeroDePregunta(5);
examen[4].setEnunciado("¿Método creado para la entrada de datos desde teclado?");
examen[4].setOpciones(opciones);
examen[4].setValida('b');

opciones[0] = "Getchars";
opciones[1] = "LastIndexOf";
opciones[2] = "Length";
opciones[3] = "CompareTo";

examen[5].setNumeroDePregunta(6);
examen[5].setEnunciado("¿Método que calcula el número de caracteres o longitud de un objeto cadena?");
examen[5].setOpciones(opciones);
examen[5].setValida('c');

opciones[0] = "Solo los métodos";
opciones[1] = "Solo las variables";
opciones[2] = "Variables y métodos";
opciones[3] = "No hereda nada";

examen[6].setNumeroDePregunta(7);
examen[6].setEnunciado("¿Al crear una clase derivada de una clase base se hereda?");
examen[6].setOpciones(opciones);
examen[6].setValida('c');

opciones[0] = "public class Componente extends Producto";
opciones[1] = "public class Componente inherit Producto";
opciones[2] = "public class Componente implements Producto";
opciones[3] = "public class Componente belong to Producto";

examen[7].setNumeroDePregunta(8);
examen[7].setEnunciado("¿Qué código de los siguientes tiene que ver con la herencia?");
examen[7].setOpciones(opciones);
examen[7].setValida('a');

opciones[0] = "Una libreria de Java";
opciones[1] = "Una versión de Java especial para servidores";
opciones[2] = "Un IDE para desarrollar aplicaciones";
opciones[3] = "Ninguna de las anteriores";

examen[8].setNumeroDePregunta(9);
examen[8].setEnunciado("¿Qué es Eclipse?");
examen[8].setOpciones(opciones);
examen[8].setValida('c');

opciones[0] = "Sus cardinalidad y su tipo";
opciones[1] = "Sus atributos y sus métodos";
opciones[2] = "La forma en que establece comunicación e intercambia mensajes";
opciones[3] = "Su interfaz y los eventos asociados";

examen[9].setNumeroDePregunta(10);
examen[9].setEnunciado("¿Qué elementos crees que definen a un objeto?");
examen[9].setOpciones(opciones);
examen[9].setValida('b');

                int x=0;
                int y=0;
                while (x < preguntas.length) {
                    preguntas[x] = preguntaAleatoria.nextInt(10);
                    while(preguntas[x] != preguntas[y] && y<x) ++y;
                    if (x==y) ++x;
                     
             
                }
         
               /*
         
for (int i = 0; i < preguntas.length; i++) {
preguntas[i] = preguntaAleatoria.nextInt(10);
//recorremos el vector para ver si en los elementos
//anteriores al que acabo de generar no está
for (int j = 0; j < i; j++) {
if (preguntas[i] == preguntas[j]) {
i--;
break;
}
}
}

                *
                */
for (int i = 0; i < preguntas.length; i++) {
System.out.println("Pregunta numero: " + (i + 1));
examen[preguntas[i]].presenta();
System.out.println("Introduce la respuesta correcta: ");
respuesta = (reader.nextLine()).charAt(0);
if (respuesta == examen[preguntas[i]].getValida()) {
correcta++;
} else {
erronea++;
}
}
System.out.println("Preguntas acertadas: " + correcta);
System.out.println("Preguntas falladas: " + erronea);
}

}




/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package unidad3ejercicio9;

/**
*
* @author juan
*/
public class Test {
    private int numero;
    private String enunciado;
    private String [] opciones;
    private char valida;

    public Test(int numero, String enunciado, String[] opciones, char valida) {
        this.opciones = new String[5];
      
        this.numero = numero;
        this.enunciado = enunciado;
    
        System.arraycopy(opciones, 0, this.opciones, 0, opciones.length);
        /*
        for (int i = 0; i < opciones.length; i++) {
            this.opciones[i] = opciones[i];
          
        }
        */
        this.valida = valida;
    }

    public Test() {
        numero=0;
        enunciado="";
        opciones = new String[4];
      
    }

    public String getEnunciado() {
        return enunciado;
    }

    public void setEnunciado(String enunciado) {
        this.enunciado = enunciado;
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }
    public void setNumeroDePregunta(int numero) {
        this.numero = numero;
    }

    public String[] getOpciones() {
        return opciones;
    }

    public void setOpciones(String[] opciones) {
           System.arraycopy(opciones, 0, this.opciones, 0, opciones.length);
    }

    public char getValida() {
        return valida;
    }

    public void setValida(char valida) {
        this.valida = valida;
    }
  
    public void presenta(){
        System.out.print(numero + ".- ");
        System.out.println(enunciado);
        System.out.printf("\t a.- %s%n",opciones[0]);
        System.out.printf("\t b.- %s%n",opciones[1]);
        System.out.printf("\t c.- %s%n",opciones[2]);
        System.out.printf("\t d.- %s%n",opciones[3]);
    }
  
  
  
}