[ Foro de Pascal ]
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
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.
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];
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.)