Examen Parcial Otoño 2010 (5) (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

UNIVERSIT,H POLlTECNICA DE CATALUNYA Departament d' Arquitectura de Computadors Fonaments d'Ordinadors (FO) Control de Laboratori del Grup 71 Dilluns, 22 de novembre de 2010 Instruccions • La durada de l'examen és de 50 minuts + 5 minuts pellliurament a l' ATENEA.
• La prova és individual. No es pot connectar a Internet ni consultar cap company.
• Heu d'entrar al sistema amb el compte local "invitado/invitado" i esborrar tots els fitxers creats abans de tancar la sessió.
• Heu d'editar el fitxer control-71.c que us proporcionara el professor, tot indicant el vostre nom, cognoms i grupo Exercici 1: Volem escriure un programa que mostri contínuament un menú per pantalla fins que un usuari esculll'opció 4 (Sortir). Completi el codi proporcionat de manera que el programa compili i s' executi correctament.
int menu(){ int op; printf("Menu:\n\t1) Llegir i mostrar una variable binaria\n\t2) Negar una variable\n\t3) XOR de dues variables\n\t4) Sortir\n Tria una opctoxn''): scanf("%d%*c",/* Completar */); return /* Completar } =r, ~ ~op int main(){ \\\\: /* Completar * / opcio; do{ /* Completar */==menu(); switch (/* Completar * /){ case 1: printf("Ha triat I'opcio 1\n"); break; case 2: printf("Ha triat I'opcio 2\n"); break; case 3: printf("Ha triat I'opcio 3\n"); break; case 4: printf(/ * Completar * /); break; default: printf(/* Completar */); break; } } while (/ * Completar * /); return O; ).
Exercici 2: D'acord amb el tipus de dades següent: #define MAX_BITS 8 typedef struct{ char bits[MAX_BITS]; /*Vector amb els bits de la variable*/ } tvarjim: UNIVERSITAT POLI TÉCNICA DE. CATAI..UNYA Departament d' Arquitectura de Computadors Implementi l'opció 1 del menú. El programa ha de demanar a l'usuari que introdueixi una seqüencia de bits utilitzant la funció ja implementada void lIegir_bits(tvar_bin *v). A continuació, s'ha de mostrar per pantalla la seqüencia de bits tot implementant void mostrar_bits(tvar_bin v).
Exemples d'execució: Introdueix els 8 bits de la variable: 11110000 Els 8 bits de la variable son: 11110000 Introdueix els 8 bits de la variable: 01010101 Els 8 bits de la variable son: 01010101 Exercici 3: Implementi l' opció 2 del menú. Aquesta opció ha de demanar una variable en binari, calcular el seu negat i finalment mostrar el resultat per pantalla. Per negar una variable, s'ha d'implementar la funció void negar_bits(tvar_bin *v) que s'ha d'encarregar de canviar el valor dels bits de la variable v (recordeu que el negat de 1 és 0, i el de és 1). El resultat calculat sera retornat a través del parametre v.
° Exemples d'execució: Introdueix els 8 bits de la variable: 11110000 El resultat de negar la variable es: 00001111 Introdueix els 8 bits de la variable: 01010101 El resultat de negar la variable es: 10101010 Exercici 4: A continuació s'ha d'implementar l'opció 3 del menú. Volem calcular una XOR de dues variables bináries, Donades dues variables bináries a i b amb N bits ao, al, ..., aN-¡iba, b., ..., bN-1, es defineix la XOR a®b com la variable binaria amb N bits ao®bo, al®b¡, ..., aN¡®bN-1• Recordeu que la XOR de dos bits iguals és sempre O, mentre que la XOR de dos bits diferents és sempre 1.
Per tal de calcular la XOR, el programa ha de dernanar a l'usuari que especifiqui dues variables binaries (utilitzant void lIegir_bits(tvar_bin *v)). A continuació s'ha de calcular la XOR d'aquestes variables, implementant la funció tvar_bin xor_bits(tvar_bin a, tvar_bin b). Finalment, s'ha de mostrar la variable resultant tot utilitzant la funció void mostrar_bits(tvar_bin v) que ja s'ha implementat anteriorment.
Exemples Introdueix Introdueix El resultat d'execució: els 8 bits de la variable: 00001111 els 8 bits de la variable: 01010101 de fer XOR amb les variables es: 01011010 Introdueix els 8 bits de la variable: 01010101 Introdueix els 8 bits de la variable: 10101010 El resultat de fer XOR amb les variables es: 11111111 Fonaments d'Ordinadors Control de laboratorio Grupo 53 16 de noviembre de 2010 Dada la siguiente definición de tipos de datos y prototipos de funciones: #define MAX_ASIG 10 #define MAX_ALUMNOS 40 #define MAX_NOM 40 typedef struct { int dni; char letra; } tnif; typedef struct { char nombre[MAX_NOM]; tnif nif; float nota; int num_faltas; } talumno; void inicializar_escuela(talumno g[MAX_ALUMNOS][MAX_ASIG]); float nota_media_asignatura(talumno g[MAX_ALUMNOS][MAX_ASIG], int asig); int num_faltas_alumno(talumno g[MAX_ALUMNOS][MAX_ASIG], tnif nif); Se pide escribir un programa en C que inicialice la escuela, lea de teclado un código de asignatura (número entre 0 y MAX_ASIG - 1) y muestre por pantalla la nota media de la asignatura. Después, que lea de teclado un nif de alumno y muestre por pantalla el número de faltas de ese alumno. Se puede suponer que el usuario introduce todos los datos correctamente.
Para la implementación se debe seguir los siguientes pasos: a) Editar el fichero control.c que os he copiado b) Escribir, compilar y verificar la función: float nota_media_asignatura(talumno g[MAX_ALUMNOS][MAX_ASIG], int asig); Que calcula la nota media de la asignatura a partir de los datos que hay en la matriz de alumnos y asignaturas. Se sabe que hay un alumno en una posición de la matriz porque el campo dni de la estructura tnif es distinto de -1. Si no hay alumnos matriculados, la nota media es 0.0.
c) Escribir, compilar y verificar la función: int num_faltas_alumno(talumno g[MAX_ALUMNOS][MAX_ASIG], tnif nif); Que calcula el número de faltas del alumno que se pasa como parámetro. Si el alumno no existe, el número de faltas es 0.
d) Escribir, compilar y verificar un programa principal que realice lo especificado anteriormente.
Ejemplos de ejecución Entrada 1 Introduce un código de asignatura: 3 La nota media de la asignatura 3 es 5.0 Introduce un nif de alumno (num-dni): 11111111-A El número de faltas del alumno 11111111-A es 8.
...