He encontrado este programa en la red y me parecio interesante para practicar y analizarlo. Consiste en un tipo de sistema de reserva de asientos de un avión que contiene 25 filas y 4 columnas. A su vez muestra por pantalla los asientos que van siendo ocupados y cancelados. Se los dejo a continuación (tiene algunos retoques):
Código:
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#define N_FILAS 25
#define N_COLUMNAS 4
#define LIBRE 0
#define OCUPADO 1
int mostrarMenu();
void reservarAsiento(int a[][N_COLUMNAS]);
void cancelarAsiento(int a[][N_COLUMNAS]);
void mostrarOcupacion(int a[][N_COLUMNAS]);
int main(){
SetConsoleTitle("Sistema de Reserva");
int asiento[N_FILAS][N_COLUMNAS]={0};
int resp=mostrarMenu();
while(resp!=4){
switch(resp){
case 1:
reservarAsiento(asiento);
break;
case 2:
cancelarAsiento(asiento);
break;
case 3:
mostrarOcupacion(asiento);
break;
}
resp=mostrarMenu();
}
getch();
}
int mostrarMenu(){
int resp;
printf("\n\n");
printf("1) Reservar Asiento\n");
printf("2) Cancelar Asiento\n");
printf("3) Mostrar Ocupacion\n");
printf("4) Salir\n");
scanf("%d",&resp);
return resp;
}
void reservarAsiento(int a[][N_COLUMNAS]){
int fila, col;
do {
printf("Escriba la fila del asiento a reservar: ");
scanf("%d",&fila);
}
while(fila > 25);
do {
printf("Escriba la columna del asiento a reservar: ");
scanf("%d",&col);
}
while(col > 4);
if(a[fila][col]==OCUPADO) printf("Ese asiento ya esta reservado, ingrese otro numero de asiento.\n");
else {
a[fila][col]=OCUPADO;
printf("Reserva realizada, usted reservo el asiento ubicado en la columna numero %d, fila numero %d\n",col,fila);
}
}
void cancelarAsiento(int a[][N_COLUMNAS]){
int fila, col;
printf("Escriba la fila del asiento a cancelar: ");
scanf("%d",&fila);
printf("Escriba la columna del asiento a cancelar: ");
scanf("%d",&col);
if(a[fila][col]==LIBRE) printf("Ese asiento no esta ocupado\n");
else {
a[fila][col]=LIBRE;
printf("Cancelacion realizada\n");
}
}
void mostrarOcupacion(int a[][N_COLUMNAS]){
int i,j;
for(i=0;i<N_FILAS;i++){
for(j=0;j<N_COLUMNAS;j++){
printf("fila %d, columna %d ",i,j);
if(a[i][j]==LIBRE) printf("Libre\n");
else printf("Ocupado\n");
}
}
}