[ Foro de Pascal ]

Busqueda de un dato en un array de registros

02-Mar-2015 00:15
Carlos Idrobo
6 Respuestas

Buenas noches, amigos soy un novato y tengo dudas con respecto a como realizar una busqueda en  un registro.. Explico: estoy haciendo un array de registros para guardar datos de una encuesta de un estudio de mercado, debo registrar productos, fechas  y otras caracteristicas, pero cuando no se buscar un tipo de producto para que salgan todos los datos de producto en especifico..., pueden darme un empujon con este caso? gracias de antemano.


02-Mar-2015 00:48
Nacho Cabanes (+84)

Si pones tu fuente, la respuesta será más directa, pero bueno...  El buscar en un array debería ser simplemente un "for" que compare los valores de ciertos campos con algo prefijado... Y el mostrar un registros son varias ordenes Writeln, una por cada campo.


03-Mar-2015 04:02
Carlos Idrobo

Entiendo. me disculpo. anexo el código que he hecho hasta ahora. Algunas partes poseen comentarios para ir trabajando mas adelante..


PROGRAM TP323;
USES CRT; {PARA DECLARAR LA BIBLIOTECA A USARSE}

TYPE
  RMUESTRA= RECORD   {DECLARANDO EL REGISTRO Y SUS CAMPOS}
      PRODUCTO: STRING[10];
	  ESTRATO: STRING[20];
	  SEXO: CHAR;
	  EDAD: CHAR;
	  FECHA: STRING[10];
	END;
VAR
VECTOR: ARRAY[1..200] OF RMUESTRA;  {PARA EL ARREGLO DE REGISTROS}
CONTADOR: INTEGER;

PROCEDURE ENTRADA_DATOS; {MODULO DE INGRESO DE DATOS}
VAR
CONTADOR_E:INTEGER;
BEGIN
TEXTBACKGROUND(CYAN);
CLRSCR;
TEXTCOLOR(YELLOW);
WRITELN('===============================================================================');
GOTOXY(15,3);
WRITELN('                    FASE DE REGISTRO                                           ');
WRITELN('===============================================================================');
WRITELN;
  FOR CONTADOR_E:=1 TO 3 DO
   BEGIN
     WRITELN('   INDIQUE EL TIPO DE PRODUCTO PREFERIDO SEGUN LA SIGUIENTE LEYENDA ');
	 WRITELN('');
	 WRITELN('   (LD)= LECHE DESCREMADA, (LE)= LECHE ENTERA, (YG)= YOGURT Y (HE)= HELADO.');
	 WRITELN('');
	 WRITE('PRODUCTO:  ');
	 READLN(VECTOR[CONTADOR_E].PRODUCTO);
	 WRITELN('');
	 WRITELN('A QUE ESTRATO SOCIAL PERTENECE?');
	 WRITELN('');
	 WRITELN('ESCRIBA: (CLA)PARA CLASE ALTA Y MEDIA ALTA, (CLB)PARA CLASE MEDIA Y (CLC) PARA  LA CLASE MEDIA BAJA ');
	 WRITELN('');
	 WRITE('ESTRATO SOCIAL:  ');
	 READLN(VECTOR[CONTADOR_E].ESTRATO);
	 WRITELN('');
	 WRITELN('CUAL ES SU RANGO DE EDAD?');
	 WRITELN('ESCRIBA: (EJ) PARA EDAD JUVENIL, (AD) PARA ADULTOS Y (ADM) SI ES ADULTO MAYOR ');
	 WRITELN('');
	 WRITE('EDAD : ');
	 READLN (VECTOR[CONTADOR_E].EDAD);
	 WRITELN('CUAL ES SU SEXO?');
	 WRITELN('ESCRIBA: (M)MASCULINO (F) FEMENINO ');
	 WRITELN('');
	 WRITE('SEXO : ');
	 READLN (VECTOR[CONTADOR_E].SEXO);
	 WRITELN('FECHA DE LA MUESTRA (DIA/MES/AÑO');
	 WRITELN('');
	 WRITE('FECHA : ');
	 READLN (VECTOR[CONTADOR_E].FECHA);
	 WRITELN;
	 WRITELN;
	 WRITELN('================================================================================');
	 WRITELN('================================================================================');
   END;
END;


PROCEDURE CONSULTA;
           VAR
           PROD : STRING[20];
           AUX : INTEGER;
           BOOL: BOOLEAN;
           BEGIN
              TEXTBACKGROUND(CYAN);
			  CLRSCR;
              TEXTCOLOR(YELLOW);
              WRITELN('===============================================================================');
              GOTOXY(15,3);
              WRITELN('                    FASE DE CONSULTAS                                           ');
              WRITELN('===============================================================================');
              WRITELN;
			  WRITELN('>>>>>> PARA SU CONSULTA POR FAVOR INGRESE EL CODIGO DE PRODUCTO <<<<<<<');
              WRITELN('(LD)= LECHE DESCREMADA, (LE)= LECHE ENTERA, (YG)= YOGURT Y (HE)= HELADO.');
              WRITE(' PRODUCTO : ');
              READLN(PROD);
              FOR AUX := 1 TO LENGTH(PROD) DO
				PROD[AUX] := UPCASE(PROD[AUX]);
				AUX := 0;
				IF BOOL = FALSE THEN
					WRITELN('DISCULPE SU PRODUCTO NO APARECE EN EL REGISTRO PRESIONE UNA TECLA PARA IR AL MENU ANTERIOR');
					REPEAT
						IF VECTOR[AUX].PRODUCTO = PROD THEN
						BOOL := TRUE
							ELSE
							AUX := AUX + 1;
					UNTIL (AUX > CONTADOR - 1) OR (BOOL = TRUE);
					IF BOOL = TRUE THEN
						BEGIN
							CLRSCR;
							WRITELN(' >>>>>>>LOS DATOS CONSULTADOS SON<<<<<<<');
							WRITELN;
							WRITELN(' PRODUCTO = ',VECTOR[AUX].PRODUCTO);
							WRITELN(' ESTRATO SOCIAL = ',VECTOR[AUX].ESTRATO);
							WRITELN(' SEXO = ',VECTOR[AUX].SEXO);
							WRITELN(' FECHA = ',VECTOR[AUX].FECHA);
							WRITELN(' EDAD = ',VECTOR[AUX].EDAD);
							WRITELN;
							WRITELN;
							WRITELN(' >>>>> PRESIONE CUALQUIER TECLA <<<<<');
							READKEY;
						END;
					END;






PROCEDURE MENU;{ PROGRAMA PRINCIPAL }
         VAR
         SALIR : BOOLEAN;
         OPCIONES : CHAR;
         BEGIN
           TEXTCOLOR(WHITE);
		   TEXTBACKGROUND (BLUE);
		   SALIR := FALSE;
           CONTADOR := 0;
           REPEAT
		   CLRSCR;
			WRITELN('===============================================================================');
			GOTOXY(8,3);
			WRITELN('                 PAGINA DE INICIO LACTEOS VIDA Y SALUD                         ');
			GOTOXY(8,4);
			WRITELN('                   ESTUDIO DE MERCADO: MERIDA 2015                             ');
			WRITELN('===============================================================================');
            WRITELN('');
            WRITELN('             TIENES ALGUN DATO PARA LA ENCUESTA?   SELECCIONA!...');
            WRITELN;
			WRITELN(' 1 = INCLUIR DATOS EN EL REGISTRO');
			WRITELN;
			WRITELN(' 2 = CONSULTAR REGISTRO DE ENCUESTA');
		    WRITELN;
			WRITELN(' 3 = MODIFICAR REGISTRO DE ENCUESTA');
			WRITELN;
            WRITELN(' 4 = ELIMINAR DATOS DE UN REGISTRO');
			WRITELN;
            WRITELN(' 5 = RESUMEN DE LOS DATOS');
            WRITELN;
            WRITELN(' 6 = SALIDA');
            WRITELN;
            WRITELN('POR FAVOR SELECCIONA UNA OPCION SEGUN LO INDICADO');
            REPEAT
				OPCIONES := READKEY;
				UNTIL OPCIONES IN['1','2','3','4','5','6'];
				CLRSCR;
				CASE OPCIONES OF
				'1' : ENTRADA_DATOS;
				'2' : CONSULTA;
				{'3' : MODIFICAR;
				'4' : ELIMINAR_REGISTRO;
				'5' : VISUALIZAR_TODOS;
				'6' : SALIR := TRUE;
				else
				writeln ('opcion invalida');}
			END;
			UNTIL SALIR = TRUE;
			END ;
        BEGIN
			MENU;
        END.



04-Mar-2015 00:31
Nacho Cabanes (+84)

¿Es el procedimiento "CONSULTA"?

Si es así, no tiene mal aspecto en general, salvo por ciertos detalles puntuales, como que sólo muestra el primer dato encontrado o que el nombre de la variable BOOL no ayuda a que el código sea legible, ni AUX, ni los tamaños de tabulación tan inconsistentes, ni las líneas tan largas, ni el que algunos IF y FOR no tengan un bloque BEGIN-END asociado, por lo que puedes estar repitiendo menos órdenes de las que esperas.

Si lo reformateas un poco, verás con más facilidad cosas que no cuadran, como que usas esa variable BOOL antes de que tenga un valor, o que incrementas AUX en el WHILE (que podría ser un FOR), de modo que ni siquiera muestras realmente el primer valor que encuentras (y ningún otro), sino el siguiente a él:


PROGRAM TP323;
USES CRT;
 
TYPE
  RMUESTRA= RECORD   {DECLARANDO EL REGISTRO Y SUS CAMPOS}
      PRODUCTO: STRING[10];
      ESTRATO: STRING[20];
      SEXO: CHAR;
      EDAD: CHAR;
      FECHA: STRING[10];
    END;

VAR
    VECTOR: ARRAY[1..200] OF RMUESTRA;  {PARA EL ARREGLO DE REGISTROS}
    CONTADOR: INTEGER;
 
PROCEDURE ENTRADA_DATOS; {MODULO DE INGRESO DE DATOS}
VAR
    CONTADOR_E:INTEGER;
BEGIN
TEXTBACKGROUND(CYAN);
    CLRSCR;
    TEXTCOLOR(YELLOW);
    WRITELN('===============================================================================');
    GOTOXY(15,3);
    WRITELN('                    FASE DE REGISTRO                                           ');
    WRITELN('===============================================================================');
    WRITELN;
    FOR CONTADOR_E:=1 TO 3 DO
    BEGIN
        WRITELN('   INDIQUE EL TIPO DE PRODUCTO PREFERIDO SEGUN LA SIGUIENTE LEYENDA ');
        WRITELN('');
        WRITELN('   (LD)= LECHE DESCREMADA, (LE)= LECHE ENTERA, (YG)= YOGURT Y (HE)= HELADO.');
        WRITELN('');
        WRITE('PRODUCTO:  ');
        READLN(VECTOR[CONTADOR_E].PRODUCTO);
        WRITELN('');
        WRITELN('A QUE ESTRATO SOCIAL PERTENECE?');
        WRITELN('');
        WRITELN('ESCRIBA: (CLA)PARA CLASE ALTA Y MEDIA ALTA, (CLB)PARA CLASE MEDIA Y (CLC) PARA  LA CLASE MEDIA BAJA ');
        WRITELN('');
        WRITE('ESTRATO SOCIAL:  ');
        READLN(VECTOR[CONTADOR_E].ESTRATO);
        WRITELN('');
        WRITELN('CUAL ES SU RANGO DE EDAD?');
        WRITELN('ESCRIBA: (EJ) PARA EDAD JUVENIL, (AD) PARA ADULTOS Y (ADM) SI ES ADULTO MAYOR ');
        WRITELN('');
        WRITE('EDAD : ');
        READLN (VECTOR[CONTADOR_E].EDAD);
        WRITELN('CUAL ES SU SEXO?');
        WRITELN('ESCRIBA: (M)MASCULINO (F) FEMENINO ');
        WRITELN('');
        WRITE('SEXO : ');
        READLN (VECTOR[CONTADOR_E].SEXO);
        WRITELN('FECHA DE LA MUESTRA (DIA/MES/AÑO');
        WRITELN('');
        WRITE('FECHA : ');
        READLN (VECTOR[CONTADOR_E].FECHA);
        WRITELN;
        WRITELN;
        WRITELN('================================================================================');
        WRITELN('================================================================================');
    END;
END;
 
 
PROCEDURE CONSULTA;
VAR
    PROD : STRING[20];
    AUX : INTEGER;
    BOOL: BOOLEAN;
BEGIN
    TEXTBACKGROUND(CYAN);
    CLRSCR;
    TEXTCOLOR(YELLOW);
    WRITELN('===============================================================================');
    GOTOXY(15,3);
    WRITELN('                    FASE DE CONSULTAS                                           ');
    WRITELN('===============================================================================');
    WRITELN;
    WRITELN('>>>>>> PARA SU CONSULTA POR FAVOR INGRESE EL CODIGO DE PRODUCTO <<<<<<<');
    WRITELN('(LD)= LECHE DESCREMADA, (LE)= LECHE ENTERA, (YG)= YOGURT Y (HE)= HELADO.');
    WRITE(' PRODUCTO : ');
    READLN(PROD);
    FOR AUX := 1 TO LENGTH(PROD) DO
        PROD[AUX] := UPCASE(PROD[AUX]);
    AUX := 0;
    IF BOOL = FALSE THEN
        WRITELN('DISCULPE SU PRODUCTO NO APARECE EN EL REGISTRO PRESIONE UNA TECLA PARA IR AL MENU ANTERIOR');
    REPEAT
        IF VECTOR[AUX].PRODUCTO = PROD THEN
            BOOL := TRUE
        ELSE
            AUX := AUX + 1;
    UNTIL (AUX > CONTADOR - 1) OR (BOOL = TRUE);
    IF BOOL = TRUE THEN
    BEGIN
        CLRSCR;
        WRITELN(' >>>>>>>LOS DATOS CONSULTADOS SON<<<<<<<');
        WRITELN;
        WRITELN(' PRODUCTO = ',VECTOR[AUX].PRODUCTO);
        WRITELN(' ESTRATO SOCIAL = ',VECTOR[AUX].ESTRATO);
        WRITELN(' SEXO = ',VECTOR[AUX].SEXO);
        WRITELN(' FECHA = ',VECTOR[AUX].FECHA);
        WRITELN(' EDAD = ',VECTOR[AUX].EDAD);
        WRITELN;
        WRITELN;
        WRITELN(' >>>>> PRESIONE CUALQUIER TECLA <<<<<');
        READKEY;
    END;
END;
 
 
PROCEDURE MENU;{ PROGRAMA PRINCIPAL }
VAR
    SALIR : BOOLEAN;
    OPCIONES : CHAR;
BEGIN
    TEXTCOLOR(WHITE);
    TEXTBACKGROUND (BLUE);
    SALIR := FALSE;
    CONTADOR := 0;
    REPEAT
        CLRSCR;
        WRITELN('===============================================================================');
        GOTOXY(8,3);
        WRITELN('                 PAGINA DE INICIO LACTEOS VIDA Y SALUD                         ');
        GOTOXY(8,4);
        WRITELN('                   ESTUDIO DE MERCADO: MERIDA 2015                             ');
        WRITELN('===============================================================================');
        WRITELN('');
        WRITELN('             TIENES ALGUN DATO PARA LA ENCUESTA?   SELECCIONA!...');
        WRITELN;
        WRITELN(' 1 = INCLUIR DATOS EN EL REGISTRO');
        WRITELN;
        WRITELN(' 2 = CONSULTAR REGISTRO DE ENCUESTA');
        WRITELN;
        WRITELN(' 3 = MODIFICAR REGISTRO DE ENCUESTA');
        WRITELN;
        WRITELN(' 4 = ELIMINAR DATOS DE UN REGISTRO');
        WRITELN;
        WRITELN(' 5 = RESUMEN DE LOS DATOS');
        WRITELN;
        WRITELN(' 6 = SALIDA');
        WRITELN;
        WRITELN('POR FAVOR SELECCIONA UNA OPCION SEGUN LO INDICADO');
        REPEAT
            OPCIONES := READKEY;
        UNTIL OPCIONES IN['1','2','3','4','5','6'];
        CLRSCR;
        CASE OPCIONES OF
            '1' : ENTRADA_DATOS;
            '2' : CONSULTA;
            {'3' : MODIFICAR;
            '4' : ELIMINAR_REGISTRO;
            '5' : VISUALIZAR_TODOS;
            '6' : SALIR := TRUE;
            else
            writeln ('opcion invalida');}
        END;
    UNTIL SALIR = TRUE;
END ;


BEGIN
    MENU;
END.

04-Mar-2015 01:38
Luis Torres (+18)

En el cuerpo principal la opción SALIR debería ser '6', de lo contrario solo lo podrás ejecutar una sola vez y perderás los datos introducidos para posteriormente ser consultados.
Saludos.


05-Mar-2015 02:12
Carlos Idrobo

Muchas gracias, me sirvió de mucha ayuda sus comentarios, ahora seguire en la lucha para entender como realizar un procedure para modificar o eliminar lo que se cargue en  esos campos.  Saludos


05-Mar-2015 03:26
Luis Torres (+18)

Me parece bien que hayas podido corregir tu programa. De todas maneras, te dejo a continuación el código que yo elaboré, el cual no está bien ordenado como el tuyo, pero funciona:


 
PROGRAM TP323;
USES CRT; {PARA DECLARAR LA BIBLIOTECA A USARSE}
 
TYPE
  RMUESTRA= RECORD   {DECLARANDO EL REGISTRO Y SUS CAMPOS}
      PRODUCTO: STRING[10];
	  ESTRATO: STRING[20];
	  SEXO: CHAR;
	  EDAD: CHAR;
	  FECHA: STRING[10];
	END;
VAR
VECTOR: ARRAY[1..200] OF RMUESTRA;  {PARA EL ARREGLO DE REGISTROS}
CONTADOR: INTEGER;
NUM_REG, CONTADOR_E: INTEGER; {Para llevar la cuenta sobre cuántos registros llevo ingresado en el arreglo}
 
PROCEDURE ENTRADA_DATOS; {MODULO DE INGRESO DE DATOS}
VAR

mas: char;
i: integer; {Sera usado en ciclo For para convertir en mayúscula}
BEGIN
TEXTBACKGROUND(CYAN);
CLRSCR;
TEXTCOLOR(YELLOW);
WRITELN('===============================================================================');
GOTOXY(15,3);
WRITELN('                    FASE DE REGISTRO                                           ');
WRITELN('===============================================================================');
WRITELN;

  REPEAT                                       {FOR CONTADOR_E:=1 TO 3 DO}
                                                   {BEGIN}
	 CONTADOR_E:= CONTADOR_E + 1;		   
     WRITELN('   INDIQUE EL TIPO DE PRODUCTO PREFERIDO SEGUN LA SIGUIENTE LEYENDA ');
	 WRITELN('');
	 WRITELN('   (LD)= LECHE DESCREMADA, (LE)= LECHE ENTERA, (YG)= YOGURT Y (HE)= HELADO.');
	 WRITELN('');
	 WRITE('PRODUCTO:  ');
	 READLN(VECTOR[CONTADOR_E].PRODUCTO);
	   for i:=1 to length(vector[contador_e].producto) do {Lo convertimos en mayusculas para no tener problema en Consulta}
	     vector[contador_e].producto[i]:= upcase(vector[contador_e].producto[i]);
	 WRITELN('');
	 WRITELN('A QUE ESTRATO SOCIAL PERTENECE?');
	 WRITELN('');
	 WRITELN('ESCRIBA: (CLA)PARA CLASE ALTA Y MEDIA ALTA, (CLB)PARA CLASE MEDIA Y (CLC) PARA  LA CLASE MEDIA BAJA ');
	 WRITELN('');
	 WRITE('ESTRATO SOCIAL:  ');
	 READLN(VECTOR[CONTADOR_E].ESTRATO);
	 WRITELN('');
	 WRITELN('CUAL ES SU RANGO DE EDAD?');
	 WRITELN('ESCRIBA: (EJ) PARA EDAD JUVENIL, (AD) PARA ADULTOS Y (ADM) SI ES ADULTO MAYOR ');
	 WRITELN('');
	 WRITE('EDAD : ');
	 READLN (VECTOR[CONTADOR_E].EDAD);
	 WRITELN('CUAL ES SU SEXO?');
	 WRITELN('ESCRIBA: (M)MASCULINO (F) FEMENINO ');
	 WRITELN('');
	 WRITE('SEXO : ');
	 READLN (VECTOR[CONTADOR_E].SEXO);
	 WRITELN('FECHA DE LA MUESTRA (DIA/MES/AÑO');
	 WRITELN('');
	 WRITE('FECHA : ');
	 READLN (VECTOR[CONTADOR_E].FECHA);
	 WRITELN;
	 WRITELN;
	 WRITELN('================================================================================');
	 WRITELN('================================================================================');
                                      {END;}
	 WRITE('MAS DATOS?: ');
     READLN(mas);	 
  UNTIL ((mas='N') or (mas = 'n')); 
  NUM_REG:= CONTADOR_E;
  writeln('El total almacenado hasta ahora es de ',NUM_REG,' registros');
  readln;
END;
 
 
PROCEDURE CONSULTA;
           VAR
           PROD : STRING[20];
           AUX : INTEGER;
           BOOL: BOOLEAN;
		   i: integer; {Se usara en ciclo For para convertir en mayusculas}
           BEGIN
              TEXTBACKGROUND(CYAN);
			  CLRSCR;
              TEXTCOLOR(YELLOW);
              WRITELN('===============================================================================');
              GOTOXY(15,3);
              WRITELN('                    FASE DE CONSULTAS                                           ');
              WRITELN('===============================================================================');
              WRITELN;
			  WRITELN('>>>>>> PARA SU CONSULTA POR FAVOR INGRESE EL CODIGO DE PRODUCTO <<<<<<<');
              WRITELN('(LD)= LECHE DESCREMADA, (LE)= LECHE ENTERA, (YG)= YOGURT Y (HE)= HELADO.');
              WRITE(' PRODUCTO : ');
              READLN(PROD);
			  for i:=1 to length(prod) do
			    prod[i]:= upcase(prod[i]);
			  BOOL:= FALSE;
			  FOR AUX := 1 TO NUM_REG DO
			     BEGIN
				   IF (VECTOR[AUX].PRODUCTO = PROD) THEN
				      BEGIN
					        BOOL:= TRUE;
							WRITELN;
							WRITELN(' PRODUCTO = ',VECTOR[AUX].PRODUCTO);
							WRITELN(' ESTRATO SOCIAL = ',VECTOR[AUX].ESTRATO);
							WRITELN(' SEXO = ',VECTOR[AUX].SEXO);
							WRITELN(' FECHA = ',VECTOR[AUX].FECHA);
							WRITELN(' EDAD = ',VECTOR[AUX].EDAD);
							WRITELN;
							WRITELN;
							WRITELN(' >>>>> PRESIONE CUALQUIER TECLA <<<<<');
							READKEY;
                      END;							
				 END;
			  IF (BOOL = FALSE) THEN
                 BEGIN
                   WRITELN('NO SE ENCONTRO NINGUN REGISTRO PARA ESE PRODUCTO.');
				   WRITELN('PRESIONE CUALQUIER TECLA PARA CONTINUAR...');
				   READKEY;
                 END;				 
			  
			  
			  
			  
             {FOR AUX := 1 TO LENGTH(PROD) DO
				PROD[AUX] := UPCASE(PROD[AUX]);
				AUX := 0;
				IF BOOL = FALSE THEN
					WRITELN('DISCULPE SU PRODUCTO NO APARECE EN EL REGISTRO PRESIONE UNA TECLA PARA IR AL MENU ANTERIOR');
					REPEAT
						IF VECTOR[AUX].PRODUCTO = PROD THEN
						BOOL := TRUE
							ELSE
							AUX := AUX + 1;
					UNTIL (AUX > CONTADOR - 1) OR (BOOL = TRUE);
					IF BOOL = TRUE THEN
						BEGIN
							CLRSCR;
							WRITELN(' >>>>>>>LOS DATOS CONSULTADOS SON<<<<<<<');
							WRITELN;
							WRITELN(' PRODUCTO = ',VECTOR[AUX].PRODUCTO);
							WRITELN(' ESTRATO SOCIAL = ',VECTOR[AUX].ESTRATO);
							WRITELN(' SEXO = ',VECTOR[AUX].SEXO);
							WRITELN(' FECHA = ',VECTOR[AUX].FECHA);
							WRITELN(' EDAD = ',VECTOR[AUX].EDAD);
							WRITELN;
							WRITELN;
							WRITELN(' >>>>> PRESIONE CUALQUIER TECLA <<<<<');
							READKEY;
						END;}
		   END;
 
 
 
 
 
 
PROCEDURE MENU;{ PROGRAMA PRINCIPAL }
         VAR
         SALIR : BOOLEAN;
         OPCIONES : CHAR;
         BEGIN
           TEXTCOLOR(WHITE);
		   TEXTBACKGROUND (BLUE);
		   SALIR := FALSE;
           CONTADOR_E := 0;
           REPEAT
		   CLRSCR;
			WRITELN('===============================================================================');
			GOTOXY(8,3);
			WRITELN('                 PAGINA DE INICIO LACTEOS VIDA Y SALUD                         ');
			GOTOXY(8,4);
			WRITELN('                   ESTUDIO DE MERCADO: MERIDA 2015                             ');
			WRITELN('===============================================================================');
            WRITELN('');
            WRITELN('             TIENES ALGUN DATO PARA LA ENCUESTA?   SELECCIONA!...');
            WRITELN;
			WRITELN(' 1 = INCLUIR DATOS EN EL REGISTRO');
			WRITELN;
			WRITELN(' 2 = CONSULTAR REGISTRO DE ENCUESTA');
		    WRITELN;
			WRITELN(' 3 = MODIFICAR REGISTRO DE ENCUESTA');
			WRITELN;
            WRITELN(' 4 = ELIMINAR DATOS DE UN REGISTRO');
			WRITELN;
            WRITELN(' 5 = RESUMEN DE LOS DATOS');
            WRITELN;
            WRITELN(' 6 = SALIDA');
            WRITELN;
            WRITELN('POR FAVOR SELECCIONA UNA OPCION SEGUN LO INDICADO');
            REPEAT
				OPCIONES := READKEY;
				UNTIL OPCIONES IN['1','2','3','4','5','6'];
				SALIR:= FALSE;
				CLRSCR;
				CASE OPCIONES OF
				'1' : ENTRADA_DATOS;
				'2' : CONSULTA;
				{'3' : MODIFICAR;
				'4' : ELIMINAR_REGISTRO;
				'5' : VISUALIZAR_TODOS;}
				'6' : SALIR := TRUE;
				else
				writeln ('opcion invalida');
			END;
			UNTIL (SALIR);
			END ;
        BEGIN
			MENU;
        END.


Debes observar que en este programa se le pregunta al usuario si desea o no continuar introduciendo más encuestas (elementos para el arreglo). También debes darte cuenta de que si introduces, por ejemplo, 3 elementos y luego sales del módulo, al regresar la cuenta continuará en 4. Eso es muy importante en un programa.
Otra cosa que quería comentarte es que el código para hacer el módulo Eliminar es muy sencillo, quizás el más fácil de todos, pero debes tener cuidado con la variable que lleva la cuenta de los registros introducidos hasta el momento, hay decrementarlo en 1 cada vez que se elimine un elemento.
Te falta muy poco para terminar de hacer todo.
Saludos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)