Pascal/Turbo Pascal - Borrar un elemento de un array de registros Urgente¡¡ :(]

 
Vista:

Borrar un elemento de un array de registros Urgente¡¡ :(]

Publicado por Daniel (1 intervención) el 11/12/2012 10:37:48
Hola buenos dias.Estoy intentando borrar un elemento cualquiera de un array de registros y me vuelvo loco pues compila lo que hago pero no funciona.
------------------------------------------declaracion de constantes tipos y variables-------------------------------------
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
const
  maxAno=2012;
  minAno=0;
type
  tFecha=record
    ano:minAno..maxAno;
    mes:0..12;    //el valor cero es asignado al borrar cualquier registro tFecha
    dia:0..31;
    end;
  tEjemplar=record
    fechaCompra:tFecha;
    identificador:string[20];
    case tipoEscrito:char of
    '1':(titulo,autor,editorial:string[40]);
    '2':(nombre:string[40];numero:integer;fechaEdicion:tFecha)
    end;
  tCatalogo=array[1..50]of tEjemplar;
  var
    biblioteca:tCatalogo;
    opcion:char;
    i:integer;
    auxBusqueda,auxIden:string;
--------------------------------------------procedure para borrar un elemento-------------------------------------------
procedure borraEjemplar(deposito:tCatalogo;codigo:string); //para borrar un elemento veo bien que solo lo pueda hacer quien conozca el numero de identificacion
var
  m,j:integer;
  seBorro:boolean;
begin
for m:=1 to 50 do
if deposito[i].identificador=codigo then
begin
seBorro:=10-10=0;
for j:=m to 50 do
begin
 deposito[j].fechaCompra.ano:=deposito[j+1].fechaCompra.ano;deposito[50].fechaCompra.ano:=0;
 deposito[j].fechaCompra.mes:=deposito[j+1].fechaCompra.mes;deposito[50].fechaCompra.mes:=0;
 deposito[j].fechaCompra.dia:=deposito[j+1].fechaCompra.dia;deposito[50].fechaCompra.dia:=0;
 deposito[j].identificador:=deposito[j+1].identificador;deposito[50].identificador:=' ';
 if deposito[j].tipoEscrito ='1' then
                 begin
                  deposito[j].titulo:=deposito[j+1].titulo;deposito[50].titulo:=' ';
                  deposito[j].autor:=deposito[j+1].autor;deposito[50].autor:=' ';
                  deposito[j].editorial:=deposito[j+1].editorial;deposito[50].editorial:=' '
                 end
                else
                     begin
                    deposito[j].nombre:=deposito[j+1].nombre;deposito[50].nombre:=' ';
                    deposito[j].numero:=deposito[j+1].numero;deposito[50].numero:=0;
                    deposito[j].fechaEdicion.ano:=deposito[j+1].fechaEdicion.ano;deposito[50].fechaEdicion.ano:=0;
                    deposito[j].fechaEdicion.mes:=deposito[j+1].fechaEdicion.mes;deposito[50].fechaEdicion.mes:=0;
                    deposito[j].fechaEdicion.dia:=deposito[j+1].fechaEdicion.dia;deposito[50].fechaEdicion.dia:=0;
                     end
end
end;
if seBorro=true then writeln('El registro indicado se ha borrado con exito')
else writeln('Ningun libro o revista de esta biblioteca tiene ese numero de identificacion');
end;



Por favor algien sabe como hacerlo bien? Compila pero no borra pues luego busco los borrados y sale toda su informacion sin borrar
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

Borrar un elemento de un array de registros Urgente¡¡ :(]

Publicado por ramon (2158 intervenciones) el 11/12/2012 17:18:00
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
{Mira como veras te cargo unos datos para que aprecies el barrado del registro y como lo realizo
 espero esto ayude }
 
uses
   crt;
const
  maxAno = 2012;
  minAno = 0;
type
  tFecha = record
    ano : minAno..maxAno;
    mes : 0..12;
    dia : 0..31;
    end;
  tEjemplar = record
    fechaCompra : tFecha;
    identificador : string[20];
    case tipoEscrito : char of
    '1':(titulo,autor,editorial:string[40]);
    '2':(nombre:string[40];numero:integer;fechaEdicion:tFecha)
    end;
  tCatalogo = array[1..50]of tEjemplar;
  var
    biblioteca : tCatalogo;
    opcion :char;
    i : integer;
    auxBusqueda, auxIden : string;
 
 procedure pruevaborrado;
 var
    d, m, a : word;
    dd, con : integer;
 begin
     a := 1;
     m := 1;
     d := 1;
     for con := 1 to 26 do
     begin
     biblioteca[con].fechaCompra.ano := a;
     biblioteca[con].fechaCompra.mes := m;
     biblioteca[con].fechaCompra.dia := d;
     biblioteca[con].identificador := 'Cara-' + chr(con + 64);
     d := d + 1;
     if d > 30 then
     begin
        m := m + 1;
        d := 1;
        if m > 12 then
        begin
           a := a + 1;
           m := 1;
        end;
     end;
     end;
     dd := 1;
     for con := 1 to 26 do
     begin
     writeln(biblioteca[con].fechaCompra.ano,'   ',
     biblioteca[con].fechaCompra.mes,'   ',
     biblioteca[con].fechaCompra.dia,'   ',
     biblioteca[con].identificador);
   end;
 end;
 
procedure borraEjemplar(codigo:string);
var
  m,j:integer;
  seBorro:boolean;
begin
  seBorro := false;
  for m := 1 to 26 do
  if biblioteca[m].identificador = codigo then
   begin
    seBorro := true;
    fillchar(biblioteca[m],sizeof(biblioteca[m]),0);
    end;
    if seBorro = true then
    writeln('El registro indicado se ha borrado con exito')
  else
     writeln('Ningun libro o revista de esta biblioteca tiene ese numero de',
     ' identificacion');
  end;
 
 
 
  begin
      clrscr;
      pruevaborrado;
      readln;
      clrscr;
      borraEjemplar('Cara-F');
      writeln;
      for i := 1 to 26 do
      begin
        writeln(biblioteca[i].fechaCompra.ano,'   ',
        biblioteca[i].fechaCompra.mes,'   ',
        biblioteca[i].fechaCompra.dia,'   ',
        biblioteca[i].identificador);
        end;
      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