[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-0001.html>


Más información sobre la lista de distribución Cconclase