Logo Studenta

Taller 2 Archivos

¡Estudia con miles de materiales!

Vista previa del material en texto

UNIVERSIDAD MILITAR NUEVA GRANADA
DEPARTAMENTO DE TECNOLOGÍAS DEL CONOCIMIENTO
PROGRAMACIÓN II
TIPO DE DATOS ABSTRACTOS – TDA
Andrea Victoria Oviedo Camacho – 5600467
Ejercicio 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> //incluye bibliotecas 
#include<fstream>
#include<string>
using namespace std;
struct reserva //Datos de la reserva
{
 int codipeli;
 char cedula[20];
 int cupos;
 string ubic;
}res;
void ingresar_reserva(); //Funciones para determinar el menu
void Buscar_reserva();
void eliminar_reserva();
int main()
{
 int opcion = 0;
 do
 {
 system("cls");//Limpia la pantalla
 cout << "\n\n\n\t\t\t******************** MENU ********************" << endl << endl; //Muestra en pantalla el menú
 cout << "\n\n\t\t 1.INGRESE LA RESERVA";
 cout << "\n\n\t\t 2.BUSCAR RESERVA";
 cout << "\n\n\t\t 3.ELIMINAR LA RESERVA";
 cout << "\n\n\t\t 4.SALIR";
 cout << "\n\n\t\t DIGITE LA OPCION: ";
 cin >> opcion; //lee la opcion que el usuario quiere 
 switch (opcion) //Abre solucion al menu 
 {
 case 1:
 ingresar_reserva();//Llama a la funcion para ingresar reserva 
 break;
 case 2:
 Buscar_reserva();//Llama a la funcion para buscar la reserva 
 break;
 case 3:
 eliminar_reserva();//Llama a la funcion para eliminar reserva 
 break;
 case 4:
 break;
 default:
 cout << "\n\n\t\t OPCION NO VALIDA!!" << endl;
 system("pause");
 break;
 }
 } while (opcion != 4);
}
void ingresar_reserva() //Funcion para ingresar reserva 
{
 ofstream salida("Datos.txt", ios::app); //(se envia el dato) incluye datos sin borrar los anteriores 
 cout << "\n\t\tIngresar Cedula: ";//Pide el dato
 cin >> res.cedula; //guarda en la variable
 cout << "\n\t\tIngresar Codigo pelicula: ";
 cin >> res.codipeli;
 cout << "\n\t\tIngresar Numero de cupos: ";
 cin >> res.cupos;
 cout << "\n\t\tIngresar Ubicacion: ";
 cin >> res.ubic;
 salida << res.cedula;//Llena los datos en el archivo
 salida << " ";
 salida << res.codipeli;
 salida << " ";
 salida << res.cupos;
 salida << " ";
 salida << res.ubic << " ";
 salida << endl;
 salida << endl;
}
void Buscar_reserva()//funcion para buscar reserva 
{
 system("cls"); //borra la pantalla
 ifstream entrada;//flujo de entrada
 entrada.open("Datos.txt", ios::in); //leer 
 if (entrada.fail()) //si entrada falla
 {
 cout << "Hubo un error al abrir el archivo Datos.txt";
 system("pause");
 }
 else
 {
 char aux[20];//guarda el dato a buscar
 cout << "\n\n\n\t\t Introduzca la cedula del usuario: ";//ingresa dato a buscar 
 cin >> aux;
 bool se_encontro = true;
 entrada >> res.cedula;//trae el primer dato y lo guarda en cedula 
 while (!entrada.eof()) //mientras no sea el final del archivo
 {
 entrada >> res.codipeli >> res.cupos >> res.ubic;// guarda los demas datos
 if (strcmp(aux, res.cedula) == 0) //compara los datos
 {
 cout << "\n\n\n\t\t RESERVA No. " << res.cedula << endl;//muestra en pantalla los datos encontrados
 cout << "\t\t CODIGO PELICULA No. " << res.codipeli << endl;
 cout << "\t\t CUPOS : " << res.cupos << endl;
 cout << "\t\t UBICACION : " << res.ubic << endl;
 se_encontro = true;
 system("pause");
 break; //rompe el ciclo 
 }
 else
 se_encontro = false;// si es diferente a el dato 
 entrada >> res.cedula;//trae el sigueinte dato 
 }
 if (se_encontro == false)
 cout << "NO EXISTE EL REGISTRO !!" << endl;// si no se encontro la cedula 
 entrada.close();//cierra el archivo 
 system("pause");
 }
}
void eliminar_reserva()
{
 system("cls");//limpia pantalla 
 ifstream entrada2;//flujo de entrada 
 entrada2.open("Datos.txt", ios::in);//leer 
 ofstream salida;//flujo de salida
 salida.open("temp.txt", ios::out);//permite la salida 
 if (entrada2.fail())// si falla el archivo de entrada 
 {
 cout << "Hubo un error al abrir el archivo empleados.txt";//mostrar en pantalla 
 system("pause");
 }
 else
 {
 char aux2[20];// inicializa vector para cedula 
 cout << "\n\n\n\t\tIngresar Cedula para eliminar la reserva: ";//pide cedula 
 cin >> aux2;//lee cedula 
 entrada2 >> res.cedula;// trae cedula y la guarda 
 while (!entrada2.eof())//mientras no sea el final del archivo 
 {
 entrada2 >> res.codipeli >> res.cupos >> res.ubic;//guarda los demas datos 
 if (strcmp(aux2, res.cedula) == 0)//compara 
 {
 cout << "El registro se ha eliminado";//mostrar en pantalla 
 system("pause");
 }
 else
 {
 salida << res.cedula << " " << res.codipeli << " " << res.cupos << " " << res.ubic << endl;//vuelve a escribir los datos diferentes al comparado
 }
 entrada2 >> res.cedula;//guarda el siguiente dato en cedula 
 }
 salida.close();//cierra el archivo de salida
 entrada2.close();//cierra el archivo de entrada
 rename("temp.txt", "Datos.txt");//cambia el nombre 
 remove("Datos.txt");//borra el archivo datos 
 system("pause");
 }
Ejercicio 3. Elaborar un programa en C++, que permita almacenar los datos en una competencia ciclística. Para ello, debe tener en cuenta los siguientes aspectos: 
· Se debe aplicar el concepto de archivos. 
· Los datos de la competencia son: número del ciclista, el número de la etapa y el tiempo utilizado por el ciclista en esa etapa.
· Se deben almacenar los datos en un archivo. 
· Al ejecutar el programa se debe mostrar el tiempo total empleado en la competencia por cada uno de los ciclistas, indicando cuál fue el ciclista ganador.
#include <iostream> //incluye las bibliotecas 
#include <fstream>
#include <string>
using namespace std;
struct ciclistas // estructura 
{
	int num_ciclista;
	int num_etapa;
	int tiempo;
};
int main() {
	ofstream salida("Datos.txt");//flujo de salida 
	int n, etapas;//inicializar variables 
	int acum = 0;
	cout << "Ingrese la cantidad de ciclistas: " << endl;//datos para el primer for 
	cin >> n;
	cout << "Ingrese la cantidad de etapas de la competencia: " << endl;//datos para el segundo for 
	cin >> etapas;
	int* Tiempo_Total = new int[n];//determinar cuantos ciclistas 
	ciclistas* ciclista = new ciclistas[n];
	for (int i = 0; i < n; i++)//primer ciclo
	{
		cout << "Ciclista " << i + 1 << endl; //con numero del ciclista 
		cout << "Ingrese numero del ciclista: ";
		cin >> ciclista[i].num_ciclista;
		salida << "Ciclista No. " << ciclista[i].num_ciclista << endl; // se graba en datos el num. del ciclista 
		cout << endl;
		for (int j = 0; j < etapas; j++)//Segundo ciclo (anidado) con numero de etapa
		{
			cout << "Ingrese tiempo de la etapa No. " << j + 1 << ": ";
			cin >> ciclista[i].tiempo;
			acum = acum + ciclista[i].tiempo;//Guarda el tiempo en un acumulador
			salida << "Etapa No. " << j + 1 << endl;
			salida << "Tiempo: " << ciclista[i].tiempo << " min" << endl;
			salida << "Tiempode la carrera: " << acum << " min" << endl;
			cout << endl;
		}
		Tiempo_Total[i] = acum;
		acum = 0;//reinicia el acumulador 
	}
	int menor = Tiempo_Total[0];
	int NumGanador = ciclista[0].num_ciclista;
	for (int i = 0; i < n; i++) //determinar el ganador (tiempo menor)
	{
		if (Tiempo_Total[i] < menor)
		{
			menor = Tiempo_Total[i];
			NumGanador = ciclista[i].num_ciclista;//asigna el numero del ciclista 
		}
	}
	cout << endl;
	for (int i = 0; i < n; i++)
	{
		cout << "Ciclista No. " << i + 1 << endl;
		cout << "Numero del ciclista: " << ciclista[i].num_ciclista << endl;
		cout << "Tiempo de la competencia: " << Tiempo_Total[i] << endl;
		cout << endl;
	}
	cout << endl;
	cout << endl << "EL GANADOR FUE EL CICLISTA No.: " << NumGanador << " CON UN TIEMPO DE " << menor << " min.";
	system("pause");
	return 0;
}

Continuar navegando

Otros materiales