Está en la página 1de 2

Escuela Superior de Cómputo del Instituto Politécnico Nacional

3er Examen de Algoritmia y Programación Estructurada


Profesor: Cristhian Alejandro Ávila-Sánchez

Fecha: 28 de Noviembre del 2019

Alumno: ______________________________________________________________

Grupo: ____________ No. de Boleta: ______________________________________

Albergues de Nieve: Sitio Perimetral. Ha tenido un fantástico desempeño en el refuerzo y


resguardo de la brigada de ayuda. Usted y su escuadrón mostraron un despliegue insólito de
habilidades y se mantuvieron a la altura de las circunstancias. Aún lo requerimos para concluir
con éxito la campaña de asistencia. La Fuerza Aérea ha establecido un puente aéreo
intercontinental para evacuar a la población. Ya han partido las primeras flotillas hacia el nuevo
continente y llegado con bien, y es crucial mantener la continuidad de la operación. Su misión,
tanto para usted como para su escuadrón, será la de cuidar a los albergues y los puertos de
salida, así como la de establecer un perímetro a la redonda para protegerlos de posibles ataques
enemigos. Su conocimiento, experiencia y pericia serán necesarios para llevar a cabo esta
asignación. Alístense pilotos, una nevada se aproxima. Cuídense unos a los otros. Todos
confiamos en ustedes.

Instrucciones: Por favor lea cuidadosamente cada pregunta y resuelva 4 de los siguientes 6
problemas. Cada pregunta tiene un valor de 2.5 puntos (Total de 10 puntos). ¡Mucho éxito,
comencemos!

0. Disparos de nieve a lo lejos. Cazas infiltradores se acercan sigilosamente a los bordes del
perímetro. Desde la distancia, realizan disparos fulminantes hacia los albergues y luego se
desvanecen. Ubíquelos mediante apuntadores, deles persecución y deténgalos, antes que se
torne en una situación de aún mayor peligro. Informe los valores finales que adquieren los
apuntadores y los datos enteros. Las direcciones de las variables son: u (#A001), v (#B002),
w (#C002), x (#D003), y (#E004), z (#F005), a (#F724), b (#B39A), c (#E9A5), d (#A420), e
(#C167) y f (#DA08).

int *u= NULL, *v= NULL, *w=NULL, *x= NULL, *y= NULL, *z= NULL;
int a=2, b=3, c=5, d= 7, e= 11, f= 13;

u= &b; *u= 3; v= &c; *v+= 9; w= &e; *w-= a-f;


x= &f; *x*= 6; y= &a; *y/=2; z= &d; *z= 3;
y= u; *y= f*(*x);

1. Caminantes imperiales a la distancia. Refuerzos enemigos han arribado a la escena.


Transporte terrestre armado emerge de entre los árboles y se desplazan imponentemente
sobre la nieve. Registre su avance en un apuntador flotante float *avance, el cual funcione
como un arreglo dinámico. Para poder usar apropiadamente el arreglo, codifique las funciones
float *crearArregloDinamico(int N); y destruirArregloDinamico(float *arr);.
Para derrumbar a los caminantes, dispare un arpón sujetado a un cable y enrédelo dando M
vueltas alrededor de ellos: codifique una función que ordene descendentemente el arreglo y
que en M ciclos vaya decrementando en 1 el valor de sus celdas.
2. Avalancha de fuego. El enemigo ha traído consigo artillería pesada. Un nuevo transporte
armado, denominado devastador, realiza disparos de alta potencia contra los generadores de
energía. Es vital el neutralizarlo. Construya a) una matriz cuadrada float **𝐴 de proyectiles,
cuyas celdas indican la intensidad de la detonación, b) una matriz cuadrada float **𝐵 de puntos
de impacto y c) realice el producto de matrices float **𝐶 = 𝐴𝐵 para lanzar los proyectiles contra
el devastador y abatirlo.

3. Demasiado tarde, cazas interceptores han aprovechado la distracción e ingresado con rapidez
al perímetro, causando estragos tras su paso. Invoque la función recursiva que se muestra a
continuación con los valores nivel= 0, nodo= 0, base= 3 y limite= 4 (conteo es un apuntador
que funciona como un parámetro por referencia, asuma que la variable a la que apunta tiene
el valor de 0). Vuele a toda velocidad para alcanzarlos y derribarlos, desplegando la salida de
la función.

void volar(int nivel, int nodo, int limite, int base, int *conteo)
{
int k=0;

if (nivel>=limite)
{derribar(); return;}

(*conteo)++;
printf("nivel= %d, nodo= %d\n", nivel, nodo);

for (k=0; k<base; k++)


volar(nivel+1, base*nodo+k, limite, base, conteo);
}

4. Los destructores se alzan sobre los escombros y lanzan una última ofensiva contra los puertos.
Es una situación complicada que pone en peligro la evacuación. Retome un pasaje de la
lectura del libro “Gödel Escher y Bach: Un Eterno y Grácil Bucle” para idear una estrategia
para vencerlos y codifíquela en un programa.

5. Los destructores han caído. Considere la estructura de datos Codigo, codifique dos funciones
que escriban y lean el contenido de la estructura en un archivo. Notifique a la Fuerza Aérea
que la situación se encuentra fuera de peligro.

typedef struct codigo


{
char *glifos;
int N;
} t_codigo, *Codigo;

6. Felicitaciones, pilotos! Lo han logrado! Los albergues y puertos se encuentran seguros y la


evacuación podrá continuar. Durante toda la campaña han mostrado su valor y arrojo. Su
esfuerzo dará frutos! Al terminar la campaña podremos celebrar! Siéntanse orgullosos y
satisfechos del trabajo realizado. Le deseamos un futuro prometedor en su formación de
pilotos!

También podría gustarte