Hola
Algunos autores hablaban de segmentación de datos en alusión a los cortes de control, tal vez se refiera a eso...
El corte de control es un modo jerárquico de mostrar la información, los registros deberán estar agrupados por uno o mas campos que a su vez podrían estar ordenados. Tendras tantos niveles como cortes de control establezcas, todos ellos contenidos dentro de un ciclo general que recorre la totalidad de los registros.
Si estuvieras trabajando sobre archivos, habría sido necesaria la lectura previa y controlar el fin de archivo en las declaraciones
while.
Un ejemplo simple de corte de control de un nivel:
Código Delphi
[-]
program Project2; {$APPTYPE CONSOLE}
uses
SysUtils;
const
MAXPERS = 11;
type
TPersona = packed record
Nomb : string[30];
Edad : Integer;
Ocup : string[20];
end;
TPersonaArray = array[1..MAXPERS] of TPersona;
var
Persona: TPersonaArray = (
(Nomb : 'Ana' ; Edad : 32; Ocup : 'Administrativo'),
(Nomb : 'Javier' ; Edad : 27; Ocup : 'Administrativo'),
(Nomb : 'Juan' ; Edad : 40; Ocup : 'Arquitecto'),
(Nomb : 'Pedro' ; Edad : 30; Ocup : 'Arquitecto'),
(Nomb : 'Ramon' ; Edad : 22; Ocup : 'Arquitecto'),
(Nomb : 'Marcos' ; Edad : 30; Ocup : 'Carpintero'),
(Nomb : 'Maria' ; Edad : 45; Ocup : 'Carpintero'),
(Nomb : 'Sonia' ; Edad : 44; Ocup : 'Carpintero'),
(Nomb : 'Andres' ; Edad : 32; Ocup : 'Plomero'),
(Nomb : 'Rene' ; Edad : 28; Ocup : 'Plomero'),
(Nomb : 'Saul' ; Edad : 36; Ocup : 'Pintor')
);
Cantidad, i : Integer;
CorteMin, CorteMax : TPersona;
Promedio: Double;
begin
i := 1;
while i <= MAXPERS do
begin
Cantidad := 0;
Promedio := 0;
CorteMin := Persona[i];
CorteMax := Persona[i];
while CorteMin.Ocup = Persona[i].Ocup do
begin
if Persona[i].Edad < CorteMin.Edad then CorteMin := Persona[i];
if Persona[i].Edad > CorteMax.Edad then CorteMax := Persona[i];
Inc(Cantidad);
Promedio := Promedio + Persona[i].Edad;
Inc(i);
end;
Writeln(CorteMin.Ocup, ': ', Cantidad);
Writeln(CorteMin.Ocup, ' mas joven, ', CorteMin.Nomb, ' : ', CorteMin.Edad);
Writeln(CorteMax.Ocup, ' mas viejo, ', CorteMax.Nomb, ' : ', CorteMax.Edad);
Writeln('Edad promedio: ',Promedio/Cantidad:8:2);
Writeln;
end;
readln;
end.
Si esto no es sobre lo que consultas, como bien te aconsejó
mamcx, acompaña la pregunta con una breve descripción del problema (o al menos el resultado que esperas obtener a partir de determinados datos).
Saludos