1Eva_IIIT2003_T4 Dividir Polinomio usando Paolo Ruffini

Parcial III Término 2003 – 2004. Abril 02, 2004 /ICM00794

Tema 4. (25 Puntos) La regla de Paolo Ruffini sirve para realizar la división de un polinomio (de grado mayor que 1) para un binomio de la forma (x – a), ambos con coeficientes enteros.

Al dividir:
(x3 + 3x2 – x + 1)
para: (x – 2)

el coeficiente de la division es: (x2 + 5x + 9)
y el residuo es: 19

Escriba un algoritmo en seudo-código que realice lo siguiente:

a) Permita el ingreso de:

  • El grado n de un polinomio, validando que n sea entero mayor que 1 y menor que 10.
  • Los coeficientes de dicho polinomio en un arreglo de enteros (el orden de ingreso será desde los coeficientes del término de mayor grado hasta el término independiente).
  • El valor de a (entero) del divisor ( x – a )

b) Muestre por pantalla el resultado de la división (cociente y residuo).

Rúbrica: validar grado de polinomio (5 puntos), ingreso de coeficientes en arreglo (5 puntos) operaciones (10 puntos),  residuo correcto(5 puntos).

2Eva_IIIT2003_T4 Menú para un archivo de inventario

Final III Término 2003 – 2004. Abril 23, 2004 /ICM00794

Tema 4. En un almacén se requieren almacenar los datos correspondientes a los diferentes artículos disponibles en un archivo denominado ‘invent.dat‘ en la unidad de disco ‘C:\’.

Para cada artículo se deben registrar los siguientes datos:

código (entero),
nombre (cadena de hasta 30 caracteres),
precio (número real),
cant (número entero que refleja la cantidad existente).

a) Escriba una función, denominada ingresar_datos, la cual permitirá registrar los datos de varios artículos en el archivo ‘invent.dat‘ a través de una estructura.

Los códigos de cada registro se irán generando secuencialmente a partir de 1 y los restantes datos serán digitados por el usuario, mientras aquel desee continuar con el ingreso de más artículos.
Al final la función retorna el número de artículos ingresados.

b) Escriba un procedimiento, denominado venta_item, que reciba 2 parámetros:

  • el código de un artículo y
  • el número de unidades que serán vendidas.

Este procedimiento debe acceder en el archivo ‘ invent.dat‘ al artículo cuyo código se desea vender y mostrar por pantalla el importe de la venta de tal artículo.
Si la cantidad de artículos existentes es menor que la cantidad solicitada para la venta, se debe mostrar un mensaje que indique que la venta no puede ser realizada.

c) Escriba un programa en C/C++ que llame a la función ingresar_datos, que luego pida al usuario el ingreso del código de un artículo y el número de unidades que se desean vender de dicho artículo y que, finalmente, llame al procedimiento venta_item.

2Eva_IIIT2003_T3 función distancia de Hamming

Final III Término 2003 – 2004. Abril 23, 2004 /ICM00794

Tema 3. Dados dos vectores U y V, se define la distancia de Hamming, d(U,V), como el número de posiciones en las cuales difieren los vectores U y V.

Por ejemplo:
U 2 0 0 0 1
V 1 0 1 0 3

d(U,V) = 3, ya que existen tres posiciones (la primera, la tercera y la quinta) en las cuales los dos vectores tienen diferente valor.

>>> U='20001' 
>>> V='10103'
>>> dHamming(U,V)
 3

a) Escriba una función, denominada Hamming(), que reciba como parámetros dos cadenas de caracteres y retorne un entero que indique la distancia Hamming entre ellas. Si las cadenas no tienen longitudes iguales la función retornará -1.

b) Escriba un programa que pida al usuario el ingreso de una clave (cadena de caracteres), que a continuación lea otra cadena almacenada en un archivo denominado ‘clave.dat‘ ya existente en la unidad de disco ‘C:\’.
Luego, después de llamar a la función Hamming(), muestre por pantalla un mensaje indicando si la cadena ingresada coincide o no con la cadena almacenada en el archivo ‘clave.dat‘.

1Eva_IIIT2003_T3 Coordenadas enteras en un círculo

Parcial III Término 2003 – 2004. Abril 02, 2004 /ICM00794

Tema 3. (25 puntos) Escriba un algoritmo en seudo-código para determinar el número de puntos del plano cartesiano con coordenadas de valores enteros que pertenecen al círculo limitado por la circunferencia de ecuación

x^2 + y^2 = 100

(centro en el origen y radio 10).

Muestre también el promedio de las distancias de dichos puntos al origen de coordenadas.

Rúbrica: Manejo de índices enteros como coordenadas (5 puntos). control de intervalos de coordendas en dos dimensiones (5 puntos), manejo de contadores y condicionales (10 puntos), promedio de distancias (5 puntos).

1Eva_IIIT2003_T2 Verificar números triangulares

Parcial III Término 2003 – 2004. Abril 02, 2004 /ICM00794

Tema 2. (25 puntos) Considere la secuencia de números triangulares, cuyo nombre refleja su ley de formación:

1, 3, 6, 10, …


Escriba un algoritmo en seudo-código que indique si un número natural t, ingresado por teclado, es triangular.

Esto es, si es de la forma:

t = \sum_{i=1}^{n}i

para algún número natural n

Rúbrica: identificación de piso en operación (5 puntos), cálculo de usados (5 puntos), control de pisos construidos (5 puntos), validar s es triangular (5 puntos), algoritmo estructurado (5 puntos)

Referencia: Número triangular. Wikipedia

2Eva_IIIT2003_T2 Raíz cuadrada por Newton, recursiva

Final III Término 2003 – 2004. Abril 23, 2004 /ICM00794

Tema 2. La raíz cuadrada de un número real x mayor que 0 se puede obtener a través de una aproximación n-ésima de una función f según el método de Newton, el cual establece lo mostrado:

f(1) = \frac{x}{2} f(2) = 0.5\Bigg(f(1) + \frac{x}{f(1)}\Bigg) f(3) = 0.5\Bigg(f(2) + \frac{x}{f(2)}\Bigg)

f(n) = 0.5\Bigg(f(n-1) + \frac{x}{f(n-1)}\Bigg)

a) Escriba una función recursiva f que reciba dos parámetros:

  • x (el número del cual se desea calcular la raíz cuadrada) y
  • n (el número de aproximaciones).

Esta función debe retornar la raíz cuadrada de x para la n-ésima aproximación.

b) Escriba un programa que permita el ingreso de un número real x y que, mediante sucesivas llamadas a la función f, muestre los resultados del cálculo de la raíz cuadrada de dicho número para cada una de las 10 primeras aproximaciones (n = 1, 2, 3, .. , 10).

Nota: considere aplicar una bandera como indicador que la raiz no es posible para números negativos o cero. Tampoco es posible para n menores que 1

Referencia: https://es.wikipedia.org/wiki/Ra%C3%ADz_cuadrada


Ejemplo:

ingrese x: 9
aproximación n-esima: 10
 i , f(i)
0 nan
1 4.5
2 3.25
3 3.0096153846153846
4 3.000015360039322
5 3.0000000000393214
6 3.0
7 3.0
8 3.0
9 3.0
10 3.0
>>> 

2Eva_IIIT2003_T1 Juego de dados por sumas

Final III Término 2003 – 2004. Abril 23, 2004 /ICM00794

Tema 1. En un juego se lanza un dado 5 veces y se gana cuando la suma de puntos obtenida en los dos primeros lanzamientos es igual a la obtenida en los restantes tres.

Ejemplo:

>>juego()
dado = [3, 2, 1, 3, 1]
sumas = [5, 5]
ans=1

>>juego()
dado = [2, 4, 5, 2, 1]
sumas = [6, 8]
ans=0

a) Escriba una función, denominada juego(), que simule los cinco lanzamientos del dado y retorne dos posibles valores:
1, si se trata de un jugada ganadora y
0 en caso contrario.

b) Escriba un programa en C/C++ que permita realizar 1000 jugadas diferentes sucesivas mediante llamadas a la función juego, y que muestre por pantalla el porcentaje de jugadas ganadoras.

1Eva_IIIT2003_T1 Prueba de escritorio, conceptos

Parcial III Término 2003 – 2004. Abril 02, 2004 /ICM00794

Tema 1.

a) (10 puntos) Complete la siguiente Tabla de números escritos en diferentes bases numéricas:

Decimal Binario Octal Hexa- decimal
1568
A2D

b) (15 puntos) Muestre el contenido de los 10 valores del vector X al finalizar la siguiente secuencia de instrucciones:

Para j ← 1 hasta 3, incremento 1
    X[j] ← j - 1
fin
Para j ← 4 hasta 10, incremento 1
    X[j] ← X[j-3] - X[j-2] + X[j-1]
fin
Tabla para Prueba de Escritorio
j 1 2 3 4 5 6 7 8 9 10
X[j]

Rúbrica: literal a (2 puntos cada casilla). literal b, manejo de indices (2 puntos), manejo de vectores (5 puntos), interpretación de operaciones (5 puntos), valores completos (2 puntos).

1Eva_IIT2003_T4 Juego con icosaedros

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

Tema 4. (30 puntos) Se requiere implementar un juego por computadora que consiste en generar aleatoriamente el lanzamiento de 2 icosaedros (poliedro regular de 20 caras triangulares).

Las caras están identificadas por color (azul, blanco, rojo o negro) y un número entero (1, 2, 3, 4 o 5).

Una vez lanzados y se han detenidos los dos icosaedros (lanzamientos simulados), considere las siguientes reglas para el juego:

  • Se observan las caras de la base:
  • Si coinciden los colores de las bases, el jugador gana 10 centavos.
  • Si coinciden los números de las bases, el jugador gana 10 centavos.
  • Si coinciden los colores y los números de las bases, el jugador gana 50 centavos.
  • Si la suma de los números de las bases es impar, el jugador gana 5 centavos más.

Para iniciar el juego, se debe presionar el número 1.

Para seguir jugando se debe presionar el número 2, y

Para terminar el juego se debe presionar el número 3.

Al final del juego se deberá mostrar el total pagado al Jugador y la cantidad de lanzamientos realizados.

A continuación se muestra una ejecución en pantalla del algoritmo que se debe construir:

Presione 1 para iniciar el juego: 1
 Icosaedro 1: 2 de color rojo
 Icosaedro 2: 4 de color rojo
 Jugador GANO 10 centavos

Presione 2 para lanzar, 3 para salir: 2
 Icosaedro 1: 3 de color azul
 Icosaedro 2: 3 de color negro
 Jugador GANO 10 centavos

Presione 2 para lanzar, 3 para salir: 2
 Icosaedro 1: 4 de color blanco
 Icosaedro 2: 4 de color blanco
 Jugador GANO 50 centavos

Presione 2 para lanzar, 3 para salir: 2 
 Icosaedro 1: 3 de color negro
 Icosaedro 2: 4 de color negro
 Jugador GANO 15 centavos

Presione 2 para lanzar, 3 para salir: 3
 El jugador GANO 85 centavos en 4 Lanzamientos

2Eva_IIT2003_T4 Contar palabras en un archivo

Final II Término 2003 – 2004. Febrero 10, 2004 /ICM00794

Tema 4
a) Escriba una función cuenta_palabra() en C/C++ que reciba una cadena de caracteres y determine cuántas palabras contiene. Suponga que las palabras están separadas por un espacio en blanco.

b) Escriba un programa de prueba en C/C++ que llame a dicha función para determinar cuántas palabras contienen las primeras 20 líneas del archivo de texto “A:\datos.txt”. El programa también deberá indicar cuál es la palabra más larga de entre las contenidas en esas 20 primeras líneas.