[ Foro de Pascal ]

Problema registros

02-Jan-2015 02:02
Alberto Rilo Mosteiro
3 Respuestas

Tengo definido esto


CONST
  maxtrabajadores=5;
  TYPE
   tnombre=string(15);
   tedad=10..80;
   templeado=record
              nombre:tnombre  VALUE pepe;
              edad:tedad VALUE 18;
              salario:real VALUE 600.55;
              
             end;
 tempresa=[1..maxtrabajadores] of templeado;

VAR
 a:tempresa;


Ahora la duda es la siguiente, como hago una funcion que me diga cual es el empleado mas joven y que al mismo tiempo me devuelva su edad ???

Yo tenia algo como esto


 FUNCTION MostrarJoven( protected var a:tempresa):templeado;
 var t:templeado;
begin
 t.edad:=a[1];
For i:=2 TO maxtrabajadores do begin
 with a[i] do begin 
 if(t.edad<a[i+1]) then 
 t.edad:=a[i+1];
end;
end;
MostrarJoven:=t.edad;


y aqui habria que hacer algun writeln


02-Jan-2015 02:04
Alberto Rilo Mosteiro

Enunciado
Realizar un programa gestionado por menú que le permita al usuario elegir :
? S Salir del programa.
? I Insertar edad para cada empleado desde el teclado.
? M Mostrar la edad del empleado más joven de la empresa.
Debe definirse y utilizarse una estructura de datos en la que puedan almacenarse el
nombre, edad y salario de los cinco empleados de una empresa. En la declaración la
variable de dicho tipo debe inicializarse con los siguientes valores por defecto para
todos los empleados: nombre?PEPE; edad ?18; salario?600.55

Función que devuelva la edad del empleado
menor y procedimeinto para insertar el usuario la edad de cada empleado.


02-Jan-2015 11:37
Nacho Cabanes (+84)

Tienes varios errores de concepto:

- Si vas a mostrar resultados, no es necesario que devuelvas nada, y viceversa (si vas a devolver, no muestres nada desde la función, y que sea el cuerpo del programa el que lo haga).

- Estás comparando edades con "records" completos: t.edad<a[i+1], cuando deberías comparar edades con edades: t.edad<a[i+1].edad

- De igual modo, intentas devolver un registro a partir sólo de una parte de él: MostrarJoven:=t.edad;, cuando debería ser MostrarJoven:=t;

- Y almacenas sólo la edad, de modo que pierdes todos los demás detalles: t.edad:=a[i+1]; (que al menos debería ser t.edad:=a[i+1].edad;, o no compilará correctamente), pero sería mucho más razonable guardar todos los datos de la persona que has encontrado: t:=a[i+1];


03-Jan-2015 11:29
Alberto Rilo Mosteiro

Perfecto pero me aparecia ya un error en la primera linea al asignar t.edad a un registro completo como era a[1], asigne t:=a[1] y de momento por lo menos compila.






(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.)