[C con Clase] Programa parqueadero
David Fire
ddfire en gmail.com
Mie Nov 11 19:45:30 CET 2009
estas comparando el caracter 3 con el numero 3
osea ' 3 ' =? 3 la respuesta es nooo!!!
ponele " ' ' " a los numeros en los cases...
David
El 11 de noviembre de 2009 15:17, Cesar Cortes Baron
<cesco17 en hotmail.com>escribió:
> Hola Tengo este codigo con el siguiente problema, en el menu de opciones
> de 1 a 5, pongo en el switch por defecto un mensaje, todo funciona bien
> siempre y cuando la opcion digitada sea un numero, si es otro caracter el
> programa se bloquea. ahora cambie la variable opcion del switch por una
> variable de tipo char pero igual el programa no funciona bien, por favor
> ayuda.
>
>
> este es el codigo:
>
> #include <stdlib.h>
> #include <conio.h>
> #include <iostream.h>
> void ingresaAuto(int disp);
> int saleAuto();
> void cuadro(void);
> void contadores(int autos); /* Función de la opción 4, imprime cuántas
> personas entraron y cuántos coches salieron */
> int calcDisp(); /* Función que debuelve el numero de indice para la
> variable placas[11] */
> void menu();
>
> char *placas[11] = {"xxxxxx", "xxxxxx", "xxxxxx", "xxxxxx", "xxxxxx",
> "xxxxxx", "xxxxxx", "xxxxxx", "xxxxxx", "xxxxxx", }; /* Cambiado el arreglo
> placas por un array de cadenas */
>
> int main()
> {
> int cupo=10, contSal=0, i, disp; /* contBol y contSal son los
> contadores para la opción 4 */
> char opcion=0;
>
> while (opcion!='5') {
> menu();
> cout<<"\nIngrese el numero de la opcion: ";
> cin>>opcion;
>
> switch (opcion)
> {
> case 1:
> if (cupo > 0) {
> ingresaAuto(calcDisp());
> cupo--; /* se resta 1 al cupo total, siempre y cuando cupo sea
> mayor que 0 */
> } else {
> printf("No hay suficiente cupo.\n");
> getch();
> }
> break;
>
> case 2: if (cupo<10)
> {
> if (saleAuto()==0) { /* igual que con regBoleto pero esta vez
> también suma 1 a cupo */
> cupo++;
> contSal++;
> cout<<"Ha salido un auto del parqueadero. \n";
> getch();
> }
> }
> else
> cout<<"No han ingresado autos al parqueadero. "<<endl;
> getch();
>
> break;
> case 3:
> contadores(contSal);
> break;
> case 4:
> for (i=0; i < 10; i++)
> cout<<"\n Lugar "<< i+1<<" "<< placas[i]<<endl;
> cout<<"\n\n Lugar mas cercano disponible: "<< calcDisp()+1; /*
> calcDisp calcula el siguiente lugar donde se guardara el carro, siendo éste
> el mas bajo disponible */
> getch();
> break;
> case 5:
> break;
>
> default:
> cout<<"Opcion incorrecta.\n";
> getch();
> break;
> }
> }
>
>
> }
> /* Funciones */
>
> void ingresaAuto(int disp)
> {
> char placasTmp[6];
> cout<<"\nIngrese los digitos de la placa del auto: ";
> cin>>placasTmp;
> placas[disp] = (char *) malloc(sizeof placasTmp); /*asigna un bloque de
> memoria de bytes consecutivos en memoria para almacenar objetos devuelve un
> puntero generico*/
> strcpy(placas[disp], placasTmp); /* copia la cadena2 en la cadena1 y
> devuelve un puntero a cadena1*/
> }
>
> int saleAuto()
> {
> char placas2[20];
> int i;
>
> cout<<"\nIngrese las placas del auto: ";
> cin>>placas2;
>
> for (i=0; i<10; i++) {
> if (strcmp(placas2, placas[i]) == 0) {
> strcpy(placas[i], "xxxxxx|");
> return 0;
> }
> }
> cout<<"El numero es incorrecto o no fue registrado";
> getch();
> return 1;
> }
>
>
>
> void contadores(int autos)
> {
>
> if (autos <= 0) {
> cout<<"No han salido autos.";
> getch();
> } else {
> cout<<"Han salido "<<autos<<" autos del parqueadero."<<endl;
> getch();
> }
> }
>
> int calcDisp()
> {
> int i;
> for (i=0; i<10; i++) {
> if (strcmp(placas[i], "xxxxxx") == 0)
> return i;
> }
> return -1;
> }
>
> void menu()
> {
> clrscr();
> cout<<"
> |========================================================================|
> \n";
> cout<<" | ****** BIENVENIDO
> ****** | \n";
> cout<<"
> |========================================================================|
> \n";
> cout<<"
> | |
> \n";
> cout<<"
> | |
> \n";
> cout<<" | 1) Registrar los autos en el
> parqueadero | \n";
> cout<<" | 2) Sacar autos del
> parqueadero | \n";
> cout<<" | 3) autos que
> salieron | \n";
> cout<<" | 4) Ver placas ingresadas y espacios
> diponibles | \n";
> cout<<" | 5)
> Salir | \n";
> cout<<"
> | |
> \n";
> cout<<"
> | |
> \n";
>
> cout<<"
> |========================================================================|
> \n";
> }
>
>
> ------------------------------
> Get news, entertainment and everything you care about at Live.com. Check
> it out! <http://www.live.com/getstarted.aspx>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
--
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20091111/742b2208/attachment.html>
Más información sobre la lista de distribución Cconclase