Está en la página 1de 3

Universidad Nacional de Ingeniería

Facultad de Ciencias
Escuela Profesional de Ciencia de la Computación
Introducción a la Programación

Examen Sustitutorio
BIC01 Ciclo: 2018-2 Fecha: 22/12/2018
Normas:
1. El alumno entregará esta hoja de examen debidamente llenada con sus datos.
2. Tiempo de prueba: 1:45
3. No se permite: El uso de celulares, internet, USB, ingresar después de 15 min. de iniciado el
examen ni salir antes de la hora de finalización.
4. Todo acto anti-ético será amonestado y registrado en el historial del estudiante.

Apellidos: ______________________________ Nombres: _______________________________


Sección: ______ Grupo: ______

1. [5 ptos.] El puzle de "las Torres de Hanói" consiste en hacer pasar todo los discos, que inicialmente
están en la primera torre, a la tercera, usando la segunda como pivote tal como se muestra en la
figura. Las reglas son:
 Solamente puede moverse el disco superior de una torre (el que está encima de todo)
 No podemos poner un disco sobre otro de menor tamaño

Lo que se pide es una función recursiva que escriba los movimientos a realizar para resolver un
puzle para un número de discos ingresados por el usuario.
#include<iostream>
#include<stdlib.h>
using namespace std;

void TorresHanoi(int num_Discos, char Origen, char Destino, char Pivote);

int main() {
int n;
char A, B, C;
cout << " Torres de Hanoi " << endl << endl;
cout << "El juego consite en un conjunto de discos y tres bases: " << endl;
cout << "A : Origen " << endl;
cout << "B : Pivote " << endl;
cout << "C : Destino" << endl << endl;
cout << "El objetivo consiste en pasar los discos de A hacia C" << endl;
cout << "Usando B como pivote " << endl << endl;
cout << "Ingrese el numero de discos: ";
cin >> n; cout << endl;
TorresHanoi(n, 'A', 'C', 'B');
system("pause");
return 0;
}

void TorresHanoi(int num_Discos, char Origen, char Destino, char Pivote) {


if (num_Discos == 1) {
cout << "Mueva el disco " << num_Discos << " de: " << Origen << " hacia " << Destino
<< endl;
}
else {
TorresHanoi(num_Discos - 1, Origen, Pivote, Destino);
cout << "Mueva el disco " << num_Discos << " de: " << Origen << " hacia " << Destino
<< endl;
TorresHanoi(num_Discos - 1, Pivote, Destino, Origen);
}
}

2. [5 ptos.] Realizar un programa que lea un arreglo unidimensional de N números reales, luego,
haciendo uso de la función de recursividad el programa debe imprimir el número mayor y menor
de dicho arreglo.
Ingrese el tamanho del vector: 5

Ingrese los elementos del vector


x[1]: 5
x[2]: -2.1
x[3]: 1.2
x[4]: 0
x[5]: 1.9

El valor maximo es: 5


El valor minimo es: -2.1

#include <iostream>
using namespace std;
void llenar_vector(float Vec[], int n);
float max_vector(float Vec[], int n);
float min_vector(float Vec[], int n);
int main()
{
float A[10];
int n;
cout << " Ingrese el tamanho del vector: ";
cin >> n;
llenar_vector(A, n);
cout << "\n El valor maximo es: " << max_vector(A, n) << endl;
cout << " El valor minimo es: " << min_vector(A, n) << endl;
system("pause");
return 0;
}

void llenar_vector(float Vec[], int n) {


cout << "\n Ingrese los elementos del vector" << endl;
for (int i = 0; i < n; i++) {
cout << "x[" << i + 1 << "]: ";
cin >> Vec[i];
}
}

float max_vector(float Vec[], int n) {


if (n == 1) {
return Vec[0];
}

if (Vec[n-1] > max_vector(Vec, n-1)) {


return Vec[n-1];
}
else {
return max_vector(Vec, n - 1);

}
}

float min_vector(float Vec[], int n) {


if (n == 1) {
return Vec[0];
}

if (Vec[n - 1] < min_vector(Vec, n - 1)) {


return Vec[n - 1];
}
else {
return min_vector(Vec, n - 1);

}
}

También podría gustarte