miércoles, 18 de septiembre de 2024

Sofware que mantenga las dependencias de paquetes de software

 Una empresa lo contrata para diseñar un sofware que mantenga las dependencias de paquetes de software. Un paquete de software o librería puede tener dependencias de otros paquetes para funcionar por ejemplo el paquete scala, necesita el paquete jdk para funcionar. La empresa guarda la información de los paquetes y dependencias en los siguientes archivos : 


paquetes.dat

dependencias.dat

codigo : char[100]

nombre : char[100]

version: int 

codigoPaquete: char[100]

codigoPaqueteDependencia:char[100]


Note que un paquete puede depender de varios paquetes y a la vez un paquete puede ser utilizado por varios paquetes dependientes, es una relación muchos a muchos. Por ejemplo scala depende de openjdk y kotlin depende también de openjdk pero también depende del “idea”. También existen dependencias transitivas, por ejemplo el paquete intellij depende de kotlin y por ende tiene una dependencia transitiva con openjdk. 


  1. (22) Realice el diseño de clases e implemente la función que permita saber todas las dependencias de un paquete (incluyendo las transitivas), dado el código del paquete.

  2. (22) Escriba un archivo de texto que permita saber el árbol de dependencias de un paquete determinado. Para realizar esto sobreescriba el operador <<. El archivo debe llamarse igual que el código del paquete pasado por parámetro y debe tener el siguiente formato: 

nombre paquete

dependencia 1

dependencia 2

dependencia de 2  


  1. (18) Realice procedimiento con funciones STL que permita saber: 

    1. Los 5 paquetes con mayor cantidad de dependencias no transitivas.

    2. Todos los paquetes que no tienen dependencias. 

  2. (22) (no utilice STL) Programe una estructura template que represente un vector dinámico ordenado. Dicha estructura debe permitir:

    1. agregar un elemento. 

    2. eliminar un elemento por índice.

    3. imprimir todos los elementos de forma ordenada

    4. Conteste: ¿Que operador debería sobreescribir al tipo T para poder utilizar esta estructura?

  3. (16) Conteste: ¿Cuando es necesario utilizar composición y como este ayuda a reutilizar código? El polimorfismo simplifica el diseño del código, como? justifique.


Libre : La empresa lo vuelve a contratar para el diseño de una nueva entidad que es el conjunto de paquetes. Dicha entidad debe permitir instalar todos los paquetes dependientes de dicho conjunto, este tiene un codigo, nombre y versión. Diseñe la solución y modifique los archivos.  


Sistema Single sign-on

Una empresa lo contrata para programar un sistema Single sign-on. El sistema debe determinar si el usuario y password es correcta y si el usuario tiene permiso para acceder a una url determinada. 

Para ello el sistema debe leer 2 archivos: 


usuario (usuario.dat)

permisos (permisos.dat)

nombre : char(20)

pass: char(100)

tipo_usuario: char 

nombre_usuario: char(20)

url : char(150)


Existen 2 tipos de usuarios, lo cual está registrado en el campo “tipo_usuario” :

“A” administrador : puede acceder a cualquier URL

“N” normal: el usuario y la url debe estar contenido en el archivo de permisos. 


  1. (20) Realice una función que dado un nombre de usuario, un password y una url permita saber si tiene permisos o no. Además explique: ¿es necesario utilizar polimorfismo?

  2. (20) Escriba un archivo de texto que permita saber qué usuario accedió a que url con el siguiente formato: nombre de usuario -> url. Sobreescriba el operador << 

  3. (20) Realice procedimiento que permita saber: 

    1. Los 5 usuarios no administradores con más permisos. 

    2. La URL a la cual más usuarios tienen acceso. 

  4. (20) (no utilice STL) Programe una estructura template que represente un Conjunto, es decir, una estructura que no debe permitir repetidos. Dicha estructura debe permitir:

    1. agregar un elemento. 

    2. eliminar un elemento.

    3. Conteste: ¿Que operador debería sobreescribir al tipo T para poder utilizar esta estructura (es decir, que no admita repetidos)?

  5. (14) Conteste: ¿Cuando es necesario utilizar polimorfismo y como este ayuda a reutilizar código? El polimorfismo simplifica el diseño del código, como? justifique.


Libre: La empresa lo vuelve a contratar dado que quiere implementar un nuevo tipo de usuario el cual agrupe a un conjunto de usuarios, por ejemplo. Usuario de inventario el cual podrá acceder a todas las url de todos los usuarios que trabajan con el inventario. Diseñe una solución.  


martes, 17 de septiembre de 2024

Software para analizar los comentarios de sus productos

Una empresa lo contrata para analizar los comentarios de sus productos. En la pagina web de la empresa los clientes pueden opinar o dejar comentarios de los productos y esos comentarios a la vez pueden ser comentados por otros usuarios. Cada comentario tiene una valoración del producto numerico de 0 a 5.

Estos comentarios son guardados en un archivo de texto con el siguiente formato:

Nombre del Producto
        -comentario : puntaje
                --comentario del comentario : puntaje

Por ejemplo:
Notebook Lenovo
        -Muy buena : 5
        -Es muy cara : 1
                --Es la más barata si la comparas con otras marcas : 5
        -No es lo que esperaba, pero estoy satisfecho : 3

El “-” marca el nivel de comentario, por ejemplo -- indica que es el comentario del comentario.

(30) Realice y programe un diseño que permita resolver el problema.

(22) Lea el archivo de texto

(25) Realice procedimientos que permitan saber:

        El o los productos con mayor puntaje.
        El o los productos con más comentarios negativos (puntaje menor a 2)
        El o los productos con mayor cantidad total de comentarios.

(23) Guarde el resultado del punto 3 en un archivo binario.

Libre: Lo vuelven a contratar, dado que piensan cambiar el modelo y permitir que un comentario pueda contestar a varios comentarios. Diseñe una solución.

lunes, 9 de septiembre de 2024

Empresa de dictado de cursos online

Una Empresa de dictado de cursos online lo contrata para realizar un software que mantenga sus cursos. Existen 3 tipos de cursos :
  • Simples: Tienen un código (alfanumérico) , una cantidad de horas asignadas, un nombre, tema relacionado.
  • Simple con correlatividades: Igual que el anterior pero es necesario cursar cursos anteriores. Por ejemplo para cursar cálculo 2 es necesario tener aprobado calculo 1. Las horas asignadas del curso son las horas cargadas para este curso más todas las horas de los cursos correlativos.
  • Compuesto: Tienen un código (alfanumérico) , un nombre, tema relacionado y un conjunto de cursos simples que lo conforman. Por ejemplo el curso programación web, está compuesto por el curso de javascript, css, html y php. El cálculo de las horas asignadas son la suma de las horas asignadas de cada curso simple que lo conforma.
1. Realice un diseño del software y una función que permita cargar los cursos y calcule las horas asignadas de los mismos.
2. Realice una función que permita guardar los cursos en archivos. Diseñe el o los archivos para guardar la información de forma óptima.
3. Realice procedimiento con funciones STL que permita saber:
  1. Los 5 cursos que tienen menos horas asignadas.
  2. El Tema que está en la mayor cantidad de cursos.

Empresa de logistica y envios

Una empresa de logistica y envios lo contrata para hacer un sistema que calcule los montos totales abonados por los clientes, por envíos realizados. Todos los envíos tienen un código de envío (alfanumérico) y se pueden categorizar en:
  • Envíos comunes, los cuales tienen un monto fijo.
  • Envíos certificados, es un monto fijo, más un seguro por kilómetros.
  • Envios por peso, es un monto fijo más un plus por peso del paquete.
1. Realice el diseño e implementación que permita cargar los envíos y calcular el total abonado por los clientes.

2. Realice una función que muestre todos los envíos cargados y su monto con el formato: 

“código ..... monto” para esto sobreescribe el operador <<

3. Realice una lista doblemente ligada de enteros, la cual debe permitir:
  1. Saber cuántos elementos tiene.
  2. Agregar un elemento.
  3. Imprimir la lista del primero al último.
  4. Imprimir la lista del último al primero.
4. Argumente que ventajas y desventajas tiene la herencia y la composición como técnica de reutilización de código. ¿Qué ventajas tiene el encapsulamiento?

5. Indique cuales es el resultado del siguiente algoritmo para los parámetros 40, 24 y 36, 14:

int XXX(int x, int y)

{

if(y==0)

return x;

else

return XXX(y, x%y);

}

Describa qué hace la función.

lunes, 26 de agosto de 2024

Empresa agrícola especializada en legumbres, oleaginosas y cereales

1. (50) Una empresa agrícola especializada en legumbres, oleaginosas y cereales te ha contratado para desarrollar un sistema que permita calcular la productividad de sus cultivos. La información sobre la cosecha se ingresará por consola con la siguiente estructura:
nombre del cultivo : char[30]
kilogramos cosechados : int
tipo de cultivo : char[1] // L: legumbre, O: oleaginosa, C: cereal

El sistema debe calcular la productividad de cada tipo de cultivo según las siguientes reglas:
Legumbre: 1.2 * kilogramos cosechados
Oleaginosa: 1.5 * kilogramos cosechados 
Cereal: 1.1 * kilogramos cosechados

Tener en cuenta que un cultivo puede tener múltiples registros de cosecha.

Diseñe y programe las clases necesarias para calcular la productividad acumulada de cada tipo de cultivo.

Sobrecargue el operador << para mostrar la productividad total de cada cultivo en el siguiente formato: "nombre_cultivo ........ productividad_total"

2. (30) Realice una clase vector dinámico utilizar template que permita :
  1. Agregar un elemento
  2. Eliminar un elemento (utilizando elemento, no por índice)
  3. Retornar un elemento por índice
  4. Saber si un elemento existe en la estructura
  5. Conteste: ¿que operador debería sobreescribir para utilizar dicha estructura?
3. (20) Conteste :
  1. Indique cómo la programación orientada a objeto contribuye a la reutilización de código. Liste y describa técnicas que proveen dicho beneficio.
  2. ¿Qué ventajas tiene la utilización de template? ¿Por qué estas se utilizan en los lenguajes de tipado estático?

lunes, 12 de agosto de 2024

Empresa de productos alimenticios

(30) Programe un vector dinámico con tipos template que permita:
  1. Agregar un elemento
  2. Recuperar un elemento
  3. Eliminar todas las ocurrencias de un objeto.
(40) Una empresa de productos alimenticios lo contrata para que desarrolle una aplicación para registrar los productos y los ingredientes que lo componen. Por ejemplo, las galletitas sonrisas están hechas con: Harina, azúcar, leche, soja, frambuesa. Un producto tiene un código, un nombre. A la vez existen, productos compuestos (también tienen un código y nombre), los cuales están compuestos por otros productos. Por ejemplo la bolsa de galletitas diversión contiene galletitas sonrisas. Los ingredientes del producto compuesto son los ingredientes de todos los productos que lo componen.

Diseñe un modelo que permita cargar los productos.

Programe una función que imprima todos los productos cargados y sus ingredientes. Para esto sobreescriba el operador <<

Para esta actividad puede utilizar el vector dinámico programado en el punto 1.

(15) Describa qué técnicas de reutilización de código nos provee la programación orientada a objetos y explique cómo funcionan.

(15) Indique cuál es el resultado del siguiente algoritmo para los parámetros: 10, 5, 17.


bool fx(int n) {

if (n > 0) {

if (fx(n - 2)) cout << “ , “;

cout << n ;

return true;

}

return false;

}

Software educativo para mostrar las categorías taxonómicas de los seres vivos

La empresa educarBio lo contrata para desarrollar un software educativo cuyo objetivo es mostrar las categorías taxonómicas de los seres viv...