Examen Parcial Otoño 2010 (2) (2010)

Examen Español
Universidad Universidad Politécnica de Cataluña (UPC)
Grado Ingeniería de Sistemas de Telecomunicación - 1º curso
Asignatura Fonamentos de Ordenadores
Año del apunte 2010
Páginas 3
Fecha de subida 12/11/2014
Descargas 0
Subido por

Vista previa del texto

Departamento de Arquitectura de Computadores Control 1 FO. Cuatrimestre 1A (10/11/2010) El Zoológico El zoológico de Barcelona quiere implementar una aplicación informática que le permita guardar la información de los animales que actualmente se encuentran allí. Como responsable del Departamento de Informática te han encomendado la labor de: 1) Definir los tipos de datos estructurados que consideres necesarios, para guardar la siguiente información: − Categoría taxonómica del animal (reptil, ave, mamífero, anfibio, pez ).
− Nombre común del animal (por ejemplo: tigre, león, delfín, pez espada, etc.).
Nota: Suponga que el nombre común mas largo tiene como máximo 20 caracteres.
− Fecha de ingreso del animal al zoológico.
NOTA: Suponga que el zoológico puede albergar hasta 1500 animales.
2) Suponiendo que las estructuras de datos definidas en 1) están inicializadas (no tiene que inicializarlas sino declararlas) con la siguiente información: 5 animales Animal 1. Categoría:Reptil, Nombre:Lagarto, Fecha ingreso:17/12/2008 Animal 2: Categoría:Pez, Nombre:Pez espada, Fecha ingreso:04/11/2010 Animal 3: Categoría:Mamífero, Nombre:León, Fecha ingreso:03/12/2009 Animal 4: Categoría:Ave, Nombre:Aguila, Fecha ingreso:17/12/2008 Animal 5: Categoría:Mamífero, Nombre:Gorila, Fecha ingreso:17/12/2008 Nota: Declara e inicializa otras variables que considere necesarias para implementar 2.1) y 2.2. Por ejemplo, variables de los bucles o alguna variable auxiliar.
Escribe un programa en Lenguaje C utilizando los tipos de datos definidos en 1) que permita: 2.1) Imprimir por pantalla los datos del animal (categoría, nombre y fecha de ingreso) que tiene más tiempo en el zoológico.
Considerando la inicialización anterior, el programa imprimirá los datos del animal 1, del animal 4 y del animal 5.
2.2) Imprimir los datos de todos los animales (categoría, nombre y fecha de ingreso) con categoría taxonómica “Mamífero”.
Considerando la inicialización anterior, el programa imprimirá los datos del animal 3 y del animal 5.
Nota: Hay que comparar el nombre completo de la categoría de cada animal, no solo la primera letra de la categoría (en próximas clasificaciones taxonómicas podrían incluirse categorías que empiecen también por la letra M).
Nota: Si no hay animales en el zoológico el programa debe contemplarlo e indicar que el zoológico esta vació.
1 Solución: 1) #define MCAT 9 #define MNOM 21 #define MAX 1500 typedef struct{ int dia; int mes; int anyo; }Tfecha; typedef struct{ char categoria[MCAT]; char nom[MNOM]; Tfecha ingreso; }Tanimal; typedef struct{ int numanimales; Tanimal animales[MAX]; }Tzoo; 2) void main(){ int i,j; char categoria[MCAT]="Mamifero"; Tfecha fecha; Tzoo zool = {{5},{{"Reptil","Lagarto",{17,12,2008}},{"Pez","Pez espada", {04,11,2010}},{"Mamifero","Leon",{03,12,2009}},{"Ave","Aguila", {17,12,2008}},{"Mamifero","Gorila",{17,12,2008}}}}; if (zool.numanimales == 0) { printf(“El zoologico esta vacio\n”); } else { fecha = zool.animales[0].ingreso; 2.1) for (i=1; i<zool.numanimales; i++){ if (fecha.anyo>zool.animales[i].ingreso.anyo){ fecha = zool.animales[i].ingreso; } else if(fecha.anyo == zool.animales[i].ingreso.anyo){ if (fecha.mes>zool.animales[i].ingreso.mes){ fecha = zool.animales[i].ingreso; } else if (fecha.mes == zool.animales[i].ingreso.mes){ if (fecha.dia>zool.animales[i].ingreso.dia) fecha = zool.animales[i].ingreso; } } } for(i=0; i<zool.numanimales; i++){ if ((fecha.dia == zool.animales[i].ingreso.dia)&& (fecha.mes == zool.animales[i].ingreso.mes)&& (fecha.anyo == zool.animales[i].ingreso.anyo)){ printf("%s:%s:%d/%d/%d\n",zool.animales[i].categoria, zool.animales[i].nom,zool.animales[i].ingreso.dia, zool.animales[i].ingreso.mes,zool.animales[i].ingreso.anyo); } } printf("\n"); 2 2.2) for (i=0; i<zool.numanimales; i++){ j = 0; while(((zool.animales[i].categoria[j]) == categoria[j]) && (j<=8)){ j++; } if (j>8){ printf("%s:%s:%d/%d/%d\n",zool.animales[i].categoria, zool.animales[i].nom,zool.animales[i].ingreso.dia, zool.animales[i].ingreso.mes,zool.animales[i].ingreso.anyo); } } } /*Cierra el else */ } /*Cierra el main*/ 3 ...