<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'><div dir='ltr'>
<br><br><div><br>

<meta http-equiv="Content-Type" content="text/html; charset=unicode">
<meta name="Generator" content="Microsoft SafeHTML">
<style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Tahoma;}

</style>

<div dir="ltr">
<font style="font-size: 12pt;" size="3">hola ya lo tengo terminado el problema es q me aparece todo desordenado cuando lo guardo,y no me sale el de recuperar</font><br><br><br><br><br><br><br><br>#include<stdio.h><br>#include<stdlib.h><br>#include<conio.h><br>#include<string.h><br>#define FILAS 15<br>#define COLUMNAS 20<br><br>struct nodo {<br>      char estado;//R= reservado, V=vendido L=libre<br>      long telefono;<br>};<br>typedef struct nodo _nodo;<br><br><br><br><br><br>void menu();<br>void pantalla();<br>void iniciarteatro(_nodo[FILAS][COLUMNAS]); // pone todo al estado L<br>void venderasiento(_nodo[FILAS][COLUMNAS]);<br>void reservarasiento(_nodo[FILAS][COLUMNAS]);<br>void liberarasientos(_nodo[FILAS][COLUMNAS]);<br>void mostrarasientos(_nodo[FILAS][COLUMNAS]);<br>void liberaruno(_nodo[FILAS][COLUMNAS]);<br>void salvar(_nodo [FILAS][COLUMNAS]);<br><br><br><br><br>void main(){<br>menu();<br>}<br>                        // MENU<br>void menu()<br>{<br>int opcion;<br>_nodo teatro[FILAS][COLUMNAS];<br><br><br><br><br>do{<br>   pantalla();<br>   scanf("%d",&opcion);<br>   switch(opcion){<br>        case 1:iniciarteatro(teatro);break;<br>        case 2:venderasiento(teatro);break;<br>        case 3:reservarasiento(teatro);break;<br>        case 4:liberarasientos(teatro);break;<br>             case 5:mostrarasientos(teatro);break;<br>             case 6:liberaruno(teatro);break;<br>             case 7:salvar(teatro);break;<br><br>           case 0:break;<br>             default: printf("opcion erronea");<br>        }<br>             getch();<br>             } while (opcion !=0);<br>}<br><br><br><br><br>void pantalla(){<br>        clrscr();<br>             printf("\n1-Iniciar teatro\n");<br>         printf("\n2-Vender asiento\n");<br>             printf("\n3-Reservar asiento\n");<br>             printf("\n4-Liberar Reservas\n");<br>             printf("\n5-Mostrar Asientos\n");<br>             printf("\n6-Liberar un asiento\n");<br>             printf("\n7-Guardar TeaTROro\n");<br>             printf("\n8-Recuperar Teatro\n");<br>             printf("\n0-Salir\n");<br>             printf("\nIngrese una opcion:\n");<br>}<br>             //INICIAR TEATRO<br><br><br><br><br>void iniciarteatro( _nodo teatro[FILAS][COLUMNAS])<br>{<br>int ifila,icolumna;<br>int opcion;<br>char liberar='L';<br><br><br><br><br>printf("\nEsta seguro que decea crear una nueva planilla SI=1 NO=0\n");<br>scanf("%d",&opcion);<br>if (opcion!=1)<br>{<br>printf("\nPulse una tecla para volver al menu principal\n");<br>getch();<br>}<br>if(opcion==1)<br>{<br>for(ifila=0;ifila<FILAS;ifila++)<br>{<br>for(icolumna=0;icolumna<COLUMNAS;icolumna++)<br>{<br>teatro[ifila][icolumna].estado=liberar;<br>teatro[ifila][icolumna].telefono=0;<br><br><br>}<br>}<br>printf("La planilla del teatro se ha creado con exito");<br>getch();<br>}<br>}<br><br><br>             //FUNCION VENDER ASIENTO<br><br><br>void venderasiento( _nodo teatro[FILAS][COLUMNAS])<br>{<br>int ifila,icolumna;<br>char ubicacion;<br>char estadovendido='V';<br>char estadoreservado='R';<br>long telreserva;<br>mostrarasientos(teatro);<br>printf("\nElige la fila y la columna de la butaca que quiere seleccionar\n");<br><br><br><br><br>do<br>{<br>printf("\nSeleccione la fila\n");<br>scanf("%d",&ifila);<br>flushall();<br>printf("\nSeleccione la columna\n");<br>scanf("%d",&icolumna);<br><br><br><br><br>if(estadovendido==teatro[ifila][icolumna].estado )<br>{<br>printf("/nEl asiento fila :%d columna :%d no esta disponible, Seleccione otro",ifila,icolumna);<br>}<br><br><br><br><br>if(estadoreservado==teatro[ifila][icolumna].estado)<br>{<br>printf("Este asiento esta reservado, ingrese el telefono de la reserva");<br>scanf("%ld",&telreserva);<br>        if(telreserva !=teatro[ifila][icolumna].telefono)<br>        {<br>        printf("El telefono que ingreso no coincide con el telefono del asiento");<br>        getch();<br>        }<br>        else<br>        {<br>        teatro[ifila][icolumna].estado=estadovendido;<br>        ubicacion='L';<br> printf("Su asiento a sido vendido");<br> getch();<br>        }<br>}<br>else<br>      {<br>      teatro[ifila][icolumna].estado=estadovendido;<br>      ubicacion='L';<br>  printf("Su asiento a sido vendido");<br>      getch();<br>      }<br><br><br>}while( ubicacion != 'L');<br><br><br>}<br><br><br>                  //FUNCION RESERVAR ASIENTO<br><br><br>void reservarasiento(_nodo teatro[FILAS][COLUMNAS])<br>{<br>int icolumna,ifila;<br>char reservado='R';<br>char vendido='V';<br>char ubicacion;<br>long nuevotelefono;<br>mostrarasientos(teatro);<br><br><br>printf("Seleccione la butaca\n\n");<br><br><br><br><br>do{<br>      printf("Seleccione la fila de la butaca que desea reservar\n");<br>      scanf("%d",&ifila);<br>      flushall();<br>      printf("Seleccione la columna de la butaca que desea reservar\n");<br>      scanf("%d",&icolumna);<br><br><br><br><br>if(ifila<=FILAS || icolumna<=COLUMNAS)<br>{<br>if(teatro[ifila][icolumna].estado==vendido || teatro[ifila][icolumna].estado==reservado)<br>      {<br>      printf("La butaca fila: %d columna: %d no esta disponible\n",ifila,icolumna);<br>      getch();<br>}<br>else<br>      {<br>          teatro[ifila][icolumna].estado=reservado;<br>      printf("Ingrese el numero de telefono de la reserva correspondiente\n\n");<br>      scanf("%ld",&nuevotelefono);<br>      teatro[ifila][icolumna].telefono=nuevotelefono;<br>      ubicacion='L';<br>          }<br>}<br>else<br>{<br>printf("\nLa fila o columna que ingreso no existe");<br>}<br><br><br><br><br>}while(ubicacion!='L');<br>printf("La reserva se ha realizado con exito");<br>getch();<br><br><br>}<br><br><br>          //FUNCION LIBERAR ASIENTOS RESERVADOS<br>void liberarasientos(_nodo teatro[FILAS][COLUMNAS])<br>{<br><br><br>for(int ifila=0;ifila<FILAS;ifila++)<br>for (int icolumna=0;icolumna<COLUMNAS;icolumna++) {<br><br><br><br><br>if(teatro[ifila][icolumna].estado=='R')<br>{<br>teatro[ifila][icolumna].estado='L';<br>teatro[ifila][icolumna].telefono=0;<br>}<br>}<br>printf("\nLas reservas se han liberado con exito");<br>}<br><br><br>        //FUNCION MOSTRA TEATRO<br>void mostrarasientos(_nodo teatro[FILAS][COLUMNAS]){<br><br>int ifila,icolumna;<br>printf("Columnas");<br><br>for(icolumna=1;icolumna<=COLUMNAS;icolumna++){<br>printf(" %d ",icolumna);                   <br>}<br>printf("\n");<br>for(ifila=1;ifila<=FILAS;ifila++) {<br>   printf("\nFila %d \n       ",ifila);<br>   for(icolumna=1;icolumna<=COLUMNAS;icolumna++)<br>   {<br>   if(icolumna<=COLUMNAS-11)<br>   {<br>   printf("  %c",teatro[ifila][icolumna].estado);<br>   }<br>   else<br>   {<br>   printf("  %c ",teatro[ifila][icolumna].estado);<br>   }<br>   }<br>                   }<br>}<br><br><br><br>        //FUNCION LIBERAR DE A UNO<br>void liberaruno(_nodo teatro[FILAS][COLUMNAS])<br>{<br>int ifila,icolumna;<br>char vendido='V';<br>char reserva='R';<br>char liberar='L';<br>int terminardo=0;<br><br><br>printf("Ingrese la fila del asiento que decea liberar:\n");<br>scanf("%d",&ifila);<br>printf("Ingrese la columna del asiento que decea liberar:\n");<br>scanf("%d",&icolumna);<br><br><br>if(ifila<=FILAS || icolumna<=COLUMNAS)<br>{<br><br><br>do<br>{<br>if(teatro[ifila][icolumna].estado==vendido)<br>                   {<br>                   printf("Este asiento ha sido vendido no puede liberarlo\n");<br>                   getch();<br>                   }<br>if(teatro[ifila][icolumna].estado==reserva)<br>                   {<br>            teatro[ifila][icolumna].estado=liberar;<br>            teatro[ifila][icolumna].telefono=0;<br>            printf("El lugar ha sido liberado con existo\n");<br>            terminardo=1;<br>            }<br>else<br>            {<br>             printf("EL lugar que decea liberar ya esta libre\n");<br>             getch();<br>            }<br>}while(terminardo!=1);<br>}<br>else<br>{<br>printf("La fila y la columna que ingreso no existen");<br>getch();<br><br>}}<br><br>void salvar(_nodo teatro[FILAS][COLUMNAS])<br>{<br>FILE* F;<br>char estado;<br>long telefono;<br><br>F=fopen("teatro.txt","wb+");<br><br>for(int ifila=0;ifila<FILAS;ifila++)<br>for(int icolumna=0;icolumna<COLUMNAS;icolumna++){<br>estado=teatro[ifila][icolumna].estado;<br>telefono=teatro[ifila][icolumna].telefono;<br>fwrite(&estado,sizeof(estado),1,F);<br>fwrite(&telefono,sizeof(telefono),1,F);<br>}<br>fclose(F);<br>printf("Lista Guardada");<br>system("Pause");<br>}<br></div></div>                                         </div></body>
</html>