1) Solicitar en tiempo de ejecución un número entero N. Crear N instancias de una estructura  que permitan alamcenar los siguientes datos:
Nombre y Apellido, DNI, fecha (dd/mm/aaaa)
Mostar al estructura cagada antes finalizar el programa.

2 (Variante de 1 con función) Solicitar en tiempo de ejecución un número entero N. Llamar a una función carga que recibe como argumento N y un puntero a las N instancias de una estructura  que permitan alamcenar los siguientes datos:
Nombre y Apellido, DNI, fecha (dd/mm/aaaa)
Mostar al estructura cagada utilizando la función muestra, que recibe como argumentos los mismos que carga .

3) Crear un menú con una función menú que presente lo siguiente.

a-Cargar datos.
b-Borrar datos.
c-Mostrar datos.
f-Finalizar.

Punto a. En main se debe solicitar el ingreso de un entero N, validar que sea positivo, luego  crear N instancias de con una estructura que almacene :
Datos : temperatura, humedad, puntero a estructura datos.
El puntero y la cantidad de instancias N se pasa como argumentos a función carga.
Notar que si se invoca varias veces la función carga, la misma debe "enlazar los punteros" de la estructura para poder generar una cadena lógica de todas las instancias.

Punto b- En este punto se debe listar las instancias por pantalla, poniendo un indice sobre cada instancia para que luego se haga referencia a ese indice sobre la instancia a borrar.
Notar que se deben "reorganizar los punteros" de un par de instancias.

Punto c-Mostar los datos cargados invocando a una función mostrar.


Ejercicio 1

Realizar un programa en C++ que cargue una estructura llamada alumno de una sola instancia de nombre “electronica” con los siguientes miembros:

  • nombre (char de 10 elementos)
  • edad (entero)
  • fecha_de_nacimiento (arreglo de 3 enteros)

Luego de cargar esta estructura deberá mostrarla.

Ejercicio 2

Ídem al anterior pero con un arreglo de 10 instancias.

Ejercicio 3

Ídem al anterior pero usando punteros.

Ejercicio 4

Similar al anterior pero la carga de la instancia se deberá realizar en una función llamada carga que recibe como argumento un puntero a la instancia. La muestra de la instancia se deberá hacer en una función llamada  muestra que recibe como argumento un puntero a la instancia.

Ejercicio 5

Ídem al anterior pero un arreglo de 10 instancias.  La función carga de a una instancia.

Ejercicio 6

Escribir un programa que almacene en un arreglo de caracteres los nombres y números de teléfono de 10 personas. El programa debe leer los datos introducidos por el usuario y guardarlos en memoria. Después debe ser capaz de buscar el nombre correspondiente a un número de teléfono y el teléfono correspondiente a una persona. Ambas opciones deben ser accesibles a través de un menú, así como la opción de salir del programa. El menú debe tener esta forma:

  1. Buscar por nombre
  2. Buscar por número de teléfono
  3. Salir

Nota: No olvides que para comparar cadenas se debe usar una función, no el operador ==.

Ejercicio 7

Para almacenar fechas podemos crear una estructura con tres campos: anio, mes y dia. Los días pueden tomar valores entre 1 y 31, los meses de 1 a 12 y los años, dependiendo de la aplicación, pueden requerir distintos rangos de valores. Para este ejemplo consideraremos suficientes 128 años, entre 1960 y 2087. En ese caso el año se obtiene sumando 1960 al valor de año. El año 2021 se almacena como 61. Usando estructuras, y ajustando los tipos de los campos, necesitamos un char para día, un char para mes y otro para año. Diseñar una estructura análoga, llamada "fecha", pero usando campos de bits. Usar sólo un entero corto sin signo (unsigned short), es decir, un entero de 16 bits. Los nombres de los campos serán: dia, mes y anio.

Ejercicio 8

Basándose en la estructura de bits del ejercicio anterior, escribir una función para mostrar fechas: void Mostrar(fecha);. El formato debe ser: "dd de mmmmmm de aaaa", donde dd es el día,mmmmmm el mes con letras, y aaaa el año. Usar un array para almacenar los nombres de los meses.

Ejercicio 9

Basándose en la estructura de bits del ejercicio anterior, escribir una función bool ValidarFecha(fecha);, que verifique si la fecha entregada como parámetro es válida. El mes tiene que estar en el rango de 1 a 12, dependiendo del mes y del año, el día debe estar entre 1 y 28, 29, 30ó 31. El año siempre será válido, ya que debe estar en el rango de 0 a 127. Para validar los días usaremos un array int DiasMes[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31};. Para el caso de que el mes sea febrero, crearemos otra función para calcular si un año es o no bisiesto: bool Bisiesto(int); Los años bisiestos son los divisibles entre 4, al menos en el rango de1960 a 2087 se cumple.
Nota: los años bisiestos son cada cuatro años, pero no cada 100, aunque sí cada 400. Por ejemplo, el año 2000, es múltiplo de 4, por lo tanto debería haber sido bisiesto, pero también es múltiplo de 100, por lo tanto no debería serlo; aunque, como también es múltiplo de 400, finalmente lo fue.

Ejercicio 10

Seguimos con el tema de las fechas. Ahora escribir dos funciones más. La primera debe responder a este prototipo: int CompararFechas(fecha, fecha);. Debe comparar las dos fechas suministradas y devolver 1 si la primera es mayor, -1 si la segunda es mayor y 0 si son iguales.
La otra función responderá a este prototipo: int Diferencia(fecha, fecha);, y debe devolver la diferencia en días entre las dos fechas suministradas.

Last modified: Friday, 21 April 2023, 1:31 PM