[C con Clase] AYUDA URGENTE TEATRO
luis alfonso jimenez mejia
viejolajimenez en gmail.com
Mar Nov 22 14:56:45 CET 2011
puedes programarlo de tal forma que se le asigne reservaciones segun el
turno de llegada implenetando una cola
El 6 de noviembre de 2011 22:20, Nicolas Ayala
<nicoayala10 en hotmail.com>escribió:
>
>
>
> hola ya lo tengo terminado el problema es q me aparece todo desordenado
> cuando lo guardo,y no me sale el de recuperar
>
>
>
>
>
>
>
>
> #include<stdio.h>
> #include<stdlib.h>
> #include<conio.h>
> #include<string.h>
> #define FILAS 15
> #define COLUMNAS 20
>
> struct nodo {
> char estado;//R= reservado, V=vendido L=libre
> long telefono;
> };
> typedef struct nodo _nodo;
>
>
>
>
>
> void menu();
> void pantalla();
> void iniciarteatro(_nodo[FILAS][COLUMNAS]); // pone todo al estado L
> void venderasiento(_nodo[FILAS][COLUMNAS]);
> void reservarasiento(_nodo[FILAS][COLUMNAS]);
> void liberarasientos(_nodo[FILAS][COLUMNAS]);
> void mostrarasientos(_nodo[FILAS][COLUMNAS]);
> void liberaruno(_nodo[FILAS][COLUMNAS]);
> void salvar(_nodo [FILAS][COLUMNAS]);
>
>
>
>
>
> void main(){
> menu();
> }
> // MENU
> void menu()
> {
> int opcion;
> _nodo teatro[FILAS][COLUMNAS];
>
>
>
>
> do{
> pantalla();
> scanf("%d",&opcion);
> switch(opcion){
> case 1:iniciarteatro(teatro);break;
> case 2:venderasiento(teatro);break;
> case 3:reservarasiento(teatro);break;
> case 4:liberarasientos(teatro);break;
> case 5:mostrarasientos(teatro);break;
> case 6:liberaruno(teatro);break;
> case 7:salvar(teatro);break;
>
>
> case 0:break;
> default: printf("opcion erronea");
> }
> getch();
> } while (opcion !=0);
> }
>
>
>
>
> void pantalla(){
> clrscr();
> printf("\n1-Iniciar teatro\n");
> printf("\n2-Vender asiento\n");
> printf("\n3-Reservar asiento\n");
> printf("\n4-Liberar Reservas\n");
> printf("\n5-Mostrar Asientos\n");
> printf("\n6-Liberar un asiento\n");
> printf("\n7-Guardar TeaTROro\n");
> printf("\n8-Recuperar Teatro\n");
>
> printf("\n0-Salir\n");
> printf("\nIngrese una opcion:\n");
> }
> //INICIAR TEATRO
>
>
>
>
> void iniciarteatro( _nodo teatro[FILAS][COLUMNAS])
> {
> int ifila,icolumna;
> int opcion;
> char liberar='L';
>
>
>
>
> printf("\nEsta seguro que decea crear una nueva planilla SI=1 NO=0\n");
> scanf("%d",&opcion);
> if (opcion!=1)
> {
> printf("\nPulse una tecla para volver al menu principal\n");
> getch();
> }
> if(opcion==1)
> {
> for(ifila=0;ifila<FILAS;ifila++)
> {
> for(icolumna=0;icolumna<COLUMNAS;icolumna++)
> {
> teatro[ifila][icolumna].estado=liberar;
> teatro[ifila][icolumna].telefono=0;
>
>
> }
> }
> printf("La planilla del teatro se ha creado con exito");
> getch();
> }
> }
>
>
> //FUNCION VENDER ASIENTO
>
>
> void venderasiento( _nodo teatro[FILAS][COLUMNAS])
> {
> int ifila,icolumna;
> char ubicacion;
> char estadovendido='V';
> char estadoreservado='R';
> long telreserva;
> mostrarasientos(teatro);
> printf("\nElige la fila y la columna de la butaca que quiere
> seleccionar\n");
>
>
>
>
> do
> {
> printf("\nSeleccione la fila\n");
> scanf("%d",&ifila);
> flushall();
> printf("\nSeleccione la columna\n");
> scanf("%d",&icolumna);
>
>
>
>
> if(estadovendido==teatro[ifila][icolumna].estado )
> {
> printf("/nEl asiento fila :%d columna :%d no esta disponible, Seleccione
> otro",ifila,icolumna);
> }
>
>
>
>
> if(estadoreservado==teatro[ifila][icolumna].estado)
> {
> printf("Este asiento esta reservado, ingrese el telefono de la reserva");
> scanf("%ld",&telreserva);
> if(telreserva !=teatro[ifila][icolumna].telefono)
> {
> printf("El telefono que ingreso no coincide con el telefono del
> asiento");
> getch();
> }
> else
> {
> teatro[ifila][icolumna].estado=estadovendido;
> ubicacion='L';
> printf("Su asiento a sido vendido");
> getch();
> }
> }
> else
> {
> teatro[ifila][icolumna].estado=estadovendido;
> ubicacion='L';
> printf("Su asiento a sido vendido");
> getch();
> }
>
>
> }while( ubicacion != 'L');
>
>
> }
>
>
> //FUNCION RESERVAR ASIENTO
>
>
> void reservarasiento(_nodo teatro[FILAS][COLUMNAS])
> {
> int icolumna,ifila;
> char reservado='R';
> char vendido='V';
> char ubicacion;
> long nuevotelefono;
> mostrarasientos(teatro);
>
>
> printf("Seleccione la butaca\n\n");
>
>
>
>
> do{
> printf("Seleccione la fila de la butaca que desea reservar\n");
> scanf("%d",&ifila);
> flushall();
> printf("Seleccione la columna de la butaca que desea reservar\n");
> scanf("%d",&icolumna);
>
>
>
>
> if(ifila<=FILAS || icolumna<=COLUMNAS)
> {
> if(teatro[ifila][icolumna].estado==vendido ||
> teatro[ifila][icolumna].estado==reservado)
> {
> printf("La butaca fila: %d columna: %d no esta
> disponible\n",ifila,icolumna);
> getch();
> }
> else
> {
> teatro[ifila][icolumna].estado=reservado;
> printf("Ingrese el numero de telefono de la reserva
> correspondiente\n\n");
> scanf("%ld",&nuevotelefono);
> teatro[ifila][icolumna].telefono=nuevotelefono;
> ubicacion='L';
> }
> }
> else
> {
> printf("\nLa fila o columna que ingreso no existe");
> }
>
>
>
>
> }while(ubicacion!='L');
> printf("La reserva se ha realizado con exito");
> getch();
>
>
> }
>
>
> //FUNCION LIBERAR ASIENTOS RESERVADOS
> void liberarasientos(_nodo teatro[FILAS][COLUMNAS])
> {
>
>
> for(int ifila=0;ifila<FILAS;ifila++)
> for (int icolumna=0;icolumna<COLUMNAS;icolumna++) {
>
>
>
>
> if(teatro[ifila][icolumna].estado=='R')
> {
> teatro[ifila][icolumna].estado='L';
> teatro[ifila][icolumna].telefono=0;
> }
> }
> printf("\nLas reservas se han liberado con exito");
> }
>
>
> //FUNCION MOSTRA TEATRO
> void mostrarasientos(_nodo teatro[FILAS][COLUMNAS]){
>
> int ifila,icolumna;
> printf("Columnas");
>
> for(icolumna=1;icolumna<=COLUMNAS;icolumna++){
> printf(" %d ",icolumna);
> }
> printf("\n");
> for(ifila=1;ifila<=FILAS;ifila++) {
> printf("\nFila %d \n ",ifila);
>
> for(icolumna=1;icolumna<=COLUMNAS;icolumna++)
> {
> if(icolumna<=COLUMNAS-11)
> {
> printf(" %c",teatro[ifila][icolumna].estado);
> }
> else
> {
> printf(" %c ",teatro[ifila][icolumna].estado);
> }
> }
> }
> }
>
>
>
> //FUNCION LIBERAR DE A UNO
> void liberaruno(_nodo teatro[FILAS][COLUMNAS])
> {
> int ifila,icolumna;
> char vendido='V';
> char reserva='R';
> char liberar='L';
> int terminardo=0;
>
>
> printf("Ingrese la fila del asiento que decea liberar:\n");
> scanf("%d",&ifila);
> printf("Ingrese la columna del asiento que decea liberar:\n");
> scanf("%d",&icolumna);
>
>
> if(ifila<=FILAS || icolumna<=COLUMNAS)
> {
>
>
> do
> {
> if(teatro[ifila][icolumna].estado==vendido)
> {
> printf("Este asiento ha sido vendido no puede
> liberarlo\n");
> getch();
> }
> if(teatro[ifila][icolumna].estado==reserva)
> {
> teatro[ifila][icolumna].estado=liberar;
> teatro[ifila][icolumna].telefono=0;
> printf("El lugar ha sido liberado con existo\n");
> terminardo=1;
> }
> else
> {
> printf("EL lugar que decea liberar ya esta libre\n");
> getch();
> }
> }while(terminardo!=1);
> }
> else
> {
> printf("La fila y la columna que ingreso no existen");
> getch();
>
> }}
>
> void salvar(_nodo teatro[FILAS][COLUMNAS])
> {
> FILE* F;
> char estado;
> long telefono;
>
> F=fopen("teatro.txt","wb+");
>
>
> for(int ifila=0;ifila<FILAS;ifila++)
> for(int icolumna=0;icolumna<COLUMNAS;icolumna++){
> estado=teatro[ifila][icolumna].estado;
> telefono=teatro[ifila][icolumna].telefono;
> fwrite(&estado,sizeof(estado),1,F);
> fwrite(&telefono,sizeof(telefono),1,F);
> }
> fclose(F);
> printf("Lista Guardada");
> system("Pause");
> }
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20111122/f22b7c8c/attachment.html>
Más información sobre la lista de distribución Cconclase