Pascal/Turbo Pascal - Registro con Array

   
Vista:

Registro con Array

Publicado por Antonio (5 intervenciones) el 17/02/2015 17:33:52
Muy buenas, tengo este codigo y me piden dar de baja los nombres que se añaden en el listado. Si alguien fuera capaz de ayudarme!
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
uses crt;
type
registro=record
         nom:string[20];
         ape:string[25];
         dni:string[8];
         cod:integer;
         notas:array[1..3] of real;
         end;
var
op:char;
info,info1:registro;
 
procedure ver;
 
begin
clrscr;
writeln(' Dar Cod : ');
writeln(' Dar Nom : ');
writeln(' Dar Ape : ');
writeln(' Dar Dni : ');
writeln(' Da Nota 1 :');
writeln(' Da Nota 2 :');
writeln(' Da Nota 3 :');
end;
 
procedure entrada;
begin
	ver;
			gotoxy(12,1);
			readln(info.cod);
			gotoxy(12,2);
			readln(info.nom);
			gotoxy(12,3);
			readln(info.ape);
			gotoxy(12,4);
			readln(info.dni);
			gotoxy(15,5);
			readln(info.notas[1]);
			gotoxy(15,6);
			readln(info.notas[2]);
			gotoxy(15,7);
			readln(info.notas[3]);
 
 
end;
 
procedure listado;
begin
info1:=info;
clrscr;
writeln(' LISTADO DE NOM / APE    DNI   CODIGO  NOTAS ');
WRITELN(' ############################################ ');
writeln;
writeln(info1.nom,info1.ape:15,info1.dni:10,info1.cod:6,info.notas[1]:6:2,info.notas[2]:6:2,info.notas[3]:6:2);
writeln;
write('Dar tecla : ');repeat until keypressed;
end;
 
procedure menu;
begin
clrscr;
writeln('1.-Entrada :');
writeln('2.-Listado :');
writeln('3.-Fin     :');
write('Dar opcion : ');
end;
begin
repeat
menu;
op:=readkey;
 case op of
      '1':entrada;
      '2':listado;
     end;
until op='3';
end.
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

Registro con Array

Publicado por David (139 intervenciones) el 17/02/2015 19:54:29
Dado el tipo de datos que utilizas sólo guardas un registro, con lo que eliminar la información resulta sencillo, basta con igualar los campos a cero (pascal no permite 'liberar' variables que no sean punteros)

1
2
3
4
5
6
7
8
9
10
11
12
Procedure borrar
begin
    with info do
        cod := 0;
        nom:="";
        ape:="";
        dni:="";
 
        for i :=1 to 3 do
                    notas[i]:=0;
            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

Registro con Array

Publicado por ramon (2072 intervenciones) el 17/02/2015 21:40:59
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
{Implementada la anulación y presentación del registro}
 
uses crt;
type
registro=record
         nom:string[20];
         ape:string[25];
         dni:string[8];
         cod:integer;
         notas:array[1..3] of real;
         end;
var
op:char;
info,info1:registro;
 
procedure ver;
 
begin
clrscr;
writeln(' Dar Cod : ');
writeln(' Dar Nom : ');
writeln(' Dar Ape : ');
writeln(' Dar Dni : ');
writeln(' Da Nota 1 :');
writeln(' Da Nota 2 :');
writeln(' Da Nota 3 :');
end;
 
procedure entrada;
begin
	ver;
			gotoxy(12,1);
			readln(info.cod);
			gotoxy(12,2);
			readln(info.nom);
			gotoxy(12,3);
			readln(info.ape);
			gotoxy(12,4);
			readln(info.dni);
			gotoxy(15,5);
			readln(info.notas[1]);
			gotoxy(15,6);
			readln(info.notas[2]);
			gotoxy(15,7);
			readln(info.notas[3]);
 
 
end;
 
procedure listado;
begin
info1:=info;
clrscr;
writeln(' LISTADO DE NOM / APE    DNI   CODIGO  NOTAS ');
WRITELN(' ############################################ ');
writeln;
if info1.cod > 0 then
writeln(info1.nom,info1.ape:15,info1.dni:10,info1.cod:6,info.notas[1]:6:2,info.notas[2]:6:2,info.notas[3]:6:2);
writeln;
write('Dar tecla : ');repeat until keypressed;
end;
 
procedure anula(var t : registro);
var
   dd : registro;
begin
    clrscr;
    writeln('   Anulando registro ');
    delay(599);
    dd := t;
    dd.cod := 0;
    t := dd;
end;
 
procedure menu;
begin
clrscr;
writeln('1.-Entrada :');
writeln('2.-Listado :');
writeln('3.-Anula   :');
writeln('4.-Fin     :');
write('Dar opcion : ');
end;
begin
repeat
menu;
op:=readkey;
 case op of
      '1':entrada;
      '2':listado;
      '3' :anula(info);
     end;
until op='4';
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