[C con Clase] AYUDA URGENTE TEATRO
Nicolas Ayala
nicoayala10 en hotmail.com
Lun Nov 7 04:20:34 CET 2011
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");
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20111107/2832b7b4/attachment.html>
Más información sobre la lista de distribución Cconclase