Pascal/Turbo Pascal - como crear una lista simple en pascal..?

   
Vista:

como crear una lista simple en pascal..?

Publicado por pamela gomez (17 intervenciones) el 03/11/2012 21:39:23
hola estoy empezando un curso de estructura d datos y nos dejaron q hicieramos un programa q utilice una lista simple con nodos en donde el usuario ingrese unos datos alfanumericos y luego los muestre en pantalla.
la idea es q haya un procedimiento para crear, otro para el inicio de la lista, otro para el final de la lista,el d enmedio y un ultimo para mostra los datos ingresados a la lista. Si alguien me pudiera ayudar con esto se lo agradeceria....!!
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

como crear una lista simple en pascal..?

Publicado por ramon (2072 intervenciones) el 04/11/2012 17:27:09
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
{Mira ejecuta este programa y observa su ejecución si necesitas alguna aclaración dímelo
 los # y numero corresponden a los números de las teclas}  
 
 program listasimple;
  uses
    crt;
  type
     punteroejemp = ^ejemplo;
     ejemplo = record
           datos : string;
           sig : punteroejemp;
         end;
 
   var
     tecla : char;
     prime, anter, actu : punteroejemp;
 
 
   procedure otroregistroentra;
   procedure entramosdatos;
   begin
       with actu^ do
       begin
          write('Introduzca Datos : ');
          readln(datos);
       end;
   end;
   begin
   if prime = nil then
   begin
       new(actu);
       entramosdatos;
       prime := actu;
       actu^.sig := nil;
      end
   else
      begin
          anter := actu;
          new(actu);
          entramosdatos;
          anter^.sig := actu;
          actu^.sig := nil;
      end;
    end;
 
   procedure listardatos;
    var
      ver : punteroejemp;
    begin
       ver := prime;
       while ver <> nil do
       begin
          with ver^ do
          writeln(datos);
          ver := ver^.sig;
        end;
        writeln;
        writeln('Pulse [Enter]');
        readln;
     end;
 
   procedure insertaprimero(entrada : string);
   var
      pt : punteroejemp;
    begin
        new(pt);
        pt^.datos := entrada;
        pt^.sig := prime;
        prime := pt;
    end;
 
  procedure insertafinal(entrada : string);
    var
      pt : punteroejemp;
    begin
        new(pt);
        pt^.datos := entrada;
        actu^.sig := pt;
        pt^.sig := nil;
        actu := pt;
    end;
 
  procedure insertamosporordendebalor(entrada : string);
    var
      rr, pp, pt : punteroejemp;
      nofin, salir : boolean;
    begin
       new(pt);
       pt^.datos := entrada;
       pp := prime;
       rr := prime;
       if pp^.datos > entrada then
       begin
          insertaprimero(entrada);
       end
     else
         begin
         salir := false;
         nofin := false;
     repeat
         rr := pp;
         pp := pp^.sig;
         if pp^.datos > entrada then
         begin
            salir := true;
            nofin := true;
         end;
     until (pp^.sig = nil) or (salir = true);
      if (salir = false) and (nofin = false) then
      begin
         insertafinal(entrada);
      end
    else
       begin
          pt^.sig := pp;
          rr^.sig := pt;
       end;
    end;
  end;
 
   procedure insertaregistro;
   var
     dat : string;
     tt : char;
   begin
       clrscr;
       writeln;
       write('Insertamos Entre Datos : ');
       readln(dat);
       writeln;
       writeln('  Pulse  1 = Al Principio   2 = Al Final   3 = Ordenado ',
       '  4 = Nada');
       writeln('  Elija Opcion');
       repeat
       tt := readkey
       until tt in[#49..#52];
    case tt of
  #49 : insertaprimero(dat);
  #50 : insertafinal(dat);
  #51 : insertamosporordendebalor(dat);
  #52 :;
     end;
   end;
 
  begin
       prime := nil;
   repeat
        clrscr;
          repeat
            write('1 = entrar datos  2 = listar datos  3 = Insertar   4  = final');
            tecla := readkey;
          until tecla in[#49..#52];
      if tecla = #49 then
      begin
         clrscr;
         otroregistroentra;
      end;
      if tecla = #50 then
      begin
         clrscr;
         listardatos;
      end;
      if tecla = #51 then
      begin
          clrscr;
          insertaregistro;
      end;
      until tecla = #52;
   end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

como crear una lista simple en pascal..?

Publicado por pamela gomez (17 intervenciones) el 14/11/2012 05:46:31
muchas gracias d verdad q si me sirvio mucho.
disculpa ramon tu me podrias dar tu correo para enviarte algo para q me ayudes....?
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

como crear una lista simple en pascal..?

Publicado por ramon (2072 intervenciones) el 14/11/2012 18:44:49
Cualquier cosa que necesites de pascal te ayudare desde esta es por el bien de todos que como tu
necesitan una mano en pascal pregunta y seras respondida y disculpa me,
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

como crear una lista simple en pascal..?

Publicado por pamela gomez (17 intervenciones) el 18/11/2012 08:58:52
entiendo esta bien necesito una ayuda en este programa:

Desarrollar un simular de una red de telefonía celular, conectada a un proveedor de servicios telefónicos celulares del país, el rango de cobertura será el GAM (Gran Área Metropolitana), fuera de eso, se desviarán las llamadas por la red de otro proveedor.

Puntos a tomar en cuenta:
• Diseño de las antenas
• Conexión entre antenas propietarias
• Conexión entre antenas del proveedor alternativo
• Cada celda celular tiene una capacidad para 100 llamadas al mismo instante, conectadas por dos canales, uno de voz y otro de audio
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

como crear una lista simple en pascal..?

Publicado por romon (2072 intervenciones) el 18/11/2012 18:13:10
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
{Algo así en la estructura}
 
program sumulador;
 uses
    crt;
  type
    antena = record
           codigo : string[20];
           frec   : real;      {Datos de la antena y acceso}
           covet : word;
          end;
 
   conepropi = record
          codigo : string[20];
          antenas : array[0..0,'a'..'z'] of char;   {Conesion propia}
          end;
 
   coneprovealt = record
          codigopro : string[20];
          codigoalt : string[20];      {Conesion de apollo}
          antenas : array[1..1,'a'..'z'] of char;
          end;
   llamadas = record
         voz : array[1..100] of boolean;  {Registro de estado llamadas}
         aud : array[1..100] of boolean;
         end;
 
    centralita = record
          ant : conepropi;
          prov : coneprovealt; {Registro Maestro}
          llam : llamadas;
        end;
 
 
   var
      centra : centralita;
      ante : antena;
 
 
   procedure inicia_centralita;
   var
     i : integer;
     t : char;
   begin
      write('  Entre Codigo Antena : ');
      readln(ante.codigo);
      write('  Entre Frecuenci Emisor : ');
      readln(ante.frec);
      write('  Entre Covertura : ');
      readln(ante.covet);
      for i := 1 to 100 do
      begin
        centra.llam.voz[i] := false;
        centra.llam.aud[i] := false;
      end;
      centra.ant.codigo := ' ';
      centra.prov.codigopro := ' ';
      centra.prov.codigoalt := ' ';
      for t := 'a' to 'z' do
      begin
         centra.ant.antenas[0,t] := ' ';
         centra.prov.antenas[1,t] := ' ';
      end;
   end;
 
 
 
 
 begin
     clrscr;
     inicia_centralita;
     writeln('*** Inicio Centralita ***');
     writeln;
     writeln('   Codigo Antena    = ',ante.codigo,'  Para Toda La Coverturas');
     writeln('   Frecuenci Emisor = ',ante.frec:0:2,'  Frecuencia Hz');
     writeln('   Covertura        = ',ante.covet,'  Max Alcance Kilometros');
     writeln;
     writeln('**** Datos Para El servicio De telefonia celular ****');
     writeln('<<<< Pulse [Enter] >>>>');
     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

como crear una lista simple en pascal..?

Publicado por pamela gomez (17 intervenciones) el 18/11/2012 21:58:24
no se porque razon no salio completa la pregunta q hice pero aqui va d nuevo:

Desarrollar un simular de una red de telefonía celular, conectada a un proveedor de servicios telefónicos celulares del país, el rango de cobertura será el GAM (Gran Área Metropolitana), fuera de eso, se desviarán las llamadas por la red de otro proveedor.

Puntos a tomar en cuenta:
• Diseño de las antenas
• Conexión entre antenas propietarias
• Conexión entre antenas del proveedor alternativo
• Cada celda celular tiene una capacidad para 100 llamadas al mismo instante, conectadas por dos canales, uno de voz y otro de audio
• Control de mensajería de texto
• Control de mensajería de voz
• Control de llamadas efectuadas
• Control de llamadas perdidas
• Control de cantidad de mensajes de texto
• Control de mensajes de texto entregados
• Control de promedio de mensajes de texto por:
o Hora o Semana o Mes

La idea es q esto se haga utilizando Nodos,arboles y listas(simples o doblemente enlazadas).si me pudieses dar un ejemplo o una idea d como implementarlo se lo agradesco.gracias.

con respecto al codigo q subistes pues voy a probarlo pero si me gustaria saber como se haria con los nodos y con respecto a q (Cada celda celular tiene una capacidad para 100 llamadas al mismo instante, conectadas por dos canales, uno de voz y otro de audio)
los canales d audio y voz es un nodo con dos salidas, la audio para oir y la d voz para hablar,
y gracias por la ayuda.
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

como crear una lista simple en pascal..?

Publicado por ramon (2072 intervenciones) el 19/11/2012 19:53:36
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
{Mira algo de arboles}
 
 program arbols;
  uses
     crt;
 
   type
      pnarbol = ^narbol;
      narbol = record
         info : integer;
         izq  : pnarbol;
         der  : pnarbol;
      end;
 
   var
      raiz : pnarbol;
 
     procedure agregarvalor(var raiz : pnarbol; v : integer);
     begin
      if (raiz = nil) then
      begin
         new(raiz);
         raiz^.info:=v;
         raiz^.der := nil;
        raiz^.izq := nil;
       exit;
     end;
       if (v < raiz^.info) then
       begin
        agregarvalor(raiz^.izq, v);
     end
   else
      begin
        agregarvalor(raiz^.der, v);
     end;
  end;
 
  procedure inorden(raiz: pnarbol);
  begin
    if (raiz <> nil) then
    begin
      inorden(raiz^.izq);
      write('  ',raiz^.info);
      inorden(raiz^.der);
    end;
 end;
 
    procedure preorden(raiz: pnarbol);
    begin
      if (raiz <> nil) then
      begin
        write('  ',raiz^.info);
        preorden(raiz^.izq);
        preorden(raiz^.der);
     end;
   end;
 
     procedure postorden(raiz: pnarbol);
     begin
      if (raiz <> nil) then
      begin
         postorden(raiz^.izq);
         postorden(raiz^.der);
         write('  ',raiz^.info);
      end;
   end;
 
 
 
 
     begin
       clrscr;
       raiz := nil;
       agregarvalor(raiz,5);
       agregarvalor(raiz,2);
       agregarvalor(raiz,8);
       agregarvalor(raiz,9);
       agregarvalor(raiz,1);
       agregarvalor(raiz,4);
       agregarvalor(raiz,6);
       agregarvalor(raiz,3);
       agregarvalor(raiz,7);
       writeln('  En postorden ');
       writeln;
       postorden(raiz);
       writeln;
       writeln;
       writeln('  En preorden ');
       writeln;
       preorden(raiz);
       writeln;
       writeln;
       writeln('  En inorden ');
       writeln;
       inorden(raiz);
       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

como crear una lista simple en pascal..?

Publicado por pamela gomez (17 intervenciones) el 27/11/2012 20:12:27
Alguien q me pueda ayudar con este trabajo ya q necesito entregarlo el 6 d diciembre y no entiendo mucho de esto, lo necesito ya q con este trabajo termino todo lo referente a lo q es con pascal y asi poder pasar a C, les agradeceria su ayuda.

Desarrollar un simular de una red de telefonía celular, conectada a un proveedor de servicios telefónicos celulares del país, el rango de cobertura será el GAM (Gran Área Metropolitana), fuera de eso, se desviarán las llamadas por la red de otro proveedor.

Puntos a tomar en cuenta:
• Diseño de las antenas
• Conexión entre antenas propietarias
• Conexión entre antenas del proveedor alternativo
• Cada celda celular tiene una capacidad para 100 llamadas al mismo instante, conectadas por dos canales, uno de voz y otro de audio
• Control de mensajería de texto
• Control de mensajería de voz
• Control de llamadas efectuadas
• Control de llamadas perdidas
• Control de cantidad de mensajes de texto
• Control de mensajes de texto entregados
• Control de promedio de mensajes de texto por:
o Hora o Semana o Mes

La idea es q esto se haga utilizando Nodos,arboles y listas(simples o doblemente enlazadas).si me pudieses dar un ejemplo o una idea d como implementarlo se lo agradesco.gracias.
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

como crear una lista simple en pascal..?

Publicado por ramon (2072 intervenciones) el 28/11/2012 21:32:48
Pregunta te va bien en lista doble mente enlazada.
no podrías darme mas datos para poder enfocarlo de forma que sea mas positivo para ti.
Primero que significa eso de Diseño de las antenas no lo cazo.
Control de mensajería de texto
• Control de mensajería de voz
• Control de llamadas efectuadas
• Control de llamadas perdidas
• Control de cantidad de mensajes de texto
• Control de mensajes de texto entregados
• Control de promedio de mensajes de texto por:
o Hora o Semana o Mes
todo esto se supone que serán entradas por teclado o sea :

como se supone que el programa sabrá que es un mensaje si no es porque se lo decimos
nosotros ya que el no tiene otra forma de detectar el echo.
Lo mismo pasa con el resto me puedes aclarar algo esto.
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

como crear una lista simple en pascal..?

Publicado por pamela gomez (17 intervenciones) el 29/11/2012 08:17:36
en la lista doblemente enlazadas entiendo un poco,me va bien.
en lo q respeta al diseño d antenas el profesor no explico mucho,pero creo que se trata mas q todo d la creacion de varios nodos simulando las antenas del proveedor las cuales tienen la capacidad d q si yo te llamo envia las señal de audio y de voz de mi celular a la antena mas cercana y de ahi a otra antena mas cercana d donde tu te hayas a tu celular y viceversa(con la señal d audio y voz).
en control d mensajeria d voz es cuando tu no contestas y yo te dejo un mensanje d voz para que luego lo escuches.

y en lo demas tenes razon creo q tiene q ser digitado. Una idea q creo q me parece es q haiga un menu donde yo eligo la opcion si hacer una llamada y despues yo eligo si ese celular al q llaman esta o no dentro del area metropolitana si lo esta tirar un mensaje diciendo (realizando llamada) despues eligo si contesto (contabilazarlo a llamadas efectuadas) y si no contesto preguntar si deseo dejar un mensaje d voz si dejo uno (contabilizarlo a mensajeria d voz) y si no a contabilizarlo a (llamadas perdidas) si no esta dentro del area tirar un mensaje diciendo (fuera del area desviando llamada al otro proveedor) y hacer lo mismo.
luego otra opcion donde eligo si realizo un mensaje d texto y hacer lo mismo q anterior mente contabilizar respectivamente.
y otra opcion donde me tira el total d todos los mensajes d voz,d llamadas efectuadas y todo lo demas. Creo que podria ser algo asi, no se si esta bien, pero creo q tu sabes como seria mejor hacerlo.gracias.
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

como crear una lista simple en pascal..?

Publicado por ramon (2072 intervenciones) el 29/11/2012 17:30:36
De acuerdo vamos a intentar hacerlo lo mejor que podamos y lo mas rápido también.
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

como crear una lista simple en pascal..?

Publicado por pamela gomez (17 intervenciones) el 30/11/2012 06:36:02
ok muchas gracias por su ayuda!!.
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

como crear una lista simple en pascal..?

Publicado por ramon (2072 intervenciones) el 04/12/2012 21:06:21
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
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
{A ver si esto sirve no estoy seguro de lo que se pide pero a ver}
 
 program listasdoble;
 uses
    crt;
    type
       listan = ^listatelef;
       listatelef = record
               antpropi : boolean;
               antprove : boolean;
               canales  : integer;
               menstext : boolean;
               mensvoz  : boolean;
               llamadas : integer;
               llaperdi : integer;
               canrmesa : integer;
               menentre : integer;
               promedio : array[1..3] of real;
               sig, ant : listan;
             end;
  var
    prim, anter, ultim, actual : listan;
    entdatos : listatelef;
    ncan, llamad : integer;
    cont, qant : integer;
    nn, nrec : integer;
 
  procedure inicio;
  begin
     fillchar(entdatos,sizeof(listatelef),0);
  end;
 
  procedure borradodatos;
  var
    te : char;
  begin
    clrscr;
    writeln('<<<< Esta Intentando Borrar Todos Sus Datos >>>>');
    writeln('            **** Continua [S/N] ****');
  repeat
       te := upcase(readkey);
  until te in['S','N'];
  if te = 'S' then
  begin
    if actual <> nil then
    dispose(actual);
    ncan := 1;
    prim := nil;
    ultim := nil;
    nn := 0;
    cont := 0;
   end;
  end;
 
  procedure emiteporpropia;
  var
    i : integer;
  begin
      for i := 1 to 4 do
         begin
            gotoxy(50 - i,14 - i);write('\');
            gotoxy(45 - (i * 2),10);write('Ä');
            gotoxy(33 + i,9 - i);write('/');
         end;
         for i := 1 to 16 do
         begin
            gotoxy(37 - i,4);write('Ä');
         end;
         for i := 1 to 7 do
         begin
            gotoxy(20 - i,4 + i);write('/');
         end;
         for i := 1 to 4 do
         begin
            gotoxy(13 - i,11);write('Ä');
         end;
    end;
 
  procedure emiteporpropiapoveedor;
  var
    i : integer;
  begin
      for i := 1 to 4 do
         begin
            gotoxy(50 - i,14 - i);write('\');
            gotoxy(45 - (i * 2),10);write('Ä');
            gotoxy(33 + i,9 - i);write('/');
         end;
         for i := 1 to 22 do
         begin
            gotoxy(37 - i,4);write('Ä');
         end;
         for i := 1  to 3 do
         begin
             gotoxy(9 - i,5 + (i - 1));write('/');
             gotoxy(5,6 + (i + 1));write('³');
         end;
    end;
 
  procedure comunicacion(cual : integer);
  var
     i, z : integer;
  begin
    if cual in[1,2] then
    begin
     gotoxy(19,2);write('*** Antenas ***');
     gotoxy(9,3);write('Prov.');
     gotoxy(39,3);write('Prop.');
     gotoxy(8,4);write(' /ÄÂÄ\                        /ÄÂÄ\');
     gotoxy(8,5);write('   ³                            ³  ');
     gotoxy(8,6);write('   ³                            ³  ');
     gotoxy(8,7);write(' ÄÄÁÄÄ                        ÄÄÁÄÄ');
     gotoxy(21,9);write('ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿');
    gotoxy(21,10);write('³ Centralita ³');
    gotoxy(21,11);write('ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ');
    gotoxy(2,11);write('ÚÄÄÄÄ¿');
    gotoxy(2,12);write('³0000³');
    gotoxy(2,13);write('³0000³');
    gotoxy(2,14);write('³  00³');
    gotoxy(2,15);write('ÀÄÄÄÄÙ');
    gotoxy(2,16);write('Rector');
    gotoxy(50,11);write('ÚÄÄÄÄ¿');
    gotoxy(50,12);write('³0000³');
    gotoxy(50,13);write('³0000³');
    gotoxy(50,14);write('³  00³');
    gotoxy(50,15);write('ÀÄÄÄÄÙ');
    gotoxy(50,16);write('Emisor');
     if cual = 1 then
     begin
         emiteporpropia;
     end
  else
     begin
        emiteporpropiapoveedor;
     end;
   end;
  end;
 
   procedure menudatos;
   begin
       cont := cont + 1;
       gotoxy(35,1);write('*** Servicio Telefono *** Llamada N§ ',cont);
       gotoxy(55,3);write('  1 = Mensage Texto');
       gotoxy(55,4);write('  2 = Mensage Voz');
       gotoxy(55,5);write('  3 = Llamada Efectiva');
       gotoxy(55,6);write('  4 = Llamada Perdida');
       gotoxy(55,7);write('  5 = Mensage Entregado');
       gotoxy(55,8);write('  6 = Salir');
       gotoxy(56,10);write('<<< Elija Opcion >>>');
   end;
 
   procedure tomadatostelefono;
   var
     deci : char;
     n : integer;
   begin
       writeln('  Entre Zona [1] = Dentro De GAM / [2] = Fuera De GAM');
       repeat
           deci := readkey;
       until deci in['1','2'];
       clrscr;
    case deci of
  '1' : n := 1;
  '2' : n := 2;
    end;
       comunicacion(n);
       if n = 1 then
       begin
       actual^.antpropi := true;
       actual^.antprove := false;
       nn := n;
       menudatos;
       actual^.canales := cont;
     repeat
       repeat
         deci := readkey;
       until deci in['1','2','3','4','5','6'];
     case deci of
  '1' : actual^.menstext := true;
  '2' : actual^.mensvoz := true;
  '3' : actual^.llamadas :=  actual^.llamadas + 1;
  '4' : actual^.llaperdi := actual^.llaperdi + 1;
  '5' : actual^.menentre := actual^.menentre + 1;
     end;
     until deci = '6';
     if actual^.menstext = true then
       actual^.canrmesa := actual^.canrmesa + 1;
       end;
       if n = 2 then
       begin
       actual^.antpropi := true;
       actual^.antprove := true;
       nn := n;
       menudatos;
       actual^.canales := cont;
       repeat
        repeat
        deci := readkey;
     until deci in['1','2','3','4','5','6'];
     case deci of
  '1' : actual^.menstext := true;
  '2' : actual^.mensvoz := true;
  '3' : actual^.llamadas :=  actual^.llamadas + 1;
  '4' : actual^.llaperdi := actual^.llaperdi + 1;
  '5' : actual^.menentre := actual^.menentre + 1;
     end;
       until deci = '6';
       if actual^.menstext = true then
       actual^.canrmesa := actual^.canrmesa + 1;
       end;
   end;
 
 
  procedure insertarregistro;
  begin
      inicio;
      if prim = nil then
      begin
          new(actual);
          tomadatostelefono;
          actual^.sig := nil;
          actual^.ant := nil;
          prim := actual;
          ultim := actual;
      end
   else
      begin
          anter := ultim;
          new(actual);
          tomadatostelefono;
          anter^.sig := actual;
          actual^.sig := nil;
          actual^.ant := anter;
          ultim := actual;
      end;
  end;
 
  procedure listarregistros;
  var
     tec : char;
   begin
       if prim <> nil then
       begin
          actual := prim;
          while actual <> nil do
          begin
              with actual^ do
              begin
              writeln(' Antena Usada Provesdor      = ',antpropi);
              writeln(' Antena Usada Otro Provesdor = ',antprove);
              writeln(' Canales Usados              = ',canales);
              writeln(' Lamadar Realizadas          = ',llamadas);
              writeln(' Llamadas Perdidas           = ',llaperdi);
              writeln(' Mensajes Entregados         = ',menentre);
              writeln;
              writeln('  Pulse [Enter]');
              readln;
              clrscr;
              end;
              actual := actual^.sig;
          end;
          writeln;
          writeln('///// Pulse Una Tecla //////');
          readkey;
       end
    else
       begin
           clrscr;
           writeln;
           writeln('     Registros Vacios Entre Datos');
           writeln('     Pulse Una Tecla Para Segir');
           readkey;
       end;
   end;
 
  procedure datosdellamadas;
  var
    bb, cc : integer;
  begin
      bb := 0;
      cc := 0;
      if prim <> nil then
      begin
        actual := prim;
        while actual <> nil do
        begin
         bb := bb + 1;
         with actual^ do
         begin
            if menstext = true then
            begin
               cc := cc + 1;
            end;
         end;
          actual := actual^.sig;
      end;
        clrscr;
        writeln(' El Promedio De Mensajes De Texto Es : ',(cc / bb):0:2);
        writeln(' Pulse [Enter]');
        readln;
     end;
  end;
 
  procedure menu;
  var
     tecl : char;
     sal : boolean;
  begin
     sal := false;
   repeat
   clrscr;
   writeln('******* Menu Principal *********');
   writeln;
   writeln('  1 = Peticion De Llamada');
   writeln('  2 = Listar Estado');
   writeln('  3 = Datos De Llamadas ');
   writeln('  4 = Borrado total');
   writeln('  5 = salir');
   writeln;
   writeln('<<<<< Elija Opcion >>>>>');
   repeat
       tecl := readkey;
   until tecl in[#49..#53];
  case tecl of
 #49 : begin clrscr; insertarregistro; end;
 #50 : begin clrscr; listarregistros; end;
 #51 : begin clrscr; datosdellamadas; end;
 #52 : begin clrscr; borradodatos; end;
 #53 : sal := true;
  end;
   until sal = true;
  end;
 
  begin
      clrscr;
      ncan := 1;
      prim := nil;
      ultim := nil;
      nn := 0;
      cont := 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