Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/02/2015, 10:36
amchacon
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: Problemas con varios operadores lógicos (&&,||) dentro de IF

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).