Dev - C++ - Parqueadero

 
Vista:
Imágen de perfil de Andrea
Val: 10
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Parqueadero

Publicado por Andrea (3 intervenciones) el 15/11/2016 14:33:12
hola Buenos días necesito de su ayuda es que tengo un proyecto para este jueves pero no se como poner restricciones en una matriz el problema es este Crear una matriz de 8x8, simular un parqueadero de vehículos donde las posiciones de color amarillo permiten estacionar un vehículo (0 indica que esta libre, 1 indica que está ocupado), en las esquinas de color azul y las dos posiciones de color verde que indican entrada y salida del parqueadero no están habilitadas para estacionar igualmente para las posiciones de color rojo que sería por donde se movilizarían los vehículos cuando ingresan y cuando salen, el programa debe permitir indicar donde se quiere estacionar si el valor de la posición es cero(0) debe cambiar a uno (1) para indicar que se ocupó esa posición, si ya existe un uno (1) debe mostrar un mensaje que está ocupado y debe permitir cambiar la coordenada para buscar un espacio libre. Las coordenadas de parqueo deben ingresar se por teclado. Utilizar el FOR para imprimir el estado de ocupación del parqueadero (imprime toda la matriz), no usar FOR para estacionar los vehículos recuerden que deben capturar la coordenada. Tambien debe permitir retirar un vehículo y el estado de la posición cambiaría de uno (1) a cero (0)
solo tengo esto :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
int Parqueadero[8][8],Fila=0,Columna=0;
int main()
{
for(Fila=0;Fila<=7;Fila++)
   {
    for(Columna=0;Columna<=7;Columna++)
     {
     cout<< "ingrese el auto que quiere parquear  en la posicion ["<<Fila<<"]["<<Columna<<"]: ";
     cin>>Parqueadero[Fila][Columna];
     }
   }
   for(Fila=0;Fila<=7;Fila++)
      {
   	  for(Columna=0;Columna<=7;Columna++)
		 {
	     cout<<Parqueadero[Fila][Columna];
	     cout<<"  ";
		 }
	cout<<endl;
      }
      system ("pause");
}
me podrían ayudar gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Parqueadero

Publicado por agustin (522 intervenciones) el 15/11/2016 19:21:16
Lo primero seria inicializar el array por ejemplo asi:
1
2
3
4
5
6
7
8
int parqueadero [8][8]={{2,0,0,0,5,0,0,2},
                        {3,3,3,3,3,3,3,3},
                        {3,0,0,0,0,0,0,3},
                        {3,3,3,3,3,3,3,3},
                        {3,0,0,0,0,0,0,3},
                        {3,3,3,3,3,3,3,3},
                        {3,0,0,0,0,0,0,3},
                        {2,3,3,3,4,3,3,2}};
0 indica libre, 1 ocupado, 2 indica las esquinas, 3 los caminos por donde circulan los vehículos, 4 la entrada y 5 la salida.
Una vez lo tienes así solo queda solicitar las coordenadas y si es 0 se puede aparcar y para el resto de valores, dependiendo de su valor, indicas el problema que hay para poder aparcar en el. Eso puedes hacerlo con un switch.
Por otro lado, yo no usaría bucles for sino que obtendría el número de plazas vacías al inicio y luego guardo ese valor en una variable y usando un bucle do while con alguna opción para salir pues si aparco un coche decremento las plazas vacías y si se va uno la incremento y así llevo el control y se si se pueden aparcar o no quedan plazas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andrea
Val: 10
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Parqueadero

Publicado por Andrea (3 intervenciones) el 15/11/2016 22:08:52
me puedes asesorar mas detalladamente como el uso ese condicional switch es solo se manejar for ,while
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Parqueadero

Publicado por agustin (522 intervenciones) el 16/11/2016 09:54:49
Este funciona perfectamente. Ya miralo y cambia lo que desea y sobre todo estudia como funciona:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <iostream>
#include <stdlib.h>
 
using std::cout;
using std::cin;
using std::endl;
 
#define NFILAS 8
#define NCOLUMNAS 8
 
int main(int argc, char* argv[])
{
    int parqueadero[8][8]={{2,0,0,0,5,0,0,2},
                           {3,3,3,3,3,3,3,3},
                           {3,0,0,0,0,0,0,3},
                           {3,3,3,3,3,3,3,3},
                           {3,0,0,0,0,0,0,3},
                           {3,3,3,3,3,3,3,3},
                           {3,0,0,0,0,0,0,3},
                           {2,3,3,3,4,3,3,2}};
 
 
    //Obtengo el numero de plazas libres
    int fila,columna,nLibres=0,nOcupadas=0,op;
    for(fila=0;fila<NFILAS;fila++)
        for(columna=0;columna<NCOLUMNAS;columna++)
            if(parqueadero[fila][columna]== 0)
                nLibres++;
    do{
        //Solicito la operacion a realizar
        system("CLS");
        cout << "Menu: " << endl;
        cout << "1-Estacionar un vehiculo" << endl;
        cout << "2-Retirar un vehiculo" << endl;
        cout << "3-Listar estado de plazas" << endl;
        cout << "0-Salir" << endl;
        cout << "Seleccione una opcion: ";
        cin >> op;
 
        bool estacionado,liberado;
 
        switch(op){
            case 0:
                break;
            case 1:
                if(nLibres > 0){
                    do{
                        estacionado = false;
                        cout << "Introduce el numero de la fila: ";
                        cin >> fila;
                        cout << "Introduce el numero de la columna: ";
                        cin >> columna;
                        switch(parqueadero[fila][columna])
                        {
                            case 0:
                                parqueadero[fila][columna]=1;
                                nLibres--;
                                nOcupadas++;
                                estacionado= true;
                                cout << "Vehiculo aparcado satisfactoriamente" << endl;
                                break;
                            case 1:
                                cout << "Plaza ya ocupada" << endl;
                                break;
                            case 2:
                                cout << "No se puede aparcar en las esquinas" << endl;
                                break;
                            case 3:
                                cout << "No se puede aparcar en los caminos de paso" << endl;
                                break;
                            case 4:
                                cout << "No se puede aparcar en las entradas" << endl;
                                break;
                            case 5:
                                cout << "No se puede aparcar en las salidas" << endl;
                                break;
                            default:
                                cout << "Valor inesperado en esa posicion" << endl;
                        }
                    }while(estacionado != true);
                }else{
                    cout << "No quedan plazas libres" << endl;
                }
                system("PAUSE");
                break;
            case 2:
                if(nOcupadas > 0){
                    do{
                        liberado = false;
                        cout << "Introduce el numero de la fila: ";
                        cin >> fila;
                        cout << "Introduce el numero de la columna: ";
                        cin >> columna;
                        if(parqueadero[fila][columna]==1){
                            parqueadero[fila][columna]=0;
                            liberado=true;
                            nLibres++;
                            nOcupadas--;
                            cout << "El vehiculo se retiró satisfactoriamente" << endl;
                        }else{
                            cout << "La posicion indicada no esta ocupada, intentelo de nuevo" << endl;
                        }
                    }while(liberado == false);
                }else{
                    cout << "No hay plazas ocupadas" << endl;
                }
                system("PAUSE");
                break;
            case 3:
                for(fila=0;fila<NFILAS;fila++)
                    for(columna=0;columna<NCOLUMNAS;columna++)
                        if(parqueadero[fila][columna]==1)
                            cout << "plaza en fila " << fila << " columna " << columna << " ocupada" << endl;
                        else if(parqueadero[fila][columna]==0)
                            cout << "plaza en fila " << fila << " columna " << columna << " libre" << endl;
                system("PAUSE");
                break;
            default:
                cout << "Opcion incorrecta, vuelva a intentarlo" << endl;
                system("PAUSE");
        }
    }while(op != 0);
    return 0;
}

PD: Lo suyo es usar funciones para no ponerlo todo en main pero supongo que aun no las vistes asi que por eso lo pongo todo corrido en la misma funcion. De la otra forma podria quedar algo asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#include <iostream>
#include <stdlib.h>
 
using std::cout;
using std::cin;
using std::endl;
 
#define NFILAS 8
#define NCOLUMNAS 8
 
//---------------------------------------------------------------------------
 
int MostrarMenu(void)
{
    int op;
 
    //Solicito la operacion a realizar
    system("CLS");
    cout << "Menu: " << endl;
    cout << "1-Estacionar un vehiculo" << endl;
    cout << "2-Retirar un vehiculo" << endl;
    cout << "3-Listar estado de plazas" << endl;
    cout << "0-Salir" << endl;
    cout << "Seleccione una opcion: ";
    cin >> op;
    return op;
}
//---------------------------------------------------------------------------
 
int ObtenerNumPlazasLibres(int parqueadero[NFILAS][NCOLUMNAS])
{
    //Obtengo el numero de plazas libres
    int nLibres=0;
 
    for(int fila=0;fila<NFILAS;fila++)
        for(int columna=0;columna<NCOLUMNAS;columna++)
            if(parqueadero[fila][columna]== 0)
                nLibres++;
    return nLibres;
}
//---------------------------------------------------------------------------
 
void AparcarVehiculo(int parqueadero[NFILAS][NCOLUMNAS],int *nLibres,int *nOcupadas)
{
    bool estacionado;
    int fila,columna;
 
    if(*nLibres > 0){
        do{
            estacionado = false;
            cout << "Introduce el numero de la fila: ";
            cin >> fila;
            cout << "Introduce el numero de la columna: ";
            cin >> columna;
            switch(parqueadero[fila][columna])
            {
                case 0:
                    parqueadero[fila][columna]=1;
                    (*nLibres)--;
                    (*nOcupadas)++;
                    estacionado= true;
                    cout << "Vehiculo aparcado satisfactoriamente" << endl;
                    break;
                case 1:
                    cout << "Plaza ya ocupada" << endl;
                    break;
                case 2:
                    cout << "No se puede aparcar en las esquinas" << endl;
                    break;
                case 3:
                    cout << "No se puede aparcar en los caminos de paso" << endl;
                    break;
                case 4:
                    cout << "No se puede aparcar en las entradas" << endl;
                    break;
                case 5:
                    cout << "No se puede aparcar en las salidas" << endl;
                    break;
                default:
                    cout << "Valor inesperado en esa posicion" << endl;
            }
        }while(estacionado != true);
    }else{
        cout << "No quedan plazas libres" << endl;
    }
}
//---------------------------------------------------------------------------
 
void RetirarVehiculo(int parqueadero[NFILAS][NCOLUMNAS],int *nLibres,int *nOcupadas)
{
    bool liberado;
    int fila,columna;
 
    if(*nOcupadas > 0){
        do{
            liberado = false;
            cout << "Introduce el numero de la fila: ";
            cin >> fila;
            cout << "Introduce el numero de la columna: ";
            cin >> columna;
            if(parqueadero[fila][columna]==1){
                parqueadero[fila][columna]=0;
                liberado=true;
                (*nLibres)++;
                (*nOcupadas)--;
                cout << "El vehiculo se retiro satisfactoriamente" << endl;
            }else{
                cout << "La posicion indicada no esta ocupada, intentelo de nuevo" << endl;
            }
        }while(liberado == false);
    }else{
        cout << "No hay plazas ocupadas" << endl;
    }
}
//---------------------------------------------------------------------------
 
void ListarPlazas(int parqueadero[NFILAS][NCOLUMNAS])
{
    for(int fila=0;fila<NFILAS;fila++)
        for(int columna=0;columna<NCOLUMNAS;columna++)
            if(parqueadero[fila][columna]==1)
                cout << "plaza en fila " << fila << " columna " << columna << " ocupada" << endl;
            else if(parqueadero[fila][columna]==0)
                cout << "plaza en fila " << fila << " columna " << columna << " libre" << endl;
}
//---------------------------------------------------------------------------
 
int main(int argc, char* argv[])
{
    int parqueadero[8][8]={{2,0,0,0,5,0,0,2},
                           {3,3,3,3,3,3,3,3},
                           {3,0,0,0,0,0,0,3},
                           {3,3,3,3,3,3,3,3},
                           {3,0,0,0,0,0,0,3},
                           {3,3,3,3,3,3,3,3},
                           {3,0,0,0,0,0,0,3},
                           {2,3,3,3,4,3,3,2}};
    int nLibres,nOcupadas=0,op;
 
    nLibres=ObtenerNumPlazasLibres(parqueadero);
 
    do{
        op=MostrarMenu();
 
        bool estacionado,liberado;
 
        switch(op){
            case 0:
                break;
            case 1:
                AparcarVehiculo(parqueadero,&nLibres,&nOcupadas);
                system("PAUSE");
                break;
            case 2:
                RetirarVehiculo(parqueadero,&nLibres,&nOcupadas);
                system("PAUSE");
                break;
            case 3:
                ListarPlazas(parqueadero);
                system("PAUSE");
                break;
            default:
                cout << "Opcion incorrecta, vuelva a intentarlo" << endl;
                system("PAUSE");
        }
    }while(op != 0);
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar

Parqueadero

Publicado por Jorge (1 intervención) el 26/09/2019 08:00:29
Hola como podria pasar este codigo a lenguaje de programación C
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar