El problema es que cada objeto funciona correctamente con sus método excepto a la hora de ocupar la silla(metodo "ocupar"), trabajo con una matriz despues de inicializarla y convertir en 0 todos sus datos claramente, que al intentar ocupar una silla me retorna que ya estan ocupadas... llevo mucho en este problema y me serían de gran ayuda
Cita:
O si tienen otra solución al problema de una sala de un teatro con X filas y Y columnas y ocuparlas a través de consola mientras que este orientada a objetos sería perfecto #include <iostream>
//~ #include <stdlib.h>
//~ #include <string>
//~ #include <vector>
using namespace std;
class Sala{
public:
Sala();
void iniciar(int s[6][12]);
void imprimir(int s[6][12]);
void ocupar(int s[6][12]);
void menuSala();
void setear();
void buscar();
void sillas();
};
Sala Sala1A1;
Sala Sala1B1;
Sala Sala1C1;
Sala Sala2A1;
Sala Sala2B1;
Sala Sala2C1;
Sala Sala3A;
Sala Sala3B;
Sala Sala3C;
Sala::Sala(){;};
Sala salaX;
void Sala::iniciar(int s[6][12]) {
int x, y;
for(x=0;x<6;x++) {
for(y=0;y<12;y++) {
s[x][y] = 0;
}
}
}
void Sala::imprimir(int s[6][12]) {
int x, y;
int libre=0, libres=0;
cout << " --------------------- " <<endl;
cout << " | | " <<endl;
cout << " --------------------- " <<endl;
cout << endl;
for(x=0;x<6;x++) {
cout <<"Fila " << x+1 << " ";
for(y=0;y<12;y++) {
if (s[x][y] == 1) {
cout<<" X ";
} else {
cout<<" - ";
libre++;
libres++;
}
}
cout << " ... Libres " << libre << endl;
libre=0;
}
cout<<"Asiento 01 02 03 04 05 06 07 08 09 10 11 12"<<endl;
cout<<libres<< " Asientos disponibles"<<endl;
}
void Sala::ocupar(int s[6][12]) {
int x, y;
int reserva[6][12];
iniciar(reserva);
imprimir(s);
cout << "\nElija la fila y butaca que quiera coger, para parar de reservar introduzca un 0 en la fila...\n";
do {
cout << "Fila: ";
cin >> x;
if (x != 0) {
cout << "Butaca: ";
cin >> y;
if (reserva[x-1][y-1] == 0 && s[x-1][y-1] == 0){
reserva[x-1][y-1] = 1;}
else
cout <<"\nLa butaca " << x << " de la fila " << y <<" esta ocupada, reserve otra localidad...\n";
}
} while(x != 0);
for (x=0;x<6;x++) {
for(y=0;y<12;y++) {
if (reserva[x][y] == 1) {
s[x][y] = 1;
}
}
}
cout << "\n12a ha reservado sus butacas, gracias.\n";}
void Sala::setear(){
int sala[6][12];
cout << "Que sala desea reiniciar?" << endl;
cout << "1) Reiniciar sala 1 en la franja 1" << endl;
cout << "2) Reiniciar sala 1 en la franja 2" << endl;
cout << "3) Reiniciar sala 1 en la franja 3" << endl;
cout << "4) Reiniciar sala 2 en la franja 1" << endl;
cout << "5) Reiniciar sala 2 en la franja 2" << endl;
cout << "6) Reiniciar sala 2 en la franja 3" << endl;
cout << "7) Reiniciar sala 3 en la franja 1" << endl;
cout << "8) Reiniciar sala 3 en la franja 2" << endl;
cout << "9) Reiniciar sala 3 en la franja 3" << endl;
cout << "0) Reiniciar todas" << endl;
int opc;
cin >> opc;
switch(opc){
case 1: Sala1A1.iniciar(sala); break;
case 2: Sala1B1.iniciar(sala); break;
case 3: Sala1C1.iniciar(sala); break;
case 4: Sala2A1.iniciar(sala); break;
case 5: Sala2B1.iniciar(sala); break;
case 6: Sala2C1.iniciar(sala); break;
case 7: Sala3A.iniciar(sala); break;
case 8: Sala3B.iniciar(sala); break;
case 9: Sala3C.iniciar(sala); break;
case 0: Sala1A1.iniciar(sala);
Sala1B1.iniciar(sala);
Sala1C1.iniciar(sala);
Sala2A1.iniciar(sala);
Sala2B1.iniciar(sala);
Sala2C1.iniciar(sala);
Sala3A.iniciar(sala);
Sala3B.iniciar(sala);
Sala3C.iniciar(sala); menuSala(); break;
default: cout << "Numero ingresado incorrecto" << endl;}}
void Sala::buscar(){
int opc;
int sala[6][12];
cout << "Que sala desea ver? " << endl;
cout << "1) Ver sala 1" << endl;
cout << "2) Ver sala 2" << endl;
cout << "3) Ver sala 3" << endl;
cin >> opc;
switch(opc){
case 1: cout << "En que franja desea ver la sala" << endl;
cout << "1) Ver franja 1 (14:00 - 16:30)" << endl;
cout << "2) Ver franja 2 (16:30 - 19:00)" << endl;
cout << "3) Ver franja 3 (19:00 - 21:00)" << endl;
cin >> opc;
switch(opc){
cin >> opc;
case 1: Sala1A1.imprimir(sala); menuSala(); break;
case 2: Sala1B1.imprimir(sala); menuSala(); break;
case 3: Sala1C1.imprimir(sala); menuSala(); break;
default: cout << "error" << endl;}; break;
case 2: cout << "En que franja desea ver la sala" << endl;
cout << "1) Ver franja 1 (14:00 - 16:30)" << endl;
cout << "2) Ver franja 2 (16:30 - 19:00)" << endl;
cout << "3) Ver franja 3 (19:00 - 21:00)" << endl;
cin >> opc;
switch(opc){
case 1: Sala2A1.imprimir(sala); menuSala(); break;
case 2: Sala2B1.imprimir(sala); menuSala(); break;
case 3: Sala2C1.imprimir(sala); menuSala(); break;
default: cout << "error" << endl;}; break;
case 3: cout << "En que franja desea ver la sala" << endl;
cout << "1) Ver franja 1 (14:00 - 16:30)" << endl;
cout << "2) Ver franja 2 (16:30 - 19:00)" << endl;
cout << "3) Ver franja 3 (19:00 - 21:00)" << endl;
cin >> opc;
switch(opc){
case 1: Sala3A.imprimir(sala); menuSala(); break;
case 2: Sala3B.imprimir(sala); menuSala(); break;
case 3: Sala3C.imprimir(sala); menuSala(); break;
default: cout << "error" << endl;}; break;
default: cout << "Error" << endl;}}
void Sala::sillas(){
int sala[6][12];
int opc;
cout << "En que sala desea reservar?" << endl;
cout << "1) Reservar en sala 1" << endl;
cout << "2) Reservar en sala 2" << endl;
cout << "3) Reservar en sala 3" << endl;
cin >> opc;
switch(opc){
case 1: cout << "En que franja desea su reserva?" << endl;
cout << "1) Reservar en la franja 1" << endl;
cout << "2) Resarvar en la franja 2" << endl;
cout << "3) Resarvar en la franja 3" << endl;
cin >> opc;
switch(opc){
case 1: Sala1A1.ocupar(sala); break;
case 2: Sala1B1.ocupar(sala); break;
case 3: Sala1C1.ocupar(sala); break;
default: cout << "error" <<endl;}; break;
case 2: cout << "En que franja desea su reserva?" << endl;
cout << "1) Reservar en la franja 1" << endl;
cout << "2) Resarvar en la franja 2" << endl;
cout << "3) Resarvar en la franja 3" << endl;
cin >> opc;
switch(opc){
case 1: Sala2A1.ocupar(sala); break;
case 2: Sala2B1.ocupar(sala); break;
case 3: Sala2C1.ocupar(sala); break;
default: cout << "error" <<endl;}; break;
case 3: cout << "En que franja desea su reserva?" << endl;
cout << "1) Reservar en la franja 1" << endl;
cout << "2) Resarvar en la franja 2" << endl;
cout << "3) Resarvar en la franja 3" << endl;
cin >> opc;
switch(opc){
case 1: Sala3A.ocupar(sala); break;
case 2: Sala3B.ocupar(sala); break;
case 3: Sala3C.ocupar(sala); break;
default: cout << "error" <<endl;}; break;}}
void Sala::menuSala() {
int opc;
cout <<"1. Iniciar sala" << endl;
cout <<"2. Imprimir la ocupación de la sala"<<endl;
cout <<"3. Ocupar butaca"<< endl;
cout <<"0. Salir"<<endl;
cout <<"Elije una opcion: ";
cin >> opc;
switch(opc){
case 1: salaX.setear(); menuSala(); break;
case 2: salaX.buscar(); menuSala(); break;
case 3: salaX.sillas(); menuSala(); break;
default: cout <<"n\nNo ha introducido una opción valida"<<endl;}}
int main(){
salaX.menuSala();
return 0;}
//~ #include <stdlib.h>
//~ #include <string>
//~ #include <vector>
using namespace std;
class Sala{
public:
Sala();
void iniciar(int s[6][12]);
void imprimir(int s[6][12]);
void ocupar(int s[6][12]);
void menuSala();
void setear();
void buscar();
void sillas();
};
Sala Sala1A1;
Sala Sala1B1;
Sala Sala1C1;
Sala Sala2A1;
Sala Sala2B1;
Sala Sala2C1;
Sala Sala3A;
Sala Sala3B;
Sala Sala3C;
Sala::Sala(){;};
Sala salaX;
void Sala::iniciar(int s[6][12]) {
int x, y;
for(x=0;x<6;x++) {
for(y=0;y<12;y++) {
s[x][y] = 0;
}
}
}
void Sala::imprimir(int s[6][12]) {
int x, y;
int libre=0, libres=0;
cout << " --------------------- " <<endl;
cout << " | | " <<endl;
cout << " --------------------- " <<endl;
cout << endl;
for(x=0;x<6;x++) {
cout <<"Fila " << x+1 << " ";
for(y=0;y<12;y++) {
if (s[x][y] == 1) {
cout<<" X ";
} else {
cout<<" - ";
libre++;
libres++;
}
}
cout << " ... Libres " << libre << endl;
libre=0;
}
cout<<"Asiento 01 02 03 04 05 06 07 08 09 10 11 12"<<endl;
cout<<libres<< " Asientos disponibles"<<endl;
}
void Sala::ocupar(int s[6][12]) {
int x, y;
int reserva[6][12];
iniciar(reserva);
imprimir(s);
cout << "\nElija la fila y butaca que quiera coger, para parar de reservar introduzca un 0 en la fila...\n";
do {
cout << "Fila: ";
cin >> x;
if (x != 0) {
cout << "Butaca: ";
cin >> y;
if (reserva[x-1][y-1] == 0 && s[x-1][y-1] == 0){
reserva[x-1][y-1] = 1;}
else
cout <<"\nLa butaca " << x << " de la fila " << y <<" esta ocupada, reserve otra localidad...\n";
}
} while(x != 0);
for (x=0;x<6;x++) {
for(y=0;y<12;y++) {
if (reserva[x][y] == 1) {
s[x][y] = 1;
}
}
}
cout << "\n12a ha reservado sus butacas, gracias.\n";}
void Sala::setear(){
int sala[6][12];
cout << "Que sala desea reiniciar?" << endl;
cout << "1) Reiniciar sala 1 en la franja 1" << endl;
cout << "2) Reiniciar sala 1 en la franja 2" << endl;
cout << "3) Reiniciar sala 1 en la franja 3" << endl;
cout << "4) Reiniciar sala 2 en la franja 1" << endl;
cout << "5) Reiniciar sala 2 en la franja 2" << endl;
cout << "6) Reiniciar sala 2 en la franja 3" << endl;
cout << "7) Reiniciar sala 3 en la franja 1" << endl;
cout << "8) Reiniciar sala 3 en la franja 2" << endl;
cout << "9) Reiniciar sala 3 en la franja 3" << endl;
cout << "0) Reiniciar todas" << endl;
int opc;
cin >> opc;
switch(opc){
case 1: Sala1A1.iniciar(sala); break;
case 2: Sala1B1.iniciar(sala); break;
case 3: Sala1C1.iniciar(sala); break;
case 4: Sala2A1.iniciar(sala); break;
case 5: Sala2B1.iniciar(sala); break;
case 6: Sala2C1.iniciar(sala); break;
case 7: Sala3A.iniciar(sala); break;
case 8: Sala3B.iniciar(sala); break;
case 9: Sala3C.iniciar(sala); break;
case 0: Sala1A1.iniciar(sala);
Sala1B1.iniciar(sala);
Sala1C1.iniciar(sala);
Sala2A1.iniciar(sala);
Sala2B1.iniciar(sala);
Sala2C1.iniciar(sala);
Sala3A.iniciar(sala);
Sala3B.iniciar(sala);
Sala3C.iniciar(sala); menuSala(); break;
default: cout << "Numero ingresado incorrecto" << endl;}}
void Sala::buscar(){
int opc;
int sala[6][12];
cout << "Que sala desea ver? " << endl;
cout << "1) Ver sala 1" << endl;
cout << "2) Ver sala 2" << endl;
cout << "3) Ver sala 3" << endl;
cin >> opc;
switch(opc){
case 1: cout << "En que franja desea ver la sala" << endl;
cout << "1) Ver franja 1 (14:00 - 16:30)" << endl;
cout << "2) Ver franja 2 (16:30 - 19:00)" << endl;
cout << "3) Ver franja 3 (19:00 - 21:00)" << endl;
cin >> opc;
switch(opc){
cin >> opc;
case 1: Sala1A1.imprimir(sala); menuSala(); break;
case 2: Sala1B1.imprimir(sala); menuSala(); break;
case 3: Sala1C1.imprimir(sala); menuSala(); break;
default: cout << "error" << endl;}; break;
case 2: cout << "En que franja desea ver la sala" << endl;
cout << "1) Ver franja 1 (14:00 - 16:30)" << endl;
cout << "2) Ver franja 2 (16:30 - 19:00)" << endl;
cout << "3) Ver franja 3 (19:00 - 21:00)" << endl;
cin >> opc;
switch(opc){
case 1: Sala2A1.imprimir(sala); menuSala(); break;
case 2: Sala2B1.imprimir(sala); menuSala(); break;
case 3: Sala2C1.imprimir(sala); menuSala(); break;
default: cout << "error" << endl;}; break;
case 3: cout << "En que franja desea ver la sala" << endl;
cout << "1) Ver franja 1 (14:00 - 16:30)" << endl;
cout << "2) Ver franja 2 (16:30 - 19:00)" << endl;
cout << "3) Ver franja 3 (19:00 - 21:00)" << endl;
cin >> opc;
switch(opc){
case 1: Sala3A.imprimir(sala); menuSala(); break;
case 2: Sala3B.imprimir(sala); menuSala(); break;
case 3: Sala3C.imprimir(sala); menuSala(); break;
default: cout << "error" << endl;}; break;
default: cout << "Error" << endl;}}
void Sala::sillas(){
int sala[6][12];
int opc;
cout << "En que sala desea reservar?" << endl;
cout << "1) Reservar en sala 1" << endl;
cout << "2) Reservar en sala 2" << endl;
cout << "3) Reservar en sala 3" << endl;
cin >> opc;
switch(opc){
case 1: cout << "En que franja desea su reserva?" << endl;
cout << "1) Reservar en la franja 1" << endl;
cout << "2) Resarvar en la franja 2" << endl;
cout << "3) Resarvar en la franja 3" << endl;
cin >> opc;
switch(opc){
case 1: Sala1A1.ocupar(sala); break;
case 2: Sala1B1.ocupar(sala); break;
case 3: Sala1C1.ocupar(sala); break;
default: cout << "error" <<endl;}; break;
case 2: cout << "En que franja desea su reserva?" << endl;
cout << "1) Reservar en la franja 1" << endl;
cout << "2) Resarvar en la franja 2" << endl;
cout << "3) Resarvar en la franja 3" << endl;
cin >> opc;
switch(opc){
case 1: Sala2A1.ocupar(sala); break;
case 2: Sala2B1.ocupar(sala); break;
case 3: Sala2C1.ocupar(sala); break;
default: cout << "error" <<endl;}; break;
case 3: cout << "En que franja desea su reserva?" << endl;
cout << "1) Reservar en la franja 1" << endl;
cout << "2) Resarvar en la franja 2" << endl;
cout << "3) Resarvar en la franja 3" << endl;
cin >> opc;
switch(opc){
case 1: Sala3A.ocupar(sala); break;
case 2: Sala3B.ocupar(sala); break;
case 3: Sala3C.ocupar(sala); break;
default: cout << "error" <<endl;}; break;}}
void Sala::menuSala() {
int opc;
cout <<"1. Iniciar sala" << endl;
cout <<"2. Imprimir la ocupación de la sala"<<endl;
cout <<"3. Ocupar butaca"<< endl;
cout <<"0. Salir"<<endl;
cout <<"Elije una opcion: ";
cin >> opc;
switch(opc){
case 1: salaX.setear(); menuSala(); break;
case 2: salaX.buscar(); menuSala(); break;
case 3: salaX.sillas(); menuSala(); break;
default: cout <<"n\nNo ha introducido una opción valida"<<endl;}}
int main(){
salaX.menuSala();
return 0;}