• Viernes 19 de Abril de 2024, 09:42

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Nightwalker

Páginas: [1]
1
Pascal / Consulta de archivo (ordenacion)
« en: Jueves 12 de Marzo de 2009, 19:50 »
tengo este code ...
Código: Pascal
  1. program admin;
  2.  
  3. uses
  4. crt;
  5. //Declaramos las variables que usamos
  6. const
  7. archext = 'archivo.dat';
  8. contador = 0;
  9. //declaro estructura
  10. type
  11.  
  12.  
  13.         datos=record
  14.                 nombre:string[30];
  15.                 apellido:string[30];
  16.                 dni:string[10];
  17.                 telefono:string[20];
  18.                 direccion:string[30];
  19.                 n_carpa:integer;
  20.  
  21.         end;
  22.         // arreglo de datos para ordenar
  23. ARdatos = array[0..100] of datos;
  24.  
  25. //declaro que agenda es igual a el tipo de estructura
  26. agenda = file of datos;
  27. var
  28.  
  29. op:char;  //operacion a realizar
  30. arch:agenda; //nombre interno de archivo
  31.  
  32. procedure crear_arch(var info:datos);   //procedimiento crea archivo
  33. begin
  34.     Assign(arch, archext);    //asigno el archivo interno a el declarado en la constante al principio
  35. end;
  36.  
  37.  
  38. procedure a_cliente(); //procedimiento para agregar cliente
  39.         var                    //variables de el procedimiento
  40.      info:datos;
  41.     begin
  42.         reset(arch);
  43.          writeln('Ingrese Nombre');  //ingresamos los datos
  44.          readln(info.nombre);
  45.          writeln('Ingrese Apellido');
  46.          readln(info.apellido);
  47.          writeln('Ingrese Dni');
  48.          readln(info.dni);
  49.          writeln('Ingrese Telefono');
  50.          readln(info.telefono);
  51.          writeln('Ingrese Direccion');
  52.          readln(info.direccion);
  53.          writeln('Ingrese Numero De Carpa');
  54.          readln(info.n_carpa);
  55.          write(arch, info);
  56.          close(arch);
  57.  
  58. end;
  59.  
  60.  
  61. procedure m_cliente();
  62.        begin
  63.                        // COMO MODIFICO DATOS DE LOS CLIENTES
  64.        end;
  65.  
  66.  
  67. procedure menu;   //Formamos el menu
  68.    begin
  69.    writeln('Menu');
  70.     writeln('1.Agregar Cliente');
  71.     writeln('2.Modificar Cliente');
  72.     writeln('3.Borrar Cliente');
  73.     writeln('4.Opcion de Respaldo de Datos');
  74.     writeln('5.Finalizar Aplicacion');
  75.      end;
  76. procedure decision; //depende de el numero la accion que eligen del menu
  77.     begin
  78.         readln(op);
  79.  
  80.         case op  of
  81.            '1' : a_cliente; // Agrego Cliente
  82. //           '2' : m_cliente; // Modifico Cliente
  83. //           '3' :b_cliente; // Borro cliente
  84. //           '4' : respaldo; // Realizamos backup
  85. //           '5' : cerrar;  // Guarda y cierra
  86.         end;
  87.     end;
  88.  
  89.  
  90.     procedure listar(var info:datos); // este compila bien pero si lo llamo en el programa principal me da error :S
  91.         begin
  92.                 while not eof do
  93.                         write('El listado de Nombres completo es:',info.nombre);
  94.                 end;
  95.  
  96.  
  97.  
  98. Begin // Programa Principal
  99.         menu;
  100.  
  101.  
  102.  
  103.  
  104.  
  105. End.
  106.  
  107.  
la cuestion es como completo el procedimiento de ordenacion que me hice un lio BARBARO! y por que me da error cuando llamo a listar ?¿?¿?¿ si me pueden dar una mano se los agradeceria :D

tengo esto ahora pero no anda
Código: Pascal
  1. procedure ordeno(var ARdatosarray:datos);
  2.           var ordenado:boolean;aux,i:integer;j:integer;
  3.     begin
  4.          ordenado:=false;
  5.          while not ordenado=true do
  6. // Vamos a recorrer todo el vector parándonos en cada posición, salvo en la última porque ya está ordenada sí o sí tras la primera pasada.
  7.              for i:= 1 to 100-1 do
  8. // y por cada parada, se recorre el vector hasta el final, haciendo las comparaciones.
  9.         for j:=i to 100 do
  10.  
  11. // Veo si la posición siguiente del vector es mayor a la actual
  12.  
  13.               if (ARdatos[j] < ARdatos[j+1]) then
  14.  
  15.  
  16.                aux:=ARdatos[j]; // guardo temporalmente la posición actual en auxiliar,
  17.  
  18.                ARdatos[j]:=ARdatos[j+1];//la posición actual pasa a valer lo mismo que la posición siguiente,
  19.  
  20.            ARdatos[j+1]:=aux; // la posición siguiente pasa a valerlo que valía la posición actual (aux).
  21.  
  22.  

Páginas: [1]