Ver Mensaje Individual
  #10 (permalink)  
Antiguo 01/02/2015, 15:40
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Problemas con varios operadores lógicos (&&,||) dentro de IF

Cita:
Iniciado por vangodp Ver Mensaje
Prueba eso:

Código C:
Ver original
  1. //Entrada de datos
  2.     printf("Ingrese tipo de veh%cculo (Cami%cn = C/Autom%cvil = A): ", 161, 162, 162, 162);
  3.     scanf("%c%*c", &lcTipoVehiculo);  //para leer un char %c.
  4.  
  5.     printf("Hora de alta congesti%cn (S/N): ", 162, 162);
  6.     scanf("%c%*c", &lcHoraAlta);
  7.  
  8.     printf("N%cmero de pasajeros: ", 163);
  9.     scanf("%d%*c", &liNumeroPasajeros);  //para leer un int %d

El %*c ignora la tecla enter, esta es la causante de problemas traz leer muchos caracteres intercalados con enters de por medio.
Si vas a leer una letra recuerde que pulsas enter para decir que ya has introducido el char, o sea que tienes 2 chars por el precio de 1. O bien necesitas limpiar el buffer antes y/o después de cada scanf, o bien ignoras esos enters con algunos trucos como puede ser el especificador de entrada %*c que al contrario de %c que le el numero, %*c lo ignora. ;)

Debes leer sobre el buffer de entrada, y tambien el de salida, pero ahora mismo el de entrada te esta trolleando. XD
GRACIAS HERMANO. ME HA FUNCIONADO A LA PERFECCIÓN!.

Es extraño que en la documentación de C no mencionen este truco, en ninguna otra parte en internet he leído este truco.

Puedo preguntarte cómo sabías este truco ó dónde lo encontraste?.