Pascal/Turbo Pascal - examen de opcion multiple

 
Vista:
sin imagen de perfil

examen de opcion multiple

Publicado por chester (3 intervenciones) el 03/04/2014 06:36:36
hola un saludo, tengo un problema con una tarea que me dejaron en pascal, que es la realizacion de un examen donde tenga opciones multiples de respuestas, por ejemplo:

que fruta tiene vitamina C?
A) kiwi
b) sandia
c) naranja

asi deben de ir varias prguntas, minimo 10, el problema es que al final se nos pide que pongamos un conteo de aciertos y con ello pues un promedio teniendo en cuenta que el supuesto examen vale 70% de una calificacion, no se como hacerle, espero me ayuden
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

examen de opcion multiple

Publicado por David (224 intervenciones) el 03/04/2014 18:35:05
Te propongo la siguiente solución:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Uses CRT;
 
const
  NUMPREGUNTAS = 10;
 
Type
  TIPOPREGUNTA = RECORD
    PREGUNTA : STRING;
    OP1,OP2,OP3:String;
    RESP : Char;
  end;
  tipotablaPreguntas = array[1..3] of TipoPregunta;
 
Var
  PREGUNTA : TipoPregunta;
  TABLA    : TipoTablaPreguntas;
  RESPU    : Char;
  I        : Integer;
  PUNTOS   : Integer;
 
Procedure CargarTabla(var tab : TipoTablaPreguntas);
 
 
VAR
  I : INTEGER;
 
Begin
  For i := 1 to NUMPREGUNTAS do
    begin
      Writeln('Pregunta ',i);
      Readln(tab[i].PREGUNTA);
      Writeln('Opci¢n 1');
      readln(TABLA[I].OP1);
      Writeln('Opci¢n 2');
      readln(TABLA[I].OP2);
      Writeln('Opci¢n 3');
      readln(TABLA[I].OP3);
    Repeat
      Writeln('RESPUESTA(a/b/c): ');
      readln(tabla[i].resp);
      until tabla[i].resp in ['a'..'c'];
    end;
 
end;
 
Procedure LeerTabla (var tab : tipotablapreguntas; NumPre : Integer);
 
var
  i : integer;
 
begin
  Writeln(Tabla[Numpre].pregunta);
  writeln;
  writeln('a) ',tabla[Numpre].op1);
  writeln('b) ',tabla[Numpre].op2);
  writeln('c) ',tabla[Numpre].op3);
end;
 
 
 
begin
  clrscr;
  PUNTOS :=0;
  CargarTabla(tabla);
  For i:= 1 to numpreguntas do
    Begin
      LeerTabla(tabla,i);
      Writeln('Respuesta: ');
      Repeat
        Readln(respu);
      until respu in ['a'..'c'];
      if respu=TABLA[I].RESP THEN
        PUNTOS:=PUNTOS+1;
    End;
    if puntos>=7 then
      Writeln('Aprobado. Ha obtenido ',PUNTOS,' PUNTOS')
    ELSE
      Writeln('Suspenso. Ha obtenido ',PUNTOS, ' PUNTOS');
readln;
 
end.

Otra forma de resolverlo sería utilizando ficheros, pero como desconozco tu nivel de conocimientos he optado por hacerlo lo más sencillo posible y utilizar sólo un array.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

examen de opcion multiple

Publicado por chester (3 intervenciones) el 04/04/2014 04:44:32
esta muy bien tu respuesta, pero el punto es que ya las preguntas estan estipuladas, solo es de dar respuesta a ellas y de ahi hacer el conteo, mira hice algo asi pero no se como sacar el promedio

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
program exam;
uses crt;
var
opc,op1,op2,op3,op4,op5,op6,op7,op8,op9,op10:char;
begin
clrscr;
writeln('*************************************************************************');
writeln('* Nombre del alumno: ',nombre);
writeln('*                                                                       *');
writeln('*                                                                       *');
writeln('* 1§ ¨En que a¤o inicio la revolucion?                                  *');
writeln('* a) 1910                                                               *');
writeln('* b) 1908                                                               *');
writeln('* c) 1810                                                               *');
write  ('*            La respuesta: ');readln(op1);
writeln('*                                                                       *');
writeln('* 2§ ¨Que es cibernetica?                                               *');
writeln('* a) Es el estudio de Word                                              *');
writeln('* b) Ciencia que estudia las maquinas                                   *');
writeln('* c) Es la programacion en la computadora                               *');
write  ('*            La respuesta: ');readln(op2);
writeln('*                                                                       *');
writeln('* 3§ ¨Que es modularidad?                                               *');
writeln('* a) Es la descomposicion de un programa                                *');
writeln('* b) Es un lenguaje que permite la programacion                         *');
writeln('* c) Es la propiedad que divide una aplicacion                          *');
write  ('*            La respuesta: ');readln(op3);
writeln('*                                                                       *');
writeln('* 4§ ¨Cuando se puede usar un subprograma?                              *');
writeln('* a) Puede ser invocado en cualquier punto                              *');
writeln('* b) Se utiliza despues del begin                                       *');
writeln('* c) Se utiliza junto el var y sus variables                            *');
write  ('*            La respuesta: ');readln(op4);
writeln('*                                                                       *');
writeln('* 5§ ¨Que es una recursividad?                                          *');
writeln('* a) Facilitan el dise¤o de un programa                                 *');
writeln('* b) Se definen como el programa mismo                                  *');
writeln('* c) Son utiles para arrancar el programa                               *');
write  ('*            La respuesta: ');readln(op5);
writeln('*                                                                       *');
writeln('* 6§ ¨Quien era el jefe de alemania en la 2¦ guerra mundial?            *');
writeln('* a) Adolf Hittler                                                      *');
writeln('* b) Stardort                                                           *');
writeln('* c) Marishima                                                          *');
write  ('*            La respuesta: ');readln(op6);
writeln('*                                                                       *');
writeln('* 7§ ¨Quien expulso a las empresas extranjeras?                         *');
writeln('* a) Lazaro Cardenas                                                    *');
writeln('* b) Miguel Aleman                                                      *');
writeln('* c) Avila Camacho                                                      *');
write  ('*            La respuesta: ');readln(op7);
writeln('*                                                                       *');
writeln('* 8§ ¨Que rutas contienen vitamina C?                                   *');
writeln('* a) Sandia, melon y kiwi                                               *');
writeln('* b) Coco, naranja y uva                                                *');
writeln('* c) Mandarina, naranja y limon                                         *');
write  ('*            La respuesta: ');readln(op8);
writeln('*                                                                       *');
writeln('* 9§ ¨Donde se realiza la fotosintesis?                                 *');
writeln('* a) Cloroplastos                                                       *');
writeln('* b) Tallo                                                              *');
writeln('* c) Raiz                                                               *');
write  ('*           La respuesta: ');readln(op9);
writeln('*                                                                       *');
writeln('* 10§ ¨Que es un procemiento?                                           *');
writeln('* a) Es una sentencia que realiza una tarea concreta                    *');
writeln('* b) Es un conjunto dee opeeraciones que se realizan de la misma forma  *');
writeln('* c) Una serie de pasos para resolver un problema                       *');
write  ('*            La respuesta: ');readln(op10);
writeln('*************************************************************************');
readln;
clrscr;
writeln('Respuestas dadas');
writeln('1  ',op1);
writeln('2   ',op2);
writeln('3   ',op3);
writeln('4   ',op4);
writeln('5   ',op5);
writeln('6   ',op6);
writeln('7   ',op7);
writeln('8   ',op8);
writeln('9   ',op9);
writeln('10  ',op10);
writeln;
writeln('Respuestas correctas');
writeln('1   a');
writeln('2   c');
writeln('3   c');
writeln('4   a');
writeln('5   a');
writeln('6   a');
writeln('7   a');
writeln('8   c');
writeln('9   a');
writeln('10  b');
writeln;
readln;
end;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

examen de opcion multiple

Publicado por David (224 intervenciones) el 04/04/2014 13:33:20
En ese caso lo que puedes hacer es crear un procedimiento para precargar las preguntas. Te pongo un pequeño ejemplo


Procedure CargarTabla(var tab : TipoTablaPreguntas);


begin
tab[1].Pregunta:='¿En qué año se inició la revolución?';
TAB[1].OP1):='1910';
TAB[1].OP2:='1918';
TAB[1].OP3:='1810';
TAB[1].RESP:='a';

...
End;

Y así sucesivamente con todas las preguntas. O sea, en vez de pedirlas por teclado, las introduces directamente en el código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar