Código:
Tengo problemas usando varios && y || dentro de un IF./* La compañía que gestiona la autopista ha decidido cambiar las tarifas de peaje. Estas tarifas dependen del tipo de vehículo (camión o automóvil) que desee utilizar la autopista, del número de pasajeros que lleve y de la hora del día: en las horas de alta congestión los automóviles con tres pasajeros o más no pagan peaje, los otros pagan 30 euros, los camiones pagan 50 euros; en las horas menos congestionadas el peaje para los automóviles es de 25 euros y para los camiones es de 30 euros independientemente del número de pasajeros. Escriba un programa que leyendo el tipo de vehículo, si la hora es de alta congestión o no y el número de pasajeros, calcule la tarifa que le debe cobrar a un vehículo. Datos de entrada: Tipo de vehículo (Camión ó Automóvil), Número de pasajeros, Hora de alta congestión o no Datos de salida: Tarifa a cobrar */ //Declaración de variables char lcTipoVehiculo[10], lcHoraAlta[3]; int liNumeroPasajeros; //Entrada de datos printf("Ingrese tipo de veh%cculo (Cami%cn %c Autom%cvil): ", 161, 162, 162, 162); scanf("%s", lcTipoVehiculo); printf("N%cmero de pasajeros: ", 163); scanf("%d", &liNumeroPasajeros); printf("Hora de alta congesti%cn (Si %c No): ", 162, 162); scanf("%s", lcHoraAlta); if ((lcHoraAlta == 'SI') || (lcHoraAlta == 'si') && (lcTipoVehiculo == 'AUTOMOVIL') || (lcTipoVehiculo == 'automovil') && (liNumeroPasajeros >= 3)) { printf("\nN%c paga peaje.\n", 162); } else if ((lcHoraAlta == 'SI') || (lcHoraAlta == 'si') && (lcTipoVehiculo == 'AUTOMOVIL') || (lcTipoVehiculo == 'automovil') && (liNumeroPasajeros < 3)) { printf("\nTarifa: EUR$30.\n"); }
En el primer IF me refiero a:
si lcHoraAlta es igual a 'SI' ó 'si'
y si lctipoVehiculo es igual a 'AUTOMOVIL' ó 'automovil'
y si linumeroPasajeros es mayor o igual a 3
Cuando ingreso los datos el programa finaliza y no lee las condiciones, estaré usando mal los operadores lógicos?, se pueden usar varios dentro de un IF o nó.
Espero puedan aclararme.