Vous êtes sur la page 1sur 4

Dr.

Mario Rossainz López Prope-MCC-Verano 2012 Banco de Ejercicios

BENEMERITA UNIVERSIDAD AUTÓNOMA DE PUEBLA


FACULTAD DE CIENCIAS DE LA COMPUTACIÓN
MAESTRÍA EN CIENCIAS DE LA COMPUTACIÓN
CURSO PROPEDÉUTICO DE PROGRAMACIÓN AVANZADA
VERANO DE 2012
BANCO DE EJERCICIOS

Programación Estructurada en C:
1. Escriba un programa en C que implemente con el uso de struct el número racional el
cual se forma de un numerador y un denominador y con él poder llevar a cabo las
operaciones básicas de suma, resta, producto y división de racionales. Cada operación
deberá estar representada por una función. También deberá incluir una función
imprimir() que muestre en pantalla el racional de la forma: num/den.

2. Escriba un programa en C que simule el lanzamiento de dos dados. Utilice rand para
lanzar el primer dado y nuevamente rand para lanzar el segundo. Luego debe calcular
la suma de ambos valores. El programa deberá lanzar ambos dados 36000 veces.
Mediante un arreglo unidimensional, registre la cantidad de veces que aparece cada
suma. Imprima el resultado en forma de tabla.

3. Dado un arreglo de enteros, implemente un programa en C que utilice funciones


recursivas para calcular:
a) El mayor elemento del arreglo
b) La suma de los elementos del arreglo
c) La media de todos los elementos del arreglo
Dr. Mario Rossainz López Prope-MCC-Verano 2012 Banco de Ejercicios

4. El comando “more” de Linux se utiliza entre otras cosas para mostrar el contenido de
archivos de texto en pantalla. Escriba un programa en C que simule el funcionamiento
de dicho comando. La ejecución del programa deberá ser algo así como:
mimore nomarch
donde mimore es el nombre del programa y nomarch es el nombre del archivo de
texto cuyo contenido se desplegará en pantalla. El programa deberá considerar las
excepciones, por ejemplo, de cuando no exista el archivo a mostrar.

Programación Orientada a Objetos


5. En base al código fuente que se muestra a continuación responde a las preguntas
siguientes:

(1) #include <iostream>


(2) using namespace std;
(3)
(4) class Fraccion
(5) {
(6) private:
(7) int num, den;
(8) public:
(9) Fraccion(int num, int den)
(10) {
(11) this->num=num;
(12) this->den=den;
(13) }
(14)
(15) Fraccion(int num)
(16) {
(17) this->num=num;
(18) den=1;
(19) }
(20)
(21) static Fraccion * suma(Fraccion *n1, Fraccion *n2)
(22) {
(23) int n=n1->num*n2->den+n1->den*n2->num;
(24) int d=n1->den*n2->den;
(25) return new Fraccion(n,d);
(26) }
(27)
(28) Fraccion * suma(Fraccion *n2)
(29) {
(30) int n=this->num*n2->den+this->den*n2->num;
(31) int d=this->den*n2->den;
(32) return new Fraccion(n,d);
(33) }
(34) };

a) ¿Existe en la clase Fraccion la propiedad de encapsulación? Si tu respuesta es


afirmativa, ¿en qué línea de código se encuentra tal propiedad?
b) Rescribe el primer constructor de la clase Fraccion de manera que no se utilice la
palabra “this”.
c) Explique la sobrecarga de métodos y operadores e indica en qué línea(s) del
código se encuentra tal propiedad.
Dr. Mario Rossainz López Prope-MCC-Verano 2012 Banco de Ejercicios

d) Explique qué es la herencia y escriba la forma en que una clase digamos Quebrado
podría heredar de la clase Fraccion en C++.
e) ¿Qué son los objetos estáticos y dinámicos? En el código propuesto, que tipo de
objetos se manejan?

6. Programe una clase en C++ que implemente una estructura Cola como un buffer
circular con n ranuras o slots, con sus operaciones de insertar y extraer utilizando para
ello un arreglo unidimensional. La estructura básica de la clase es:

ColaCircular
(Propiedades mínimas)
int n //tamaño de la Cola
int frente, atras // apuntadores al frente y final de
// la cola
int nslots // numero de slots vacios en la cola
void **arreglo //el arreglo unidimensional
(Métodos mínimos)
ColaCircular(int n) // estructura con n elementos
bool insertar(void *dato)
void * extraer()
bool esta_vacia()
bool esta_llena()

Incluya las propiedades y métodos extra que considere convenientes y justifíquelos. Asuma
que la ColaCircular puede almacenar cualquier objeto.

7. Implemente una clase en JAVA que modele conjuntos finitos de números enteros mediante
listas ligadas con la siguiente estructura:

Conjunto
(Propiedades mínimas)
Nodo *head //la cabeza de inicio de un conjunto
(Métodos mínimos)
Conjunto() // conjunto vacío
void insertaOrdenado(Nodo *n)
static Conjunto union(Conjunto a, Conjunto b)
Conjunto interseccion(Conjunto a)
void muestraConjunto()

a) insertaOrdenado: Inserta un nodo dentro de la lista que representa al conjunto que se


esta creando con información no repetida y de forma ordenada.
b) union: Realiza la unión de dos conjuntos dando como resultado el conjunto de la
unión.
c) intersección: Realiza la intersección de dos conjuntos dando como resultado el
conjunto de la intersección
Dr. Mario Rossainz López Prope-MCC-Verano 2012 Banco de Ejercicios

d) muestraConjunto: imprime en pantalla un conjunto

Programación Concurrente/Paralela:

8. Hacer un programa concurrente que pida como dato de entrada una palabra para que a
continuación escriba cada una de sus letras en paralelo y se consiga un efecto de escritura de
dichas letras al azar. El programa debe ejecutarse de forma infinita pidiendo palabras al
usuario.

9. N matemáticos llevan a cabo la suma de los primeros k números naturales (con N<=k) en
paralelo. Cada matemático irá tomando (de un arreglo de enteros) números que sumará en
forma parcial. Cuando todos los números hayan sido procesados por los matemáticos, éstos
sumarán, también en paralelo sus sumas parciales para obtener el resultado final de la suma.

10. El Problema de los Fumadores: En una mesa hay varias unidades de papel arroz, tabaco y
cerillos. Un grupo de procesos (viciosos) pasan su vida fumando (y esperando, oyendo tango).
Para cada fumada se consume una unidad de cada recurso. Si falta algún recurso, los procesos
que lo necesitan entran en estado de espera (distinto del fumando oigo tango). Aleatoria
mente aparece un agente que repone algunas unidades de los recursos.

Vous aimerez peut-être aussi