PROGRAM ANIMAL_PROY;
CONST
MAXIMO=20;
ANIMALES=MAXIMO;
CARACTERISTICAS=MAXIMO;
TYPE
MAXANIMALES=0..ANIMALES;
MAXCARACTERISTICAS=0..CARACTERISTICAS;
CONJCARACTERISTICAS=SET OF MAXCARACTERISTICAS;
CONJANIMALES=SET OF MAXANIMALES;
NOMBREANIMALS=STRING;
DESCRCARACTERIS=STRING;
NOMBREANIMAL=PACKED ARRAY [1..20] OF CHAR;
DESCRCARACTERISTIC=PACKED ARRAY [1..30] OF CHAR;
ANIMALRE=RECORD
NUMREG:MAXANIMALES;
NOMBRE:NOMBREANIMALS;
CARACTS:CONJCARACTERISTICAS
END;
CARACTERISTICARE=RECORD
NUMREG:MAXCARACTERISTICAS;
DESCR:DESCRCARACTERIS;
ANIMALES:CONJANIMALES;
END;
ANIMALAR=RECORD
NUMREG:MAXANIMALES;
NOMBRE:NOMBREANIMAL;
CARACTS:CONJCARACTERISTICAS
END;
CARACTERISTICAAR=RECORD
NUMREG:MAXCARACTERISTICAS;
DESCR:DESCRCARACTERISTIC;
ANIMALES:CONJANIMALES;
END;
ARANIMALES=ARRAY [MAXANIMALES] OF ANIMALRE;
ARCARACTERISTICAS=ARRAY [MAXCARACTERISTICAS] OF CARACTERISTICARE;
RESPUESTA=String;
VAR
ANIMALIN:ARANIMALES;
CARACTERISTIN:ARCARACTERISTICAS;
CONT1,CONT2:INTEGER;
RES:RESPUESTA;
CAR:CONJCARACTERISTICAS;
CON:CONJANIMALES;
ENCONTRADO:BOOLEAN;
NOMB:NOMBREANIMALS;
INT:STRING;
FUNCTION YANOJUEGO:BOOLEAN;
BEGIN
WRITELN;
WRITELN;
WRITELN('QUIERES QUE TE ADIVINE OTRO ANIMAL? (SI/NO)');
READLN(RES);
WRITELN;
IF (RES='SI')OR(RES='S') THEN
YANOJUEGO:=FALSE
ELSE
YANOJUEGO:=TRUE;
WRITELN
END;
PROCEDURE TRANSMIN(VAR PALABRA:STRING);
VAR
LONGITUD,I:INTEGER;
BEGIN
LONGITUD:=Length (PALABRA);
FOR I:= 1 TO LONGITUD DO
IF (PALABRA[I]>='a')AND(PALABRA[I]<='z') THEN
PALABRA[I]:=CHR(ORD(PALABRA[I])-ORD('a')+ORD('A'))
END;
FUNCTION NUMCAR(ARCAR:ARCARACTERISTICAS):INTEGER;
VAR
CONT:INTEGER;
BEGIN
CONT:=1;
WHILE (CONT<=CARACTERISTICAS)AND(ARCAR[CONT].NUMREG<>0) DO
CONT:=SUCC(CONT);
NUMCAR:=PRED(CONT)
END;
FUNCTION NUMANI(ARANI:ARANIMALES):INTEGER;
VAR
CONT:INTEGER;
BEGIN
CONT:=1;
WHILE (CONT<=ANIMALES)AND(ARANI[CONT].NUMREG<>0) DO
CONT:=SUCC(CONT);
NUMANI:=PRED(CONT)
END;
PROCEDURE AGRANI(NOM:NOMBREANIMALS;CAR:CONJCARACTERISTICAS);
BEGIN
IF (NUMANI(ANIMALIN)+1<=ANIMALES) THEN
BEGIN
ANIMALIN[NUMANI(ANIMALIN)+1].NUMREG:=NUMANI(ANIMALIN)+1;
ANIMALIN[NUMANI(ANIMALIN)].NOMBRE:=NOM;
ANIMALIN[NUMANI(ANIMALIN)].CARACTS:=CAR;
END;
END;
BEGIN
FOR CONT1:= 1 TO ANIMALES DO
ANIMALIN[CONT1].NUMREG:=0;
FOR CONT1:= 1 TO CARACTERISTICAS DO
CARACTERISTIN[CONT1].NUMREG:=0;
REPEAT
WRITELN('PIENSA EN EL NOMBRE DE UN ANIMAL...');
CAR:=[];
INT:='';
ENCONTRADO:=FALSE;
CONT1:=1;
WHILE (CONT1<=NUMCAR(CARACTERISTIN))AND(NOT(ENCONTRADO)) DO
BEGIN
WRITE('EL ANIMAL ',CARACTERISTIN[CONT1].DESCR,'?');
READLN(RES);
IF (RES='SI')OR(RES='S') THEN
BEGIN
CAR:=CAR+[CONT1];
CON:=[NUMANI(ANIMALIN)+1];
CARACTERISTIN[CONT1].ANIMALES:=CARACTERISTIN[CONT1].ANIMALES+CON;
FOR CONT2:= 1 TO NUMANI(ANIMALIN) DO
IF CAR=ANIMALIN[CONT2].CARACTS THEN
BEGIN
WRITE('EL ANIMAL QUE PENSASTE ES UN(A)',ANIMALIN[CONT2].NOMBRE,'?');
READLN(RES);
IF (RES='SI')OR(RES='S') THEN
ENCONTRADO:=TRUE
ELSE
INT:=(' DEL (DE LA) '+ANIMALIN[CONT2].NOMBRE)
END;
END;
CONT1:=SUCC(CONT1);
END;
IF NOT(ENCONTRADO)AND(NUMANI(ANIMALIN)               ( geocities.com/v.iniestra/apuntes)                   ( geocities.com/v.iniestra)