[ Foro de Pascal ]
A ver si me podeis ayudar con la funcion, creo la parte const y type esta bien definida aunque dudo en el limite del array.... En la funcion se que esta mal, pero a ver si partiendo de esa base y con vuestra ayuda me sale .Muchas gracias.
(*EJERCICIO EXAMEN 2011-2012
Diseñe y codifique las estructuras de datos necesarias para mantener la información
sobre las personas pertenecientes a una red social, teniendo en cuenta que para cada
una de ellas se precisa conocer su nombre, fecha de nacimiento, sexo (H, M) y la lista
de sus amigos (como máximo 150, límite cognitivo de relaciones estables que una
persona puede mantener según el antropólogo británico R. Dunbar). Para cada uno de
estos amigos se almacenará información sobre su nombre, sexo y el grupo al que
pertenece (familia, trabajo, íntimo, otros).
Además de las estructuras de datos mencionadas, codifique también la función
BuscarAmigos (persona:tpersona;fragmento:tcadena):tlistamigos que a partir de
una persona y un nombre (o parte de un nombre) busca los amigos de sexo opuesto al
de esa persona con nombres similares. Por ejemplo, si se buscan los amigos de ?Paula
Mendez? cuyo nombre sea similar a ?Man? se seleccionarían los amigos con nombres
?Armando Perez?, ?Manuel Lopez? o ?Roberto Manteca? pero no ?Amanda Diaz? (sexo M).
En la estructura de datos de tipo tlistamigos la función debe devolver tanto el número
de amigos encontrados como el propio array con los datos de dichos amigos.*)
PROGRAM basico(input,output);
CONST
maximoamigos=150;
type
tcadena=string(30);
tnombre=string(30);
tgrupo=(familia,trabajo,intimo,otros);
tfecha=record
dia:1..31;
mes:1..12;
anho:1900..2015;
end;
tlistamigos= record
nombre:tnombre;
sexo:char;
grupo:tgrupo;
end;
tpersona=record
nombre:tnombre;
fecha_nac:tfecha;
sexo:char;
listadeamigos:array[1..maximoamigos] of tlistamigos;
end;
var
persona:tpersona;
fragmento:tcadena;
(******************************************************************)
FUNCTION BuscarAmigos(persona:tpersona;fragmento:tcadena):tlistadeamigos;
VAR aux:tlistadeamigos;i:;
BEGIN integer
writeln('Inserte la persona de la que quiere buscar amigos');
readln(persona.nombre);
writeln('Inserte el fragmento que desea buscar');
readln(fragmento);
FOR i:=1 To maximoamigos DO
begin
IF fragmento IN (persona.listadeamigos[i].nombre) AND
(persona.sexo<>persona.listadeamigos[i].sexo) then
persona.listadeamigos[i].nombre:=aux;
end;
BuscarAmigos:=Aux;
end;
(******************************************************************)
begin
end.
tlistadeamigos lo quitaria del record y lo pondria fuera de este, y en su lugar amigos de tlistadeamigos
Revisa si tienes a tu disposición alguna función o procedimiento predefinido para el manejo de cadenas. En Turbo Pascal tienes la función pos(subcadena:string, cadena:string) : byte; la cual te devuelve la posición en la que se encuentra subcadena en cadena, si no la encuentra devolverá cero.
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.)