Las computadoras estan tomando un papel cada vez mas importante en la educacion. Escriba un programa que ayude a un estudiante de escuela primaria, para que aprenda a multiplicar. Use el metodo Math.random para producir dos enteros positivos de un digito. El progama debe mostrar entonces una pregunta en la barra de estado, como:
¿cuanto es 6 por 7?
El estudiante debe escribir entonces la respuesta en un objeto JTextField. Luego, el programa debe verificar la respuesta del estudiante, Si es correcta, dibuje la cadena "Muy bien" en el applet y haga otra pregunta de multiplicacion. Si le respuesta es incorrecta, dibuje la cadena "No. Por favor intenta de nuevo." En el applet y deje que el estudiante intente la misma pregunta varias veces, hasta que acierte la respuesta. Debera utilizar un metodo separado para generar cada pregunta nueva. Este metodo debe llamarse a la vez cuando el applet empieze a ejecutarse, y cada vez que el usuario acierte la pregunta.
Modificación 1:
Modifique el programa de manera que los diversos comentarios se impriman para cada respuesta correcta e incorrecta, de la siguiente manera:
Contestaciones para una respuesta correcta:
- Muy bien!
- Excelente!
- Buen Trabajo!
- Sigue así!
Contestaciones para una respuesta incorrecta:
- No. Por favor intenta de nuevo.
- Incorrecto. Intenta una vez mas.
- No te rindas!
- No. Sigue intentado.
Use la generación de números Aleatorios para elegir un numero entre 1 y 4 que se utilice para seleccionar una contestación apropiada a cada respuesta. Use una instruccion switch para emitir contestaciones.
Modificación 2):
Los sistemas de instruccion asistida por computadora mas sofisticados supervisan el rendimiento del estudiante durante cierto tiempo. La decision de empezar un nuevo tema se basa a menudo en el exito del estudiante con los temas anteriores. Modifique el ejercicio para contar el numero de respuestas correctas e incorrectas del estudiante. Una vez que el estudiante escriba 10 respuestas, su programa debe calcular el porcentaje de respuestas correctas. Si este es menor del 75%, imprima "Por favor pida ayuda adicional a su instructor" y reinicie el programa, para que otro estudiante pueda probarlo.
Modificación 3):
Realice las siguientes mejoras:
- Modifique el programa para que permita al usuario introducir el nivel de capacidad escolar. Pudiendo escoger entre ejercicios de 1 dígitos o de 2 dígitos.
- Modifique el programa para permitir al usuario que elija el tipo de problemas aritméticos que desea estudiar pudiendo escoger entre ejercicios de: suma, resta, multiplicación, división.
1 package ejercicio249;
2
3 import java.awt.Container;
4 import javax.swing.JApplet;
5 import javax.swing.JButton;
6 import javax.swing.JComboBox;
7 import javax.swing.JLabel;
8 import javax.swing.JTextField;
9
10
11
12 @author
13
14
15
16 public class Ejercicio249 extends JApplet
17 {
18 JLabel resEtiqueta, pregEtiqueta, obsEtiqueta;
19 JTextField resCampo, pregCampo, obsCampo;
20 JButton aceptarBoton, salirBoton;
21 JComboBox dificultadCombo, operacionCombo;
22
23 public void init ()
24 {
25
26 Container contenedor = getContentPane();
27 contenedor.setLayout(null);
28
29
30 pregEtiqueta = new JLabel( "Cuanto es : ");
31 pregEtiqueta.setBounds(20,20, 100, 20);
32 contenedor.add( pregEtiqueta );
33 pregCampo = new JTextField( 5 );
34 pregCampo.setBounds(125,20, 100, 20);
35 contenedor.add( pregCampo );
36 pregCampo.setEditable( false );
37 resEtiqueta = new JLabel( "Resultado : ");
38 resEtiqueta.setBounds(20,45, 100, 20);
39 contenedor.add( resEtiqueta );
40 resCampo = new JTextField( 5 );
41 resCampo.setBounds(125,45, 100, 20);
42 contenedor.add( resCampo );
43 obsEtiqueta = new JLabel( "Observacion :");
44 obsEtiqueta.setBounds(20,70, 100, 20);
45 contenedor.add( obsEtiqueta );
46 obsCampo = new JTextField( 5 );
47 obsCampo.setBounds(125,70, 215, 20);
48 contenedor.add( obsCampo );
49 obsCampo.setEditable( false );
50 aceptarBoton = new JButton("Aceptar");
51 aceptarBoton.setBounds(125,95, 90, 20);
52 contenedor.add( aceptarBoton );
53 String [] dificultad ={"1 digito","2 digitos"};
54 dificultadCombo = new JComboBox( dificultad );
55 dificultadCombo.setBounds(230,20, 100, 20);
56 contenedor.add( dificultadCombo );
57 String [] operacion ={"Suma","Resta","Multiplicacion","Division",
58 "Aleatorio"};
59
60 operacionCombo = new JComboBox( operacion );
61 operacionCombo.setBounds(230,45, 100, 20);
62 contenedor.add( operacionCombo );
63
64 Controlador ctrEvento = new Controlador(this);
65 aceptarBoton.addActionListener( ctrEvento );
66 resCampo.addActionListener(ctrEvento);
67
68 }
69
70 public double getResultado()
71 {
72 int Dnumero;
73 String Snumero;
74 Snumero = resCampo.getText();
75 Dnumero = Integer.parseInt(Snumero);
76 return Dnumero;
77 }
78
79 public String getDificultad()
80 {
81 String dif;
82 dif = (String) dificultadCombo.getSelectedItem();
83 return dif;
84 }
85
86 public String getOperacion()
87 {
88 String op;
89 op = (String) operacionCombo.getSelectedItem();
90 return op;
91 }
92
93 public void setPregunta(int n1, int n2)
94 {
95 String preg = "";
96 if(getOperacion().equals("Suma"))
97 {
98 preg = preg + n1 + " + " + n2;
99 }
100 if(getOperacion().equals("Resta"))
101 {
102 preg = preg + n1 + " - " + n2;
103 }
104
105 if(getOperacion().equals("Multiplicacion"))
106 {
107 preg = preg + n1 + " x " + n2;
108 }
109 if(getOperacion().equals("Division"))
110 {
111 preg = preg + n1 + " / " + n2;
112 }
113
114 pregCampo.setText(preg);
115 }
116
117 public void setPregunta(int n1, int n2, int num)
118 {
119 String preg = "";
120
121 switch ( num )
122 {
123 case 1:
124 preg = preg + n1 + " + " + n2;
125 break;
126 case 2:
127 preg = preg + n1 + " - " + n2;
128 break;
129 case 3:
130 preg = preg + n1 + " x " + n2;
131 break;
132 default:
133 preg = preg + n1 + " / " + n2;
134 }
135 pregCampo.setText(preg);
136 }
137 public void setObservacion(String cad)
138 {
139 obsCampo.setText(cad);
140 }
141
142 }
143
1 package ejercicio249;
2
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
5 import javax.swing.JOptionPane;
6
7
8
9 @author
10
11 public class Controlador implements ActionListener
12 {
13 public boolean nuevaPregunta = true, primerIntento = true;
14 public Ejercicio249 auxiliar;
15 double resultado = 0;
16 int contador = 0, contAciertos = 0;
17
18 public Controlador(Ejercicio249 g){
19 auxiliar=g;
20 }
21
22 public void actionPerformed(ActionEvent actionEvent)
23 {
24 int num1, num2;
25
26 if(nuevaPregunta)
27 {
28 num1 = obtenerNumero();
29 num2 = obtenerNumero();
30 resultado = calculaResultado(num1, num2);
31 if (!auxiliar.getOperacion().equals("Aleatorio"))
32 auxiliar.setPregunta(num1, num2);
33 nuevaPregunta = false;
34 if(contador == 10)
35 {
36 float porcentaje = 0;
37 porcentaje = (contAciertos * 100)/ contador;
38 if(porcentaje <= 75 || contAciertos == 0){
39 JOptionPane.showMessageDialog(null, "Por favor pida ayuda "
40 + "adicional a su instructor");
41 }
42 else
43 {
44 JOptionPane.showMessageDialog(null, "Lo haces muy bien, "
45 + "sigue practicando!!!");
46 }
47 contador = 1;
48 contAciertos = 0;
49 }
50 else{
51 contador++;
52 }
53 System.out.println(contador);
54 }
55 else
56 {
57 if(primerIntento)
58 {
59 if(auxiliar.getResultado() == resultado)
60 {
61 contAciertos++;
62 this.comCorrecto();
63 System.out.println("Acierto!" + contAciertos);
64 nuevaPregunta = true;
65 }
66 else
67 {
68 primerIntento = false;
69 this.comErroneo();
70 }
71
72 }
73 else
74 {
75 if(auxiliar.getResultado() == resultado)
76 {
77 this.comCorrecto();
78 primerIntento = true;
79 nuevaPregunta = true;
80 }
81 else
82 {
83 this.comErroneo();
84 }
85 }
86
87 }
88
89 }
90
91 public int obtenerNumero()
92 {
93 int num = 0;
94 if(auxiliar.getDificultad().equals("1 digito"))
95 num = 1 + (int) ( Math.random() * 9);
96 else if(auxiliar.getDificultad().equals("2 digitos"))
97 num = 1 + (int) ( Math.random() * 99);
98 return num;
99 }
100
101 public double calculaResultado(int n1, int n2)
102 {
103 double res = 0;
104
105 if (auxiliar.getOperacion().equals("Aleatorio"))
106 {
107 int num = 1 + (int) ( Math.random() * 4);
108 switch ( num )
109 {
110 case 1:
111 res = n1 + n2;
112 break;
113 case 2:
114 res = n1 - n2;
115 break;
116 case 3:
117 res = n1 * n2;
118 break;
119 default:
120 res = n1 / n2;
121 }
122 auxiliar.setPregunta(n1, n2, num);
123 }
124 else if(auxiliar.getOperacion().equals("Suma"))
125 {
126 res = n1 + n2;
127 }
128 else if(auxiliar.getOperacion().equals("Resta"))
129 {
130 res = n1 - n2;
131 }
132 else if(auxiliar.getOperacion().equals("Multiplicacion"))
133 {
134 res = n1 * n2;
135 }
136 else if(auxiliar.getOperacion().equals("Division"))
137 {
138 res = n1/n2;
139 }
140 return res;
141 }
142
143 public void comCorrecto()
144 {
145 int num;
146 num = 1 + (int) ( Math.random() * 4);
147 switch ( num )
148 {
149 case 1:
150 auxiliar.setObservacion("Muy bien!");
151 break;
152 case 2:
153 auxiliar.setObservacion("Excelente!");
154 break;
155 case 3:
156 auxiliar.setObservacion("Buen Trabajo!");
157 break;
158 default:
159 auxiliar.setObservacion("Sigue Asi!");
160 }
161
162 }
163
164 public void comErroneo()
165 {
166 int num = 0;
167 num = 1 + (int) ( Math.random() * 4);
168
169 switch ( num )
170 {
171 case 1:
172 auxiliar.setObservacion("No. Por favor intenta de nuevo!");
173 break;
174 case 2:
175 auxiliar.setObservacion("Incorrecto. Intenta una vez mas!");
176 break;
177 case 3:
178 auxiliar.setObservacion("No te rindas!");
179 break;
180 default:
181 auxiliar.setObservacion("No. sigue intentando!");
182 }
183
184 }
185
186 }
187
188
Descargas:
El siguiente código es en C:
ResponderEliminar#include
#include
#include
/*funciones que saca los numeros aleatorios*/
int random1();
int random2();
/*ennumeracion del juego, que indicara si avanza o no a la siguiente pregunta*/
enum estado{MAL, BIEN};
int main()
{
/* variable preguntas, indica el número de la pregunta*/
int preguntas;
/*variable repuestareal, es la respuesta correcta*/
int respuestareal;
/*variable respuesta. es la que introduce el usuario*/
int respuesta;
/*llamado de funciones*/
int x=random1();
int y=random2();
/*ennumeracion es llamda exame*/
enum estado examen;
srand(time(NULL));
for(preguntas=1;preguntas<=10;preguntas++){
x = random1();
y = random2();
respuestareal=x*y;
printf("%d.- Cuanto es %d * %d \n", preguntas, x, y);
scanf("%d", &respuesta);
if(respuesta==respuestareal){
printf("Muy bien!!\n\n");
examen=BIEN;
}
else{
printf("Esta mal, repite\n\n");
examen=MAL;
while(examen==MAL){
printf("%d.- Cuanto es %d * %d \n", preguntas, x, y);
scanf("%d", &respuesta);
if(respuesta==respuestareal){
printf("Muy bien!!\n\n");
examen=BIEN;
}
else{
printf("Esta mal, repite\n\n");
examen=MAL;
}
}
}
}
return 0;
}
int random1()
{
int dom1;
dom1=1+(rand()%10);
return dom1;
}
int random2 ()
{
int dom2;
dom2=1+(rand()%10);
return dom2;
}
Este comentario ha sido eliminado por el autor.
ResponderEliminarLos include, no aparecen, no sé por qué. Pero son
ResponderEliminarstdio.h
stdlib.h
time.h
Aquí el ejercicio en c, con la suma, resta, etc. Los mensajes. Saludos, disculpa si está muy largo, pero soy nuevo en ello
ResponderEliminarhttps://plus.google.com/115672506428322456941/posts/9GRpPy3nVkq