Está en la página 1de 7

PUNTO 1

Elaborar un programa en C++, que le permita a una inmobiliaria almacenar los datos
de algunas edificaciones que maneja. Para ello, debe tener en cuenta los siguientes
aspectos:
• Se debe aplicar el concepto de Archivos.
• Los datos de cada edificación son: dirección, área construida, área lote, cédula
del dueño, cédula catastral, precio, barrio.
• Se deben almacenar los datos de cada vivienda en un archivo.
• Al ejecutar el programa se debe mostrar los datos de una edificación
específica, dada la cédula catastral.

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

struct Edificacion {
string direccion;
double areaConstruida;
double areaLote;
string cedulaDueno;
string cedulaCatastral;
double precio;
string barrio;
};

void agregarEdificacion(const char* archivoNombre, Edificacion edificacion) {


ofstream archivoSalida(archivoNombre, ofstream);

if (!archivoSalida.is_open()) {
cout << "No se pudo abrir el archivo de edificaciones." << endl;
return;
}

archivoSalida << edificacion.direccion << " " << edificacion.areaConstruida << " " <<
edificacion.areaLote << " "
<< edificacion.cedulaDueno << " " << edificacion.cedulaCatastral << " " <<
edificacion.precio << " "
<< edificacion.barrio << endl;

archivoSalida.close();
}

void buscarEdificacionPorCedulaCatastral(const char* archivoNombre, const string&


cedulaCatastral) {
ifstream archivoEntrada(archivoNombre);

if (!archivoEntrada.is_open()) {
cout << "No se pudo abrir el archivo de edificaciones." << endl;
return;
}

Edificacion edificacion;
bool encontrado = false;

while (archivoEntrada >> edificacion.direccion >> edificacion.areaConstruida >>


edificacion.areaLote >>
edificacion.cedulaDueno >> edificacion.cedulaCatastral >> edificacion.precio >>
edificacion.barrio) {
if (edificacion.cedulaCatastral == cedulaCatastral) {
encontrado = true;
cout << "Edificación encontrada:" << endl;
cout << "Dirección: " << edificacion.direccion << endl;
cout << "Área construida: " << edificacion.areaConstruida << " m²" << endl;
cout << "Área de lote: " << edificacion.areaLote << " m²" << endl;
cout << "Cédula del dueño: " << edificacion.cedulaDueno << endl;
cout << "Cédula catastral: " << edificacion.cedulaCatastral << endl;
cout << "Precio: $" << edificacion.precio << endl;
cout << "Barrio: " << edificacion.barrio << endl;
break;
}
}

if (!encontrado) {
cout << "No se encontró ninguna edificación con la cédula catastral
proporcionada." << endl;
}

archivoEntrada.close();
}

int main() {
const char* archivoNombre = "edificaciones.txt";
int opcion;

do {
cout << "\nMenú:" << endl;
cout << "1. Agregar edificación" << endl;
cout << "2. Buscar edificación por cédula catastral" << endl;
cout << "3. Salir" << endl;
cout << "Seleccione una opción: ";
cin >> opcion;

switch (opcion) {
case 1: {
Edificacion nuevaEdificacion;
cout << "Ingrese la dirección: ";
cin.ignore();
getline(cin, nuevaEdificacion.direccion);
cout << "Ingrese el área construida (m²): ";
cin >> nuevaEdificacion.areaConstruida;
cout << "Ingrese el área del lote (m²): ";
cin >> nuevaEdificacion.areaLote;
cout << "Ingrese la cédula del dueño: ";
cin >> nuevaEdificacion.cedulaDueno;
cout << "Ingrese la cédula catastral: ";
cin >> nuevaEdificacion.cedulaCatastral;
cout << "Ingrese el precio: $";
cin >> nuevaEdificacion.precio;
cout << "Ingrese el barrio: ";
cin.ignore();
getline(cin, nuevaEdificacion.barrio);

agregarEdificacion(archivoNombre, nuevaEdificacion);
cout << "Edificación agregada correctamente." << endl;
break;
}

case 2: {
string cedulaCatastralBuscar;
cout << "Ingrese la cédula catastral a buscar: ";
cin >> cedulaCatastralBuscar;
buscarEdificacionPorCedulaCatastral(archivoNombre,
cedulaCatastralBuscar);
break;
}

case 3:
cout << "Saliendo del programa." << endl;
break;

default:
cout << "Opción no válida. Intente de nuevo." << endl;
}
} while (opcion != 3);

return 0;
}

EXPLICACION

1. Incluimos las bibliotecas necesarias


- iostream para entrada y salida estándar.
- fstream para trabajar con archivos.
- string para manejar cadenas de texto.

2. Definimos una estructura Edificacion para almacenar los datos de una


edificación:
Esta estructura tiene campos para la dirección, áreas, cédulas, precio y barrio
de una edificación.

3. Creamos dos funciones:


- agregarEdificacion: Agrega una edificación al archivo.
- buscarEdificacionPorCedulaCatastral: Busca una edificación por su cédula
catastral en el archivo.

4. En la función agregarEdificacion, abrimos el archivo en modo de adición


(ofstream::app) para agregar datos al final del archivo
5. En la función buscarEdificacionPorCedulaCatastral, abrimos el archivo en
modo de lectura, luego, leemos cada línea del archivo y comparamos la cédula
catastral de cada edificación con la cédula catastral proporcionada por el
usuario.
6. En la función main, creamos un menú interactivo para que el usuario pueda
seleccionar una de las siguientes opciones:
- Agregar edificación (case 1):
a. Solicitamos al usuario que ingrese los datos de una nueva edificación.
b. Luego, llamamos a la función agregarEdificacion para guardar la
edificación en el archivo.
- Buscar edificación por cédula catastral (case 2):
c. Solicitamos al usuario que ingrese la cédula catastral que desea buscar.
d. Luego, llamamos a la función buscarEdificacionPorCedulaCatastral
para buscar y mostrar la información de la edificación correspondiente.
- Salir del programa (case 3):
e. Terminamos el bucle do-while para salir del programa

PUNTO 2
Elaborar un programa en C++, que le permita a un teatro almacenar los datos de las
reservas. Para ello, debe tener en cuenta los siguientes aspectos:
• Se debe aplicar el concepto de Archivos.
• Los datos de cada reserva son: código de la película, cédula del cliente,
número de cupos, ubicación (centro, lateral izquierda, lateral derecha, centro
arriba, centro abajo).
• Se deben almacenar los datos de cada reserva en un archivo.
• Al ejecutar el programa se debe mostrar un menú con las siguientes opciones:
o Ingresar una reserva. o Ubicar una reserva con la cédula del usuario. o
Eliminar (cancelar) una reserva

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

struct Reserva {
string codigoPelicula;
string cedulaCliente;
int numCupos;
string ubicacion;
};

void ingresarReserva(const char* archivoNombre) {


ofstream archivoSalida(archivoNombre, ofstream::app);
if (!archivoSalida.is_open()) {
cout << "No se pudo abrir el archivo de reservas." << endl;
return;
}

Reserva nuevaReserva;
cout << "Código de la película: ";
cin >> nuevaReserva.codigoPelicula;
cout << "Cédula del cliente: ";
cin >> nuevaReserva.cedulaCliente;
cout << "Número de cupos: ";
cin >> nuevaReserva.numCupos;
cout << "Ubicación: ";
cin.ignore();
getline(cin, nuevaReserva.ubicacion);

archivoSalida << nuevaReserva.codigoPelicula << " " <<


nuevaReserva.cedulaCliente << " "
<< nuevaReserva.numCupos << " " << nuevaReserva.ubicacion << endl;
archivoSalida.close();
cout << "Reserva ingresada correctamente." << endl;
}

void buscarYEliminarReserva(const char* archivoNombre, const string& cedulaCliente)


{
ifstream archivoEntrada(archivoNombre);
ofstream archivoTemporal("temp.txt");
if (!archivoEntrada.is_open() || !archivoTemporal.is_open()) {
cout << "Error al abrir archivos." << endl;
return;
}

Reserva reserva;
bool encontrada = false;

while (archivoEntrada >> reserva.codigoPelicula >> reserva.cedulaCliente >>


reserva.numCupos >> reserva.ubicacion) {
if (reserva.cedulaCliente != cedulaCliente) {
archivoTemporal << reserva.codigoPelicula << " " << reserva.cedulaCliente <<
""
<< reserva.numCupos << " " << reserva.ubicacion << endl;
} else {
encontrada = true;
}
}

archivoEntrada.close();
archivoTemporal.close();

if (encontrada) {
remove(archivoNombre);
rename("temp.txt", archivoNombre);
cout << "Reserva eliminada correctamente." << endl;
} else {
remove("temp.txt");
cout << "No se encontró ninguna reserva para la cédula proporcionada." << endl;
}
}

int main() {
const char* archivoNombre = "reservas.txt";
int opcion;

do {
cout << "\nMenú:" << endl;
cout << "1. Ingresar una reserva" << endl;
cout << "2. Ubicar y eliminar una reserva por cédula del usuario" << endl;
cout << "3. Salir" << endl;
cout << "Seleccione una opción: ";
cin >> opcion;

switch (opcion) {
case 1:
ingresarReserva(archivoNombre);
break;
case 2: {
string cedulaClienteEliminar;
cout << "Ingrese la cédula del cliente para eliminar la reserva: ";
cin >> cedulaClienteEliminar;
buscarYEliminarReserva(archivoNombre, cedulaClienteEliminar);
break;
}
case 3:
cout << "Saliendo del programa." << endl;
break;
default:
cout << "Opción no válida. Intente de nuevo." << endl;
}
} while (opcion != 3);

return 0;
}

EXPLICACION

1. Incluimos las bibliotecas necesarias:


- iostream para entrada y salida estándar.
- fstream para trabajar con archivos.
- string para manejar cadenas de texto.

2. Definimos la estructura Reserva para almacenar los datos de una reserva:


Esta estructura tiene campos para el código de la película, la cédula del cliente,
el número de cupos y la ubicación de la reserva.

3. Creamos dos funciones:


- ingresarReserva: Permite al usuario ingresar una reserva y la agrega al
archivo.
- buscarYEliminarReserva: Busca y elimina una reserva por cédula del
cliente en el archivo.

4. En la función ingresarReserva, abrimos el archivo en modo de adición


(ofstream::app) para agregar datos al final del archivo:
Luego, solicitamos al usuario que ingrese los datos de la reserva y los
escribimos en el archivo.

5. En la función buscarYEliminarReserva, abrimos el archivo en modo de lectura


(ifstream) y creamos un archivo temporal (ofstream) para guardar las reservas
que no deben eliminarse.
6. Recorremos el archivo y comparamos la cédula del cliente con la
proporcionada por el usuario:
- Si encontramos una reserva que debe eliminarse, la omitimos y no la
escribimos en el archivo temporal.
- Si no encontramos una reserva que coincida con la cédula, la escribimos en
el archivo temporal.

7. Cerramos el archivo original y el archivo temporal.

8. Si encontramos y eliminamos al menos una reserva, eliminamos el archivo


original y renombramos el archivo temporal con el nombre del archivo original.
Esto se hace utilizando remove y rename.

9. En la función main, creamos un menú interactivo que permite al usuario


seleccionar una de las siguientes opciones:
- Ingresar una reserva (case 1): El usuario ingresa los datos de una reserva
utilizando la función ingresarReserva.
- Ubicar y eliminar una reserva por cédula del usuario (case 2): El
usuario ingresa la cédula del cliente para buscar y eliminar la reserva
utilizando la función buscarYEliminarReserva.
- Salir del programa (case 3): Terminamos el bucle do-while para salir del
programa.

10. Aseguramos que el archivo "reservas.txt" exista en la misma carpeta donde se


ejecuta el programa.

También podría gustarte