[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