• Jueves 28 de Marzo de 2024, 22:29

Autor Tema:  Buscar en un array  (Leído 1411 veces)

pegui

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Buscar en un array
« en: Miércoles 2 de Julio de 2008, 20:31 »
0
Me dan un fichero binario (.dat) con los datos correspondientes a unas imagenes.
 tImagenV=RECORD
                Cod_Ima:Integer;
                Precio:Real;
                Cod_Autor:1..30;
                Autor:String[20];
                Cliente:String[20];
             END;

tFich=File of tImagenV;

el fichero contiene 50 registros y solo hay 30 autores diferentes.
primero los paso a un array como me dicen.
pero luego me piden que le recorra y pase a otro array solo los 30 autores distintos que hay, y aqui empiezan mis problemas.

yo me he hecho esta declaración de tipos:
PROGRAM Pintores;
CONST
     Max=30;
     N=50;
TYPE
    tImagenV=RECORD
                Cod_Ima:Integer;
                Precio:Real;
                Cod_Autor:1..30;
                Autor:String[20];
                Cliente:String[20];
             END;
    tNuevo=RECORD
              Cod_Autor:1..30;
              Autor:String[20];
              Pinturas:Integer;
              Total:Real;
           END;

    tFich=File of tImagenV;
    tArray=ARRAY[1..Max]OF tNuevo;
    tVector=ARRAY[1..N]OF tImagenV;

VAR
   F1:tFich;
   F2:Text;
   Nuevo:tNeuvo;
   Vector:tVector;
   ImagenV:tImagenV;
   salida:tArray;
   I:Integer;

Mi idea es recorrer el array con un for FOR I:=1 TO N DO. Pero como hago para que solo me pase los no repetidos???
Tambien me pide que pase a un fichero de texto el nombre del autor, el número de imagenes que vendio y el precio total.
recorrer el array y pasarlo a un fichero de texto tb lo tengo hecho, pero como hago para almacenar esos datos en el array??
Por favor necesito ayuda!!!
Muchas gracias

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Buscar en un array
« Respuesta #1 en: Sábado 5 de Julio de 2008, 04:54 »
0
Hola, mientras estas recorriendo el primer array con el for, antes de agregar un autor al segudno array,  chequeas si contiene ya a este autor usando otro for, si no está lo agregas.
Código: Text
  1.  
  2. k:= 1;
  3. for i:=1 to 50 do
  4. begin
  5.    for j:=1 to 30 do
  6.         if array_2[j] = array_1[i] then
  7.               AutorExiste := true;
  8.    if not AutorExiste then
  9.    begin
  10.        array_2[k] := array_1[i];
  11.        k := k+1;
  12.        AutorExite := false;
  13.     end;
  14. end;            
  15.  
  16.  
Saludos