3Eva_IIIT2004_T1 Carrera de ranas

Mejoramiento III Término 2004 – 2005. Marzo, 2005 /ICM00794

Tema 1. Dos ranas están en el inicio de una pista de 20 m.ranas carreras

En cada turno cada rana realiza aleatoriamente una de las siguientes acciones:

  1. No se mueve
  2. salta un metro
  3. salta dos metros

Escriba un programa que simule el recorrido de ambas ranas y determine cuál gana la carrera y cuántos saltos realizó.


Rúbrica: control de corredores (5 puntos), generar aleatorios (5 puntos), control de carrera (5 puntos), contrador de saltos (5 puntos), programa estructurado (5 puntos)

1Eva_IIT2004_T4 Matriz de paridad

Parcial II Término 2004 – 2005. Diciembre, 2004 /ICM00794

Tema 4. (25 puntos) Se necesita transmitir una matriz de 7 filas y 7 columnas conteniendo “bits” (ceros o unos).

Antes de transmitirla se debe agregar una columna a la derecha conteniendo ceros o unos, de tal manera que las 7 filas tengan paridad par, es decir que la cantidad de unos en cada fila sea par. Este cero o uno adicional se denomina bit de paridad.

Realice un algoritmo que genere aleatoriamente la matriz de 7×7 llena con ceros y unos, agregue el bit de paridad en cada fila y muestre la matriz resultante.

Ejemplo: Matriz
Datos Paridad
1 0 1 1 1 0 1 1
0 1 0 1 1 0 1 0
1 1 1 1 1 0 1 0
1 0 1 1 0 1 1 1
1 0 1 0 0 1 0 1
1 0 1 0 0 0 1 0
1 1 1 1 0 1 1 0

Ejemplo:
Para la primera fila: 1011101  1
La suma de los primeros 7 bits es 5, que es un resultado impar.

Para que la suma de toda la fila sea par se debe añadir un bit 1 adicional que es el bit de paridad.

Si suma ahora los 8 bits, incluyendo el bit de paridad, el resultado es 6 que es un número par, cumpliendo así con lo requerido.


Sugerencia: Resuelva primero para una fila, luego repita el resultado para las siguientes filas.
Referencia:
https://es.wikipedia.org/wiki/Paridad_(telecomunicaciones)

matriz = [[1,0,1,1,1,0,1,1],
          [0,1,0,1,1,0,1,0],
          [1,1,1,1,1,0,1,0],
          [1,0,1,1,0,1,1,1],
          [1,0,1,0,0,1,0,1],
          [1,0,1,0,0,0,1,0],
          [1,1,1,1,0,1,1,0]]

1Eva_IIT2004_T3 Estimar π por Montecarlo

Parcial  II Término 2004 – 2005, Diciembre, 2004 /ICM00794

Tema 3. (25 puntos) Encuentre un valor aproximado de la constante π con el siguiente procedimiento. circulo centrado en origen de radio 1

Considere un círculo de radio unitario, centrado en el origen e inscrito en un cuadrado:

Dado el valor n, genere las coordenadas x, y para n puntos.

Asigne valores aleatorios reales entre 0 y 1 y cuente cuantos puntos caen dentro del cuadrante de círculo.

Si llamamos a este contador k, se puede establecer la siguiente relación aproximada suponiendo n grande:

\frac{k}{n} = \frac{\frac{1}{4} \text{del área del círculo}}{\frac{1}{4} \text{del área del cuadrado}} \frac{\frac{1}{4}\pi(1)^2}{\frac{1}{4} (2)^2}=\frac{\pi}{4} \frac{k}{n} =\frac{\pi}{4}

Donde se puede obtener el valor aproximado de π a partir de k y n.


Rúbrica: Puntos de coordenadas aleatorias dentro del cuadrado (5 puntos), verificar punto dentro del círculo (5 puntos), conteo de puntos dentro del círculo (5 puntos), calcular el valor de π (5 puntos). Algoritmo estructurado (5 puntos)

Referencia:  Fontana di Trevi, https://es.wikipedia.org/wiki/Fontana_di_Trevi

1Eva_IIT2004_T2 Apuestas a números con dados

Parcial II Término 2004 – 2005. Diciembre, 2004 /ICM00794

Tema 2. (25 puntos) Simule en un algoritmo el juego descrito entre dos personas: A y B. dado
Muestre cuál jugador gana el juego y cuántos turnos se tuvieron que jugar.

  • Inicialmente cada una tiene $20
  • En cada turno se lanza un dado
  • Si sale 6 o 4, A gana $3 y B pierde $3
  • Si sale 2, ninguno gana ni pierde
  • Si sale 1, A pierde $6 y B gana $6
  • Si sale 3 o 5, A pierde $1 y B gana $1

El juego termina cuando una de las dos personas pierde todo su dinero.

1Eva_IIT2004_T1 Nicómano de Gerasa

Parcial II Término 2004 – 2005. Diciembre, 2004 /ICM00794

Para cada tema describa un algoritmo con un Diagrama de Flujo, Seudolenguaje , o Matlab

Tema 1. (25 puntos) Nicómano de Gerasa descubrió la siguiente propiedad de los números naturales:

Al sumar el primer impar se obtiene el primer cubo: 1 = 1
Al sumar los dos siguientes impares se obtiene el segundo cubo: 3+5 = 8
Al sumar los tres siguientes impares se obtiene el tercer cubo: 7+9+11 = 27
Al sumar los cuatro siguientes impares se obtiene el cuarto cubo: 13+15+17+19 = 64 Etc…

Con esta propiedad, para un n dado, calcule y muestre los cubos de los primeros n números naturales.

3Eva_IT2004_T4 Manejar inventario de ferretería

Mejoramiento I Término 2004 – 2005. Agosto 31, 2004 /ICM00794

Tema 4. Escriba un programa en C/C++ que permita controlar las herramientas de una ferretería en el archivo C:\producto.txt, implementando el siguiente menú:

1. Ingreso de una nueva herramienta
2. Compra de una herramienta existente
3. Venta de una herramienta existente
4. Consulta Individual de una herramienta
5. Reporte de herramientas
6. Salir

Escriba la función en C/C++ que permita hacer la compra de una herramienta existente.

Suponga que las demás funciones ya están implementadas.

Utilice la siguiente estructura para la información:

No. de registro Nombre de herramienta Cantidad
1 Martillo 76
2 Sierra 21
3 Pinzas 18
4 Destornillador 106
5 Llave de tuerca 34

3Eva_IT2004_T3 Multiplicar con campesino egipcio

Mejoramiento I Término 2004 – 2005. Agosto 31, 2004 /ICM00794

Tema3. Para efectuar la multiplicación entre 2 números enteros p y q, se puede utilizar un método recursivo denominado el Campesino Egipcio:

mult(p,q) = \begin {cases} 0 , && q=0 \\ p ,&& q=1 \\ mult \Big(2p,cociente\big(\frac{q}{2}\big)\Big) , && q\ge 2 \text {, q es par} \\ mult \Big(2p,cociente\big(\frac{q}{2}\big)\Big)+p , && q\ge 2 \text{, q es impar }\end{cases}

a) Escriba la función recursiva mult(p,q) en C/C++ que reciba dos argumentos enteros p y q, y devuelva el resultado de su multiplicación.

b) Escriba un programa en C/C++ que, pida al usuario un número entre 0 y 12 y muestre la tabla de multiplicar de dicho número, utilizando la función anterior.

Rúbrica: función recursiva (8 puntos), validar número para tabla (4 puntos), tabla de multiplicar con función recursiva (4 puntos), salida ordenada (4 puntos)


Referencia:  Matemática egipcia. https://es.wikipedia.org/wiki/Matem%C3%A1tica_egipcia

Multiplicación por duplicación. https://es.wikipedia.org/wiki/Multiplicaci%C3%B3n_por_duplicaci%C3%B3n

3Eva_IT2004_T2 Realizar el producto vectorial

Mejoramiento I Término 2004 – 2005. Agosto 31, 2004 /ICM00794

Tema 2. Escriba una función prod_vectorial(a,b) que reciba como argumento dos estructuras correspondientes a dos vectores a y b en IR3 y retorne otra estructura correspondiente al vector que representa su producto vectorial (producto cruz).

Ej: si a=(1,3,1) y b=(-2,1,0) entonces:
 La función debe retornar el vector (-1,-2,7)
i j k
1 3 1
-2 1 0
axb = i(3*0 - 1*1)-j(1*0-(-2*1)+k(1*1-(-2*3))
    = -i+2j+7k

Escriba un programa en C/C++ que pida al usuario las coordenadas de dos vectores (valores enteros) y muestre el resultado de su producto vectorial.

3Eva_IT2004_T1 Buscar número al lanzar el dado

Mejoramiento I Término 2004 – 2005. Agosto 31, 2004 /ICM00794

Tema 1. Escriba la función al_fin(n,k) en C++ que reciba dos argumentos enteros:

  • n representa la cara de un dado (1≤n≤6), números aleatorios) y
  • k representa el número de éxitos que deben aparecer esa cara.

La función devolverá la cantidad de pruebas que se realizaron hasta conseguir los k éxitos.

Escriba un programa en C/C++ que llame a la función anterior m veces y encuentre las frecuencias en que aparecen los m resultados.

1Eva_IT2004_T4 Verificar matriz simétrica

Parcial I Término 2004 – 2005. Julio 06, 2004 /ICM00794

Tema 4. (25 puntos) Se dice que una matriz cuadrada A de orden n es simétrica, si se cumple que:

∀ i, ∀j
(aij = aji)
1 ≤ i ≤n
1 ≤ j ≤n
1 2 3 4
2 1 5 6
 3 5 1 7
4 6 7 1

Escriba un algoritmo que permita ingresar los elementos de una matriz A con un orden n≤10 y verifique si la matriz es simétrica.

La matriz presentada es simética respecto a la diagonal, es decir matriz[f,c] = matriz[c.f]

Nota: símbolo ∀ «Para todo»


import numpy as np
matriz = [[1,2,3,4],
          [2,1,5,6],
          [3,5,1,7],
          [4,6,7,1]]

matriz = np.array(matriz,dtype=float)

El resultado debería mostrar:

"Es simétrica"
>>>

Si usa la matriz:

matriz = [[1,4,3,2],
          [2,1,5,6],
          [3,5,1,7],
          [4,6,7,1]]

matriz = np.array(matriz,dtype=float)

el resultado será:

"No es simétrica"