Pascal/Turbo Pascal - EJERCICIO DE TABLAS

 
Vista:

EJERCICIO DE TABLAS

Publicado por Sara (6 intervenciones) el 12/02/2015 16:32:48
Tengo que hacer el siguiente ejercicio basado en uno que ya hice

1) Este es el que tengo que hacer
Escriba un programa que:
a) Cree una tabla en la que cada elemento es otra tabla del tipo descrito en las dos actividades optativas (3 y 4) anteriores. Cada elemento de la tabla representa los datos de un alumno.
b) Pida al usuario el número de alumnos de una clase.
c) Utilizando los procedimientos del ejercicio anterior pida los datos de cada alumno.
d) Muestre los datos de la clase por pantalla.

Este es el que hice
Program EJERCICIO;
type
tabla = array[1..3,1..4] of string;

Procedure llenaTabla (var tipoNota:tabla);
var
a,b: integer;
begin
for a:=1 to 3 do begin
if (a=1) then begin
writeln;
writeln (' Ha realizado la practica?');
end
else
if (a=2) then begin
writeln;
writeln (' Ha realizado el Trabajo?');
end
else
if (a=3) then begin
writeln;
writeln ('Ha realizado el examen?');
end;
for b:= 1 to 4 do begin
if (b=1) then begin
write ('Primer parcial:');
readln (tipoNota[a,b]);
end
else if (b=2) then begin
write ('Segundo parcial:');
readln (tipoNota[a,b]);
end
else if (b=3) then begin
write ('Junio:');
readln (tipoNota[a,b]);
end
else if (b=4) then begin
write ('Septiembre:');
readln (tipoNota[a,b]);
end;
end;
end;
end;

Procedure presentaTabla (tablaNotas:tabla);
var
a,b:integer;
begin
for a:= 1 to 3 do begin
if (a=1) then begin
writeln;
writeln(' PRACTICAS: ');
end
else
if (a=2) then begin
writeln;
writeln(' TRABAJOS: ');
end
else
if (a=3) then begin
writeln;
writeln(' EXAMENES: ');
end;
for b:= 1 to 4 do begin
if (b=1) then
write(' primer parcial: ',tablaNotas[a,b])
else
if (b=2) then
write(' segundo parcial: ',tablaNotas[a,b])
else
if (b=3) then
write(' junio: ',tablaNotas[a,b])
else
if (b=4) then
write(' septiembre: ',tablaNotas[a,b]);
writeln;
end;
end;
end;

var
tablaNotas : tabla;

begin
writeln;
writeln (' CONTROL DE NOTAS ');
writeln;
llenaTabla(tablaNotas);
presentaTabla(tablaNotas);
readln;
end.

En el apartado a) tendría que crear una tabla de alumnos
alumnos=array[1..Nalum]of tabla
o de clases...'

Me podría ayudar alguien a resolver esto.
Gracias
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

EJERCICIO DE TABLAS

Publicado por ramon (2158 intervenciones) el 12/02/2015 22:07:55
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
{Mira las modificaciones max es el tamaño de la tabla si es muy grande te dará error}
 
 Program EJERCICIO;
  const
      max = 20;
  type
     tabla = array[1..3,1..4] of string;
  var
     element : array[1..max] of tabla;
     tablaNotas : tabla;
     cont, alu : integer;
 
 
Procedure llenaTabla (var tipoNota:tabla);
var
a,b: integer;
begin
for a:=1 to 3 do begin
if (a=1) then begin
writeln;
writeln (' Ha realizado la practica?');
end
else
if (a=2) then begin
writeln;
writeln (' Ha realizado el Trabajo?');
end
else
if (a=3) then begin
writeln;
writeln ('Ha realizado el examen?');
end;
for b:= 1 to 4 do begin
if (b=1) then begin
write ('Primer parcial:');
readln (tipoNota[a,b]);
end
else if (b=2) then begin
write ('Segundo parcial:');
readln (tipoNota[a,b]);
end
else if (b=3) then begin
write ('Junio:');
readln (tipoNota[a,b]);
end
else if (b=4) then begin
write ('Septiembre:');
readln (tipoNota[a,b]);
end;
end;
end;
end;
 
Procedure presentaTabla (tablaNotas:tabla);
var
a,b:integer;
begin
for a:= 1 to 3 do begin
if (a=1) then begin
writeln;
writeln(' PRACTICAS: ');
end
else
if (a=2) then begin
writeln;
writeln(' TRABAJOS: ');
end
else
if (a=3) then begin
writeln;
writeln(' EXAMENES: ');
end;
for b:= 1 to 4 do begin
if (b=1) then
write(' primer parcial: ',tablaNotas[a,b])
else
if (b=2) then
write(' segundo parcial: ',tablaNotas[a,b])
else
if (b=3) then
write(' junio: ',tablaNotas[a,b])
else
if (b=4) then
write(' septiembre: ',tablaNotas[a,b]);
writeln;
end;
end;
end;
 
   procedure alumnos_clase(var vv : integer);
   begin
      write('   Entre Num Alumnos De 1 A ',max,' : ');
      readln(vv);
   end;
 
  procedure rellena_ta;
  begin
      alumnos_clase(alu);
    for cont := 1 to alu do
    begin
       llenaTabla(tablaNotas);
       element[cont] := tablaNotas;
    end;
  end;
 
  procedure presenta;
  begin
     for cont := 1 to alu do
     begin
        presentaTabla(element[cont]);
     end;
  end;
 
 
 
begin
writeln;
writeln (' CONTROL DE NOTAS ');
writeln;
llenaTabla(tablaNotas);
presentaTabla(tablaNotas);
readln;
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
Val: 35
Ha disminuido 1 puesto en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

EJERCICIO DE TABLAS

Publicado por Enrique Martin (15 intervenciones) el 23/02/2019 23:40:07
Aquí otra posible solución pero esta vez usando la estructura case-of:


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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
Program TablaBidimensionalDatosAlumnos;
 
uses
 crt;
 
Const
 
NA=50; //Numero maximo de alumnos.
 
Type
(*Definimos un tipo de dato para trabajar con la matriz entre procedimientos
  y para almacenar mas comodamente los datos*)
 tDatosPersonales = array [1..2,1..3] of string;
 
(*Aquí cumplimos lo que requiere el ejercicio, un array que contenga un array
  bidemensional*)
 tAlumnos = array [1..NA] of tDatosPersonales;
 
 
var
 NumeroAlumnos:integer;  //Para determinar la cantidad de alumnos/as de la clase
 n:integer;              //Para el indice del for-do
 
(*Necesitamos una variable que sea del tipo que hemos definido anteriormente
  para operar entre procedimientos, pues con los tipos de datos no podemos
  hacerlo*)
 Clase:tAlumnos;
 
 
(*Procedimiento para almacenar los datos de los alumnos/as*)
procedure LlenarTabla(VAR DatosAlumnos:tDatosPersonales);
 
Var
 i:integer;
 j:integer;
 
(*Para rellenar de datos los espacios disponibles en los arrays usaremos
  dos bucles for-do anidados y al mismo tiempo emplearemos una estructura
  case-of para estructurar y manejar la informacion que contiene cada
  array*)
 
Begin
writeln('Introduzca los datos del nuevo alumno/a: ');
 For i:= 1 to 2 do
  begin
   for j:= 1 to 3 do
    begin
     case i of
      1:
       begin
        case j of
         1:
           begin
            writeln('>>> Introduzca los datos identificativos del alumno/a: ');
            writeln('>>> Nombre: ');
            readln(DatosAlumnos[i,j]);
           end;
         2:
           begin
            writeln;
            writeln('>>> Primer Apellido: ');
            readln(DatosAlumnos[i,j]);
           end;
         3:
           begin
            writeln;
            writeln('>>> Segundo Apellido: ');
            readln(DatosAlumnos[i,j]);
            writeln;
           end;
        end;
       end;
      2:
       begin
        case j of
         1:
           begin
            writeln;
            writeln('>>> Introduzca los datos domiciliarios del alumno/a: ');
            write(DatosAlumnos[1,1],' ');
            write(DatosAlumnos[1,2],' ');
            writeln(DatosAlumnos[1,3]);
            writeln;
            writeln('>>> Pais: ');
            readln(DatosAlumnos[i,j]);
            writeln;
           end;
         2:
           begin
            writeln('>>> Provincia: ');
            readln(DatosAlumnos[i,j]);
            writeln;
           end;
         3:
           begin
            writeln('>>> Municipio: ');
            readln(DatosAlumnos[i,j]);
            writeln;
           end;
        end;
       end;
     end;
    end;
  end;
end;
 
(*Procedimiento para mostrar los datos de los alumnos/as*)
Procedure VerDatosAlumnos(VAR DatosAlumnos2:tDatosPersonales);
 
Var
 i:integer;
 j:integer;
 
(*Al igual que ocurre para introducir datos, para poder verlos de forma mas
  cómoda vamos a emplear dos bucles for-do y la estructura condicional Case-of*)
 
Begin
  For i:= 1 to 2 do
   begin
    for j:= 1 to 3 do
     begin
      case i of
       1:
         begin
          case j of
           1:
             begin
              writeln;
              writeln('>>> Nombre del alumno/a: ');
              writeln(DatosAlumnos2[i,j]);
              writeln;
             end;
           2:
             begin
              writeln('>>> Primer apellido del alumno/a: ');
              writeln(DatosAlumnos2[i,j]);
              writeln;
             end;
           3:
             begin
              writeln('>>> Segundo apellido del alumno/a: ');
              writeln(DatosAlumnos2[i,j]);
              writeln;
             end;
           end;
         end;
       2:
         begin
          case j of
           1:
             begin
              writeln('>>> Datos domiciliarios del alumno/a: ');
              write(DatosAlumnos2[1,1],' ',DatosAlumnos2[1,2],' ');
              writeln(DatosAlumnos2[1,3],' ');
              writeln;
              writeln('>>> País del alumno/a: ');
              writeln(DatosAlumnos2[i,j]);
              writeln;
             end;
           2:
             begin
              writeln('>>> Provincia del alumno/a: ');
              writeln(DatosAlumnos2[i,j]);
              writeln;
             end;
           3:
             begin
              writeln('>>> Municipio del alumno/a: ');
              writeln(DatosAlumnos2[i,j]);
              writeln;
              writeln('            ##Datos del Alumno/a finalizados##');
             end;
          end;
         end;
      end;
     end;
   end;
end;
 
begin
 writeln;
 writeln('     -----Programa para almacenar y ver los datos en tablas-----');
 writeln;
 
 (*El ejercicio nos pedía que solicitaramos al usuario/a el numero de alumnos
   que tendría la clase*)
 
 writeln('Introduzca el numero de estudiantes en clase: ');
 Readln(NumeroAlumnos);
 
 writeln;
 writeln('#################### Tabla Datos Alumnos/as #######################');
 writeln;
 writeln('Comenzamos introduciendo los valores de la tabla');
 writeln;
(*Necesitamos un bucle For-to para ver los datos de cada uno de los
  espacios en donde hemos añadido información con el procedimiento anterior*)
 
 For n:= 1 to NumeroAlumnos do
  LlenarTabla(Clase[n]);
 
 writeln;
 readln;
 writeln('###################### Datos Almacenados ##########################');
 writeln;
 writeln('Mostramos a continuacion los datos almacenados en la tabla');
 readln;
 writeln;
 
(*Utilizamos el bucle for-do para mostrar los datos finalmente almacenados en
  cada espacio de la tabla Alumnos*)
  For n:= 1 to NumeroAlumnos do
   VerDatosAlumnos(Clase[n]);
 
 readkey;
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