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

Cita:
Iniciado por amchacon Ver Mensaje
Te faltan varios parentesis ahí, creo que lo que quieres decir es:
Código C++:
Ver original
  1. if (((lcHoraAlta == "SI") || (lcHoraAlta == "si") )&& ((lcTipoVehiculo == "AUTOMOVIL") || (lcTipoVehiculo == "automovil")) && (liNumeroPasajeros >= 3))

De todas formas, ese if me parece muy complicado y que puede optimizarse:

- Pasando los strings a mayúsculas antes del if te evitas hacer dos comparaciones.
- Si la única diferencia entre esos dos ifs es el número de pasajeros, puedes hacer un if anidado.

Código C++:
Ver original
  1. #include <algorithm>
  2. //...
  3.  
  4. transform(lcHoraAlta.begin(),lcHoraAlta.end(),::toupper); // pasar horaAlta a mayuscula
  5. transform(lcTipoVehiculo.begin(),lcTipoVehiculo.end(),::toupper); // pasar lcTipoVehiculo a mayuscula
  6.  
  7. if (lcHoraAlta == "SI" && lcTipoVehiculo == "AUTOMOVIL")
  8. {
  9.     if (liNumeroPasajeros >= 3)
  10.     {
  11.         printf("\nN%c paga peaje.\n", 162);
  12.     }
  13.     else
  14.     {
  15.           printf("\nTarifa: EUR$30.\n");
  16.     }
  17. }

Si no puedes usar la función transform, puedes hacerte tu propia función que pase un string a mayúsculas (no es díficil, es hacer un for que recorra el string y que vaya aplicando el método toupper() a cada caracter).
Hola, gracias por ayudarme.

El problema se mantiene, corres el programas e ingresas los datos y el programa se finaliza, no lee ninguna condicion.

Otra pregunta: por qué usar en los IF == "si", debería ser 'si' o nó?

Espero puedas responderme ambas, realmente lo necesito.

Aquí screenshot: