Pascal/Turbo Pascal - Variable

 
Vista:
sin imagen de perfil

Variable

Publicado por tugatime (44 intervenciones) el 30/01/2013 18:08:37
Lo que pasa es lo siguiente yo tengo una tabla de tipo de un registro (esto es un ejemplo así que me lo voy a inventar todo).
Lo que tengo es lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
type
       comprador=record
                   nombre: string;
                   edad: integer;
                   DNI: string;
                   pagar: boolean;
       end;
 
       todosCompradores=array[1..10] of comprador;
 
var
      tablaComprador: todosCompradores;
      posicion: integer;



Tengo este registro y esta tabla y lo que voy hacer es introducir los datos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure introducirDatos(var tablaComprador: todosCompradores; var posicion: integer);
                    var
                         i: integer;
 
                    begin
                               for i:=1 to 10 do
                                    begin
                                              write('Introduzca el nombre: ');
                                              readln(tablaComprador[i].nombre);
                                              wite('Introduzca la edad: ');
                                              readln(tablaComprador[i].edad);
                                              write('Introduzca el DNI: ');
                                              readln(tablaComprador[i].DNI);
                                              tablaComprador[i].pagar:=false;
                                    end;
                    end;


Como podeis ver, en el procedimiento "introducirDatos" es donde pregunto al usuario los datos de cada comprador y los pongo en la tabla. Pero, también veis una variable llamada "posicion" que no la estoy utilizando. Aquí es donde necesito ayuda.
Yo voy a organizar los comprador por su posición, es decir, el primer que ha llegado se queda en la posición 1 que al mismo tiempo es la posición 1 de la tabla que es donde voy a guardar sus datos. El segundo que llegue se queda con la posición 2 que al mismo tiempo es la posición 2 de la tabla que es donde voy a guardar sus datos, y esto así hasta llegar a los 10 compradores.

Lo que yo quiero es saber si es posible guardar la posición de cada comprado es la variable posición ?? O si esta variable tiene un tipo equivocado ??

Es que yo tengo que hacer otro procedimiento para borrar los compradores de la tabla, es decir, aquellos que ya han comprado y ya han pagado los borro de la tabla. Como podéis ver la tabla tiene una variable llamada "pagar". Si esta variable es FALSE significa que el comprador aun no ha pagado y sigue en la tabla. Pero, si la variable es TRUE significa que el comprador ya ha pagado y se ha borrado de la tabla.
Como os estaba diciendo, en el procedimiento para borrar a un comprador de la tabla, lo que se hace es preguntar que comprador quiero eliminar (porque ha pagado ya) y luego buscar este comprador en la tabla y eliminarlo. Pero lo que yo quiero saber es si es posible utilizar la variable "posicion" para buscar el comprador (es decir introduzco la posición del comprador y con la variable la busco en la tabla) y luego eliminarlo ???
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

Variable

Publicado por ramon (2158 intervenciones) el 30/01/2013 19:22:29
La variable posición supongo que sera para marcar las posiciones del array ejemplo:

tablaComprador[posicion].nombre;
tablaComprador[posicion]. edad;
tablaComprador[posicion]. DNI;
tablaComprador[posicion].pagar;
posicion := posicion + 1;

Como ves marca el avance en el array por lo tanto cada entrada estará en la posición según
las introduces luego tu aras lo que quieras con ello o sea con el array.
La variable tiene el numero del ultimo registro entrado en el array si tienes que buscar algo
la puedes emplear pero date cuenta que es la llave que te informara de los registros entrados
en el array si no siempre tendrás que recorrer todo el array para buscar, bien sea una entrada
nueva o una eliminación.
Lo mejor es que pongas otra variable para búsquedas o modificaciones y esa la emplees como
puntero del array.
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

Variable

Publicado por tugatime (44 intervenciones) el 30/01/2013 22:05:20
Esto fue lo ultimo que me has dicho:

"Lo mejor es que pongas otra variable para búsquedas o modificaciones y esa la emplees como
puntero del array."

Me puedes dar un ejemplo por favor ?
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

Variable

Publicado por ramon (2158 intervenciones) el 31/01/2013 17:11:34
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
{Mira Esto a ver si ayuda}
 
 uses
    crt;
 const
     maximo = 10;
 type
 comprador = record
           nombre : string;
           edad : integer;
           DNI : string;
           pagar : boolean;
       end;
 
       todosCompradores = array[1..maximo] of comprador;
 
    var
      tablaComprador : todosCompradores;
      busqueda, posicion : integer;
 
 
   procedure entrada(n : integer);
   begin
      clrscr;
      writeln(' **** Entrada De Datos ****');
      writeln;
      write('   Nombre     : ');
      readln(tablaComprador[n].nombre);
      write('   Edad       : ');
      readln(tablaComprador[n].edad);
      write('   Num. DNI   : ');
      readln(tablaComprador[n].dni);
      tablaComprador[n].pagar := false;
   end;
 
   procedure presenta(n : integer);
   begin
      clrscr;
      writeln(' <<<< Informacion >>>>');
      writeln;
      writeln(' Nombre : ',tablaComprador[n].nombre);
      writeln(' Edad   : ',tablaComprador[n].edad);
      writeln(' N. DNI : ',tablaComprador[n].dni);
      writeln(' Pagar  : ',tablaComprador[n].pagar);
      writeln;
      writeln(' Pulse [Enter]');
      readln;
   end;
 
   procedure menu;
 var
   tecl : char;
   sal : boolean;
  begin
      sal := false;
    repeat
       clrscr;
       writeln('       **** Menu General ****');
       writeln;
       writeln('     1 = Entrada Datos ');
       writeln('     2 = Presenta Datos ');
       writeln('     3 = Salir ');
       writeln;
       writeln('     >>>> Elija Opcion <<<<');
       repeat
       tecl := readkey;
       until tecl in[#49,#50,#51];
    case tecl of
  #49 : begin
          clrscr;
          entrada(posicion);
          posicion := posicion + 1;
          if posicion > maximo then
          posicion := maximo;
         end;
  #50 : begin
         clrscr;
         writeln(' Entre Registro Numero');
         write(' Num : ');
         readln(busqueda);
         presenta(busqueda);
       end;
  #51 : sal := true;
    end;
    until sal = true;
  end;
 
  begin
      clrscr;
      posicion := 1;
      menu;
  end.
 
{Esta para una presentación la que quieras y las entradas asta que tu digas o termine el array}
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
sin imagen de perfil

Variable

Publicado por tugatime (44 intervenciones) el 31/01/2013 18:07:30
Ok, gracias por la ayuda ahora ya lo entiendo muy bien.
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