Ver Mensaje Individual
  #3  
Antiguo 15-11-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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;
  // ciclo principal
  while i <= MAXPERS do
  begin
    // inicializacion
    Cantidad := 0;
    Promedio := 0;
    CorteMin := Persona[i];
    CorteMax := Persona[i];

    // corte de control por ocupacion
    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;

    // resultados
    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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 17-11-2015 a las 11:51:27. Razón: sintáxis
Responder Con Cita