Está en la página 1de 6

Ingeniera en Informtica Sede Arica Docente: Cristian Tancara Q. Ing.

en Informtica

DESARROLLO EVALUACION - ESTRUCTURA DE DATOS 1 Prueba Semestre OTOO 2013


NOMBRE: ___________________________________________________________ FECHA: PUNTAJE IDEAL:

25/04/2013
PONDERACIN:

73

PUNTAJE OBTENIDO: ____________

NOTA: ___________

15%

PROGRAMA DE ESTUDIOS:_________________________________________ SECCION: ______________________

Aprendizaje/s Esperado/s a evaluar:


1. 2. 3. Reconoce la sintaxis de las instrucciones que utiliza el lenguaje de programacin C. Reconoce las estructuras de datos, la forma y su aplicacin. Aplica la apertura, manipulacin y cierre de un archivo, ya sea de texto o binario, a travs de un ejercicio prctico

Perteneciente a la Unidad N Unidad I

Instrucciones: Conteste lo enunciado en cada pregunta. NO se acepta enmienda, por lo tanto, lea bien antes de contestar. Responda con lapicera, si lo hace con lpiz grafito NO tendr derecho a reclamo si considera una pregunta mal corregida. La evaluacin tiene una exigencia de un 60% para el 4.0. Utilice slo las hojas entregadas.

ITEM

I: PREGUNTAS DE DESARROLLO (Total 43 puntos) MANEJO DE ESTRUCTURAS Y PUNTEROS.

Parte A: (28 puntos)


Estructura FIGURA: nombre de tipo cadena de caracteres de largo 10. permetro de tipo long. area de tipo float. Estructura CUADRADO: lado de tipo int. info de tipo FIGURA. Dada las estructuras de arriba, se pide lo siguiente: a. Defina estas estructuras en C. (2 puntos) struct FIGURA { // 1 punto char nombre[10]; long perimetro; float area; }; b. struct CUADRADO { // 1 punto int lado; struct FIGURA info; };

Declare una nueva estructura TRIANGULO con tres atributos, el primero llamado altura de tipo int, el segundo llamado base de tipo int y el tercero llamado info de tipo puntero a FIGURA. (3 puntos) struct TRIANGULO { int altura; int base; struct FIGURA *info; // 3 punto };

Ingeniera en Informtica Sede Arica Docente: Cristian Tancara Q. Ing. en Informtica

c.

Declare una variable llamada v_f de tipo FIGURA. (1 punto) struct FIGURA v_f;

d.

Declare una variable llamada v_c de tipo CUADRADO. (1 punto) struct CUADRADO v_c;

e.

Declare una variable llamada v_t de tipo TRIANGULO. (1 punto) struct TRIANGULO v_t;

f.

Declare una variable llamada p_f de tipo puntero a FIGURA. (1 punto) struct FIGURA *p_f;

g.

Declare una variable llamada p_c de tipo puntero a CUADRADO. (1 punto) struct CUADRADO *p_c;

h.

Declare una variable llamada p_t de tipo puntero a TRIANGULO. (1 puntos) struct TRIANGULO *p_t;

i.

Inicialice la variable p_f con la direccin del atributo info de la variable v_c. ( 1 punto) p_f = &v_c.info;

j.

Inicialice el atributo info de la variable v_t con la direccin de la variable v_f. ( 1 punto) v_t.info = &v_f;

k.

Utilizando la variable v_c, asigne el valor 5 al atributo lado, la palabra cuadrado al atributo nombre correspondiente del atributo info, y adems calcule el rea y permetro y asgnelos en los atributos correspondientes tambin del atributo info. (7 puntos) Las frmulas para el clculo del rea y permetro del cuadrado son las siguientes: area = lado * lado permetro = 4 * lado v_c.lado = 5; // 1 pto strcpy(v_c.info.nombre,"cuadrado"); //2 ptos. v_c.info.perimetro = 4*v_c.lado; // 2 ptos. v_c.info.area = v_c.lado*v_c.lado; // 2 ptos.

l.

Utilizando la variable puntero p_t, asigne el valor 3 al atributo base y el valor 2 al atributo altura, la palabra triangulo al atributo nombre correspondiente del atributo info, y adems calcule el rea y permetro y asgnelos en los atributos correspondientes tambin del atributo info. (8 puntos) Las frmulas para el clculo del rea y permetro del tringulo son las siguientes: area = ( base * altura ) / 2 permetro = 3 * base p_t = &v_t; p_t->base = 3; // 1 pto. p_t->altura = 2; // 1 pto. strcpy(p_t->info->nombre, "triangulo"); // 2 ptos. p_t->info->perimetro = 3*p_t->base; // 2 ptos. p_t->info->area = (p_t->base*p_t->altura)/2; // 2 ptos.

Ingeniera en Informtica Sede Arica Docente: Cristian Tancara Q. Ing. en Informtica

Parte B: (15 puntos)


Trabajo con punteros, rellene los cuadros en blanco de la tabla con el valor resultante de la operacin algortmica con punteros. Finalmente realice un grafico representativo en memoria como los vistos en clases con la situacin final de los punteros.

int A = 2; int B = 6; int C = 3; int *P1, *P2; P1 = &A; P2 = &C; *P1=*P2*2; B -= (*P2)++; P2 = &B; P1 = &C; *P2*=*P1; A = *P1+*P2; C *= (*P2)--;

A 2

B 6

P1

P2

&A &C 6 3 4 &B &C 12 16 11 48

Ingeniera en Informtica Sede Arica Docente: Cristian Tancara Q. Ing. en Informtica

ITEM

II: PREGUNTAS DE DESARROLLO (Total 30 puntos) MANEJO DE ARCHIVOS


Debido al trmino del campeonato de futbol Copa INACAP, se le ha encomendado a Ud. realizar un programa para generar la tabla de resultados final del campeonato. Para ello, INACAP desea generar un archivo de salida llamado tabla.dat en el cual se registren los resultados obtenidos por cada equipo que participo en el campeonato. La informacin de los equipos participantes se encuentra en un archivo llamado equipos.dat y la informacin respecto de los resultados de cada uno de los partidos realizados por los equipos se encuentra en otro archivo de nombre resultados.dat. La estructura de los archivos es la siguiente: a. equipos.dat codigo de tipo entero (correspondiente al cdigo del equipo) nombre de tipo cadena de caracteres de largo 30 (correspondiente al nombre del equipo) El formato en el que se encuentra almacenada la informacin es: 2 nmeros y 20 caracteres. b. resultados.dat codigo de tipo entero (correspondiente al cdigo del equipo que jugo) resultado de tipo entero (correspondiente al resultado del partido: 0 = empate, 1 = gano , 2 = perdi) golesfavor de tipo entero (correspondiente a los goles realizados por el equipo). golescontra de tipo entero (correspondiente a los goles realizados por el equipo contrario).

El formato en el que se encuentra almacenada la informacin es: 2 nmeros, 1 nmero, 1 nmero y 1 numero. (Se considera que la mxima cantidad de goles que se pueden realizar en un partido es de 9). tabla.dat - codigo de tipo entero (correspondiente al cdigo del equipo) - nombre de tipo cadena de caracteres de largo 30 (correspondiente al nombre del equipo) - puntos de tipo entero (correspondiente a la cantidad de puntos totales obtenidos) - totalafavor de tipo entero (correspondiente a la cantidad total de goles realizados) - totalencontra de tipo entero (correspondiente a la cantidad total de goles recibidos) El formato en el que se deber almacenar la informacin es: 2 nmeros, 20 caracteres, 3 nmeros, 3 nmeros y 3 nmeros. Observaciones: 1) Para calcular la cantidad de puntos obtenidos de un equipo por partido se cuenta con la siguiente informacin: Si el equipo empato, obtiene 1 punto Si el equipo gano, obtiene 3 puntos. Si el equipo perdi, no obtiene ningn punto. Considere adems que si un equipo no participo en ningn partido, entonces no debe registrarse en el archivo de salida tabla.dat. 2) Toda la informacin leda de los archivos deber ser almacenada en las estructuras de datos correspondientes. 3) Se pide disear el programa completo en lenguaje C/C++. c.

Ingeniera en Informtica Sede Arica Docente: Cristian Tancara Q. Ing. en Informtica

// Programa Copa de Futbol INACAP #include <stdio.h> #include <stdlib.h> #include <string.h> struct equipos { int codigo; char nombre[30]; }; struct int int int int }; resultados { codigo; resultado; golesfavor; golescontra;

struct tabla { int codigo; char nombre[30]; int puntos; int totalafavor; int totalencontra; }; void main(){ FILE *aequipos,*aresultado,*atabla; struct equipos e; struct resultados r; struct tabla t; bool participo; aequipos = fopen("equipos.dat","r"); if (aequipos == NULL ){ printf("Error al abrir el archivo equipos.dat"); exit(0); } atabla = fopen("tabla.dat","w"); if (atabla == NULL ){ printf("Error al crear el archivo tabla.dat"); exit(0); } while (fscanf(aequipos,"%2d%20s",e.codigo,e.nombre)!= EOF){ aresultado = fopen("resultados.dat","r"); if ( aresultado == NULL ){ printf("Error al abrir el archivo resultados.dat"); exit(0); } strcpy(t.nombre, e.nombre); t.codigo = e.codigo; t.puntos = 0; t.totalafavor = 0; t.totalencontra = 0;

Ingeniera en Informtica Sede Arica Docente: Cristian Tancara Q. Ing. en Informtica

participo = false; while (fscanf(aresultado,"%2d%1d%1d%1d",r.codigo,r.resultado, r.golesfavor,r.golescontra) != EOF){ if ( r.codigo == e.codigo ) { participo = true; if ( r.resultado == 0 ) t.puntos = t.puntos + 1; else if ( r.resultado == 1 ) t.puntos = t.puntos + 3; t.totalafavor += r.golesfavor; t.totalencontra += r.golescontra; }; }; fclose(aresultado); if ( participo == true ) fprintf(atabla,"%2d%20s%3d%3d%3d",t.codigo,t.nombre,t.puntos, t.totalafavor,t.totalencontra); }; fclose(aequipos); fclose(atabla); }

También podría gustarte