Pascal/Turbo Pascal - Ayudaaa!!!! listas enlazadas

 
Vista:
sin imagen de perfil

Ayudaaa!!!! listas enlazadas

Publicado por Ar (6 intervenciones) el 08/11/2013 03:44:10
necesito crear una agenda telefonica con listas enlazadas dobles o circulares pero no se como... el programa tiene que hacer todo esto:


1- insertar elementos a la agenda

a- Numero de telefono
b--nombre
c- apellidos
d- correo
e- fecha de nacimiento
f-Tipo de telefono
i. fijo
ii.celular
iii.trabajo
iv.casa

2- Modificar elementos de la agenda
3- buscar telefonos(letras)
4- indicar quienes cumplen en el mes
5- cantidad de elementos de la agenda
6- debe tener un maximo numero de telefonos (50)


por favor les agradecería que me ayudaran con el codigo o con algún ejemplo que me ayude
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

Ayudaaa!!!! listas enlazadas

Publicado por ramon (2158 intervenciones) el 08/11/2013 20:06: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
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
{Mira si esto te ayuda}
 
program ajendo;
 uses
    crt;
  const
      telafono : array[1..4] of string[7] = (
      'fijo','celular','trabajo','casa');
      max = 50;
  type
    pregist = ^registrodat;
    registrodat = record
         Ntelefono : longint;
         nombre    : string[80];
         apellidos : string[80];
         correo    : string;
         nacimient : string[10];
         Tipotelef : string[7];
         sig       : pregist;
       end;
 
    var
      primer, sigient, actual : pregist;
      dat : registrodat;
      entra : integer;
 
   procedure entradas;
   var
     t : integer;
   begin
       clrscr;
       writeln('**** Entrada Datos Ajenda ****');
       writeln;
       write(' Num. Telefn. : ');
       readln(dat.Ntelefono);
       write(' Nombre       : ');
       readln(dat.nombre);
       write(' Apellidos    : ');
       readln(dat.apellidos);
       write(' Correo       : ');
       readln(dat.correo);
       write(' Fecha Nacim. : ');
       readln(dat.nacimient);
       write(' Tipo : 1=Fijo  2=Celular  3=Trabajo  4=Casa');
       writeln;
       write(' Tipo Telf.   : ');
       readln(t);
       dat.Tipotelef := telafono[t];
   end;
 
   procedure asigna_datos;
   begin
       if entra > max then
       begin
       entradas;
       if primer = nil then
       begin
             new(actual);
             actual^ := dat;
             primer := actual;
             actual^.sig := nil;
          end
       else
          begin
              sigient := actual;
              new(actual);
              actual^ := dat;
              sigient^.sig := actual;
              actual^.sig := nil;
          end;
          entra := entra + 1;
        end
      else
        begin
           writeln('>> Ajenda Completa Pulse Una Tecla <<');
           readkey;
        end;
      end;
 
   procedure muestra_datos;
   var
     ver : pregist;
     y : integer;
   begin
       clrscr;
       ver := primer;
       y := 2;
       while ver <> nil do
       begin
   gotoxy(1,1);write('N.Telef.  Nombre    Apellido         Correo',
          '        Fecha Nacim.  Tipo Telf.');
   with ver^ do
   begin
   gotoxy(1,y);write(Ntelefono);
   gotoxy(11,y);write(nombre);
   gotoxy(21,y);write(apellidos);
   gotoxy(38,y);write(correo);
   gotoxy(52,y);write(nacimient);
   gotoxy(66,y);write(Tipotelef);
   y := y + 1;
   end;
          ver := ver^.sig;
     end;
   end;
 
   procedure menu;
   var
     sali : boolean;
     tecl : char;
   begin
      sali := false;
     repeat
        clrscr;
        writeln('  **** Menu Principal ****');
        writeln;
        writeln('  1 = Entradas');
        writeln('  2 = Ver Datos');
        writeln('  3 = Salir');
        writeln;
        writeln('>>> Elijab Opcion <<<');
        repeat
            tecl := readkey;
        until tecl in['1','2','3'];
        clrscr;
     case tecl of
  '1' : asigna_datos;
  '2' : muestra_datos;
  '3' : sali := true;
    end;
     until sali = true;
   end;
 
   begin
      primer := nil;
      entra := 0;
      menu;
   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

Ayudaaa!!!! listas enlazadas

Publicado por Ar (6 intervenciones) el 08/11/2013 20:25:38
Muchas gracias por el aporte...
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

Ayudaaa!!!! listas enlazadas

Publicado por Ar (6 intervenciones) el 08/11/2013 21:02:49
El problema ahora es que no me muestra nada
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

Ayudaaa!!!! listas enlazadas

Publicado por ramon (2158 intervenciones) el 08/11/2013 21:08:15
Aclárame eso por lo menos tienes que ver el menú y luego entra datos con la opción 1 y ve los resultados con la 2.
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

Ayudaaa!!!! listas enlazadas

Publicado por Ar (6 intervenciones) el 08/11/2013 21:50:08
si pero al ingresar datos no me sale nada ... al parecer no me llama al procedure entradas;
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

Ayudaaa!!!! listas enlazadas

Publicado por ramon (2158 intervenciones) el 08/11/2013 22:45:26
Disculpa mi error cambia esto if entra > max then de asignación de datos por
if entra < max then un fallo mio.
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

Ayudaaa!!!! listas enlazadas

Publicado por Ar (6 intervenciones) el 08/11/2013 22:49:31
gracias pero sigue sin funcionar a la hora de mostrar ingreso contactos y a la hora de mostrar no hace nada =(
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

Ayudaaa!!!! listas enlazadas

Publicado por Ar (6 intervenciones) el 08/11/2013 23:10:11
si puedes probarlo y solucionarlo me ayudarias demasiado.... porque no he podido encontrar la manera de mostrar nada
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

Ayudaaa!!!! listas enlazadas

Publicado por ramon (2158 intervenciones) el 09/11/2013 17:05:27
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
{Esta probado en pascal 7 y freepascal 2.6.0 y funciona correcta mente }
program ajendo;
 uses
    crt;
  const
      telafono : array[1..4] of string[7] = (
      'fijo','celular','trabajo','casa');
      max = 50;
  type
    pregist = ^registrodat;
    registrodat = record
         Ntelefono : longint;
         nombre    : string[80];
         apellidos : string[80];
         correo    : string;
         nacimient : string[10];
         Tipotelef : string[7];
         sig       : pregist;
       end;
 
    var
      primer, sigient, actual : pregist;
      dat : registrodat;
      entra : integer;
 
   procedure entradas;
   var
     t : integer;
   begin
       clrscr;
       writeln('**** Entrada Datos Ajenda ****');
       writeln;
       write(' Num. Telefn. : ');
       readln(dat.Ntelefono);
       write(' Nombre       : ');
       readln(dat.nombre);
       write(' Apellidos    : ');
       readln(dat.apellidos);
       write(' Correo       : ');
       readln(dat.correo);
       write(' Fecha Nacim. : ');
       readln(dat.nacimient);
       write(' Tipo : 1=Fijo  2=Celular  3=Trabajo  4=Casa');
       writeln;
       write(' Tipo Telf.   : ');
       readln(t);
       dat.Tipotelef := telafono[t];
   end;
 
   procedure asigna_datos;
   begin
       if entra < max then
       begin
       entradas;
       if primer = nil then
       begin
             new(actual);
             actual^ := dat;
             primer := actual;
             actual^.sig := nil;
          end
       else
          begin
              sigient := actual;
              new(actual);
              actual^ := dat;
              sigient^.sig := actual;
              actual^.sig := nil;
          end;
          entra := entra + 1;
        end
      else
        begin
           writeln('>> Ajenda Completa Pulse Una Tecla <<');
           readkey;
        end;
      end;
 
   procedure muestra_datos;
   var
     ver : pregist;
     y : integer;
   begin
       clrscr;
       ver := primer;
       y := 2;
       while ver <> nil do
       begin
   gotoxy(1,1);write('N.Telef.  Nombre    Apellido         Correo',
          '        Fecha Nacim.  Tipo Telf.');
   with ver^ do
   begin
   gotoxy(1,y);write(Ntelefono);
   gotoxy(11,y);write(nombre);
   gotoxy(21,y);write(apellidos);
   gotoxy(38,y);write(correo);
   gotoxy(52,y);write(nacimient);
   gotoxy(66,y);write(Tipotelef);
   y := y + 1;
   end;
          ver := ver^.sig;
     end;
   end;
 
   procedure menu;
   var
     sali : boolean;
     tecl : char;
   begin
      sali := false;
     repeat
        clrscr;
        writeln('  **** Menu Principal ****');
        writeln;
        writeln('  1 = Entradas');
        writeln('  2 = Ver Datos');
        writeln('  3 = Salir');
        writeln;
        writeln('>>> Elijab Opcion <<<');
        repeat
            tecl := readkey;
        until tecl in['1','2','3'];
        clrscr;
     case tecl of
  '1' : asigna_datos;
  '2' : muestra_datos;
  '3' : sali := true;
    end;
     until sali = true;
   end;
 
   begin
      primer := nil;
      entra := 0;
      menu;
   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