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: ______________________________________

Campos de Hielo: Recibimiento Glacial. 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. Las primeras flotillas provenientes del continente en
conflicto han llegado con bien, y es de suma importancia asegurar la continuidad de la operación.
Su misión, tanto para usted como para su escuadrón, será la de asistir en la recepción y
desembarco de las flotillas en los puertos, 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, un viento gélido sopla en el aire.
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. Viento gélido. Las turbinas de los destructores resuenan fatídicas a la distancia, estremeciendo
la atmósfera. Cazas interceptores irrumpen intempestivamente el desembarco, causando
caos y destrucción tras su paso. Es necesario frenar su ataque urgentemente. Ubíquelos
mediante apuntadores, persígalos y deténgalos a toda costa antes de que esta oleada escale.
Comunique 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= &c; *u= 2; v= &b; *v+= 7; w= &f; *w-= e + c;


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

1. El enemigo ha puesto un pie firmemente en la costa. Caminantes imperiales avanzan


imparablemente, dejando huellas de fuego y cenizas tras su paso. 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 void 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 desordene aleatoriamente al arreglo y que en M ciclos vaya incrementando
en 1 el valor de sus celdas.
2. Alud ártico. Como grandes témpanos de hielo flotando en las aguas heladas, una batería de
devastadores se avecina y dispara proyectiles de máxima potencia contra los puertos de
desembarque. Reducirlos a fragmentos será complicado. 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 cada devastador y abatirlos.

3. Cazas infiltradores se deslizan a toda velocidad sobre las aguas e ingresan al perímetro,
volando casi al ras de suelo entre el laberinto de construcciones y refugios. 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 el desembarco. 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 y 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 hace
unos momentos ha desembarcado la última flota del puente aéreo. Durante toda la campaña
han mostrado su valor y arrojo. Su esfuerzo dará frutos! La campaña ha concluido. Después
de un periodo de reconstrucción, 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