Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/02/2015, 11:41
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problemas con varios operadores lógicos (&&,||) dentro de IF

O_O así no se comparan las cadenas, al menos no en C y en C++ si no mal recuerdo puedes usar el operador == siempre y cuando un objeto de tipo string (no char*) este de lado izquierdo. Para comparar arreglos de caracteres existen funciones como strncasecmp que compara 2 arreglos de caracteres, dado una longuitud e ignorando el case de los caracteres.

Lo segundo que vi fue que tienes problemas con el encoding pero es problema mas de la consola donde lo ejecutas. En mi caso añadi system("chcp 65001"); y le cambie el encoding de mi archivo a utf-8.

Código C:
Ver original
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4.  
  5. int main() {
  6.     system("chcp 65001");
  7.     //Declaración de variables
  8.     char lcTipoVehiculo[10], lcHoraAlta[3];
  9.     int liNumeroPasajeros;
  10.  
  11.     //Entrada de datos
  12.     printf("Ingrese tipo de vehículo (Camión o Automóvil): ");
  13.     scanf("%s", lcTipoVehiculo);
  14.  
  15.     printf("Número de pasajeros: ");
  16.     scanf("%d", &liNumeroPasajeros);
  17.  
  18.     printf("Hora de alta congestión (Si o No): ");
  19.     scanf("%s", lcHoraAlta);
  20.  
  21.     if ((strncasecmp("SI", lcHoraAlta, 2) == 0) && (strncasecmp("AUTOMOVIL", lcTipoVehiculo, 9) == 0) && (liNumeroPasajeros >= 3))
  22.     {
  23.         printf("\nNó paga peaje.\n");
  24.     }
  25.  
  26.     else if ((strncasecmp("SI", lcHoraAlta, 3) == 0) && (strncasecmp("AUTOMOVIL", lcTipoVehiculo, 10) == 0) && (liNumeroPasajeros < 3))
  27.     {
  28.         printf("\nTarifa: EUR$30.\n");
  29.  
  30.     }
  31.     return 0;
  32. }