hola,
vereis, tengo el siguietne switch:
printf("Selecciona el numero de vehiculo: ");
scanf("%d",&vehiculo);
switch (vehiculo)
{
case '1':
total==1;
break;
case '2':
total==1.5;
break;
case '3':
printf("\nIntroduce los Kilometros del coche: ");
scanf("%d",&km);
total=km*30;
break;
case '4':
printf("\nIntroduce los Kilometros del camion: ");
scanf("%d",km);
printf("\nIntroduce su tonelaje: ");
scanf("%d",tonelaje);
total=km*30+tonelaje*25;
break;
default:
printf("\nERROR: Ese numero de vehiculo no existe\n\n");
break;
}
Hay algo mal? Porque intruduzca lo que introduzca, salta siempre al default :S.
Gracias.
Quítale las comillas a los números 1,2,3,4 en los case. Cuando les pones las comillas estás usando el código que representa al caracter 1 en lugar de usar el número 1. Concretamente, '1' equivale al número 49.
Si pruebas el programa tal como lo tienes y escribes por teclado 49 te ejecutará el case '1'.
Lo dicho, quita las comillas en los case.
Pues sí, en efecto era eso. Gracias :)
Hi,
he supuesto que intentas asignar un valor a la variable total en todos los casos, excepto el de por defecto. Repasa en los casos uno y dos la forma en que intentas asignar el valor 1 y 1.5 al total.
case '1':
total==1;/* == */
break;
case '2':
total==1.5;/* == */
break;
Un saludo,
Ruben
Tampoco hubiera venido nada mal usar un enumerado para los tipos de vehículos; te ayudaría en la legibilidad del código.