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‘.

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.

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.

 

2Eva_IIT2003_T3 Funciones eudoxus recursivas

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

Tema 3. Los números de Eudoxus se definen mediante la siguiente formulación:

{x[0] = 1
{x[i] = y[i] + y[i-1] , i>=1

{y[0] = 0
{y[i] = x[i-1] + y[i-1] , i>=1

a) Escriba las funciones recursivas eudoxusX(i) y eudoxusY(i) que permitan generar cada par ordenado(xi, yi).

b) Adicionalmente escriba un programa de prueba que, utilizando las funciones anteriores, muestre los pares ordenados generados recursivamente para 0≤in, donde n es un valor entero leído previamente.

2Eva_IIT2003_T2 Mostrar un triángulo de Pascal

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

Tema 2. Escriba un algoritmo que permita almacenar en una matriz las primeras n filas del triángulo de pascal  (n<20).

Muestre por pantalla la matriz de Pascal generada.

ejemplo:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
…. …. …. …. …. ….

A partir de la tercera fila, los elementos dentro del triángulo se obtienen sumando los dos elementos anteriores de la fila anterior.
Por ejemplo, 6=3+3.

Sugerencia: Usando una matriz cuadrada, en la primera columna y la diagonal llene de unos. Luego realice las operaciones en la parte triangular inferior.

2Eva_IIT2003_T1 Funciones ordena 3 dígitos y veces dado

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

Tema 1a. Escriba una función ordena en C/C++ que reciba como parámetros tres números enteros distintos a, b y c , y los modifique e intercambie internamente de modo que al finalizar la ejecución de la función se cumpla que los contenidos de a, b, c sean tales que a<b<c.

Las variables a, b y c utilizadas No deben ser globales. Use punteros.

Tema 1b. Escriba una función dado_aleatorio en C/C++ que reciba como parámetro un número entero n que representa una de las posibles caras de un dado (1≤n≤6) y simule la cantidad de veces que se lanza el dado (aleatoriamente) hasta que se obtenga el número n.

Escriba un programa de prueba que muestre la cantidad de veces que se necesitan hasta que salga cada una de las caras superiores del dado e indique cuál fue la cara más difícil (que necesitó más intentos para salir).

 

2Eva_IT2003_T4 Registro de carros en archivo

Final I Término 2003 – 2004. Septiembre 02, 2003 /ICM00794

Tema 4. (25 puntos) Escriba un programa en C/C++ que cumpla con los siguientes numerales:

a) Lea desde el teclado y almacene en un archivo ‘a:\carros.dat’ los siguientes datos de un total de NUM_CARS (constante entera global) vehículos:

Placa: (Cadena de 6 caracteres)
Año: (entero)
Tipo: (A: auto, C: camioneta)
Marca: (cadena de 10 caracteres)
Color: (cadena de 10 caracteres)
Precio: (dato real en dólares)

b) Muestre por pantalla las placas de autos cuyos datos están almacenados en ‘a:\carros.dat’ , tales que su año sea mayor a 1995, su color sea rojo y su precio menor a 6000 dólares.

2Eva_IT2003_T3 Encriptar una frase cada 3 letras

Final I Término 2003 – 2004. Septiembre 02, 2003 /ICM00794

Tema 3. (25 puntos) Para encriptar una frase se puede seguir el siguiente procedimiento:

  • Recorrer la cadena en grupos de 3 caracteres e intercambiar el primero con el tercero.
  • Si el último grupo tiene menos de 3 caracteres no se modifica.
Ejemplo:
>> encripta('el saber no ocupa lugar')
      ans = ' lebas re onuco apgular'

Diseñe una función encripta(frase) que reciba como parámetro dicha frase y la encripte con el procedimiento descrito.

Escriba un programa en C/C++ que lea una frase con un máximo de 80 caracteres, la encripte usando la función y muestre el resultado.