Está en la página 1de 9

Martínez Maldonado Sebastián Grupo: 1MV1 18/11/2020

Práctica No. 3.3: Administración de asientos de un autobús


1. Escribir un programa en Lenguaje C:
Realizar la administración de un autobús de pasajeros donde los asientos son representados en una
matriz creada con apuntadores.
1. Hacer una función que permita reservar un lugar.
2. Cancelar algún viaje liberando el espacio
3. Cancelar el camión liberando todo el autobús.
 Código
#include <iostream>
#include <malloc.h>
#include <conio.h>

/*
* Este programa es capaz de asignar y liberar los lugares de un bus utilizando
* solo las coordenadas de cada asiento
*/

using namespace std;

void menu (); // Funcion que muestra el menu de eleccion


int ** creacionbus (int **, int *, int *); // Funcion para designar el tamaño del Bus
int ** asignacion (int **, int, int); // Funcion para asignar un lugar en el Bus
int ** liberaasiento (int **, int, int); // Funcion para liberar un lugar en el Bus
int ** liberarcamion (int **, int, int); // Funcion para liberar todo el Bus
int ** tamanbus (int **, int, int); // Funcion para crear la matriz de apuntadores
int ** mostrarbus (int **, int, int); // Funcion que muestra la matriz del Bus

int main (int argc, char** argv)


{
int **bus; // Matriz del Bus
int f, c; // Filas y Columnas del Bus
char Q = 0; // Variable para salir del programa

do
{
bus = creacionbus(&*bus, &f, &c);

if ((f > 0) && (c > 0)) // Se asegura que la matriz creada posea numeros positivos
{
do
{
menu();
mostrarbus(&*bus, f, c);

Q = getch();
Martínez Maldonado Sebastián Grupo: 1MV1 18/11/2020

switch (Q) // Eleccion del Menu


{
case '1':
asignacion(&*bus, f, c);
break;

case '2':
liberaasiento(&*bus, f, c);
break;

case '3':
liberarcamion(&*bus, f, c);
break;

case'4':
break;

default:
cout << "Elija una de las opciones mostradas.";
getch();
}

}while(Q != '4');

else
{
cout << "Las filas o los asientos por fila deben ser mayor que ceros.";
getch();
}

}while(Q != '4');

return 0;
}

void menu()
{
system("cls");

cout << "Asignacion de asientos del bus" << "\n\n";

cout << "Elije una de las siguientes opciones" << "\n";


cout << "1. Solicitar un asiento" << "\n";
cout << "2. Liberar asiento" << "\n";
cout << "3. Liberar camion" << "\n";
cout << "4. Salir del programa" << "\n\n";
}
Martínez Maldonado Sebastián Grupo: 1MV1 18/11/2020

int ** creacionbus(int **a, int *f, int *c)


{
int f1, c1;

system("cls");

cout << "Asignacion de asientos del bus" << "\n\n";

cout << "Elija el numero de filas de camion: ";


cin >> f1;

cout << "Elija el numero de asientos por fila de camion: ";


cin >> c1;

cout << "\n";

a = tamanbus(&*a, f1, c1);

*f = f1;
*c = c1;

return &*a;
}

int ** asignacion (int **a, int f, int c)


{
int x, y;

cout << "\n";

cout << "Elija la fila de asientos: ";


cin >> x;
cout << "Elija el numero de asiento: ";
cin >> y;

if (((x > 0) && (x <= f)) && ((y > 0) && (y <= c)))
// Se asegura de que se elija un asiento del bus

{
if (a[x-1][y-1])
cout << "El asiento ya esta ocupado";
else
{
a[x-1][y-1] = 1;
cout << "Asiento asignado correctamente.";
}
getch();
return &*a;
}
else
Martínez Maldonado Sebastián Grupo: 1MV1 18/11/2020

cout << "Debe elegir uno de los asientos mostrados.";


getch();
}

int ** liberaasiento (int **a, int f, int c)


{
int x, y;

cout << "\n";

cout << "Elija la fila de asientos: ";


cin >> x;
cout << "Elija el numero de asiento: ";
cin >> y;

if (((x > 0) && (x <= f)) && ((y > 0) && (y <= c)))
// Se asegura de que se elija un asiento del bus

{
if (a[x-1][y-1])
{
a[x-1][y-1] = 0;
cout << "Asiento liberado correctamente.";
}
else
cout << "El asiento ya estaba liberado";
getch();
return &*a;
}
else
cout << "Debe elegir uno de los asientos mostrados.";
getch();
}

int ** liberarcamion (int **a, int f, int c)


{
cout << "\n";

for(int i=0; i < f; i++)


for(int j=0; j<c; j++)
a[i][j] = 0;

cout << "El camion ha sido vaciado.";


getch();

return &*a;
}

int ** tamanbus (int **a, int f, int c)


{
Martínez Maldonado Sebastián Grupo: 1MV1 18/11/2020

a = (int **) calloc(f, sizeof(int *));

for(int i=0;i<=f; i++)


a[i]=(int *) calloc(c, sizeof(int *));

return &*a;
}

int ** mostrarbus (int **a, int f, int c)


{
cout << "Asiento: ";
for (int i=0; i<c; i++)
{
cout<< "\t " << i + 1;
}

cout << "\n\n";

for (int i=0; i<f; i++)


{
if (i > 8)
cout << "Fila: " << i + 1;
else
cout << "Fila: " << i + 1 << "\t";

for(int j=0; j<c; j++)


{
cout<< "\t|" << a[i][j] << "|";
}

cout << "\n";

}
cout << "\n";

cout << "0: Asiento Vacio." << "\n";


cout << "1: Asiento Ocupado." << "\n";

return &*a;
}
Martínez Maldonado Sebastián Grupo: 1MV1 18/11/2020

 Resultado
Martínez Maldonado Sebastián Grupo: 1MV1 18/11/2020
Martínez Maldonado Sebastián Grupo: 1MV1 18/11/2020
Martínez Maldonado Sebastián Grupo: 1MV1 18/11/2020

También podría gustarte