elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema con sentencia switch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema con sentencia switch  (Leído 2,150 veces)
++c

Desconectado Desconectado

Mensajes: 29


Ver Perfil
problema con sentencia switch
« en: 4 Mayo 2014, 23:35 pm »

Hola amigos,

tengo un problema a la hora de ejecutar adecuadamente esta sentencia y es a la hora de cuando se introduce en un caso no sale de él, no entiendo porque break no rompe cuando termina la ejecución de la instrucción.

Deseo que el usuario introduzca una opción, seguidamente introduzca un valor, se realice su cálculo de venta de ese producto y por último que muestre el total de venta de todos los productos existentes en la tienda.

También observo que no obedece cuando se introduce un carácter no válido metiéndose en un bucle infinito no acertando porque....


Código
  1.  
  2. #include <stdio.h>
  3.  
  4. int main(){
  5.  
  6.    int opcion;
  7.    float cantidad,total=0;
  8.  
  9.    printf("En esta tienda se vende 5 productos con los siguientes\n");
  10.    printf("\nPrecios:");
  11.    printf("\nProducto 1: 2,98$");
  12.    printf("\nProducto 2: 4,50$");
  13.    printf("\nProducto 3: 9,98$");
  14.    printf("\nProducto 4: 4,49$");
  15.    printf("\nProducto 5: 6,87$\n");
  16.  
  17.    printf("\nIntroduzca numero de producto. -1 para salir: ");
  18.    scanf("%d",&opcion);
  19.  
  20.    while( opcion != -1){
  21.  
  22.        switch( opcion ){
  23.  
  24.        case 1:
  25.  
  26.            printf("\nIntroduzca cantidad vendida: ");
  27.            scanf("%f",&cantidad);
  28.            printf("El precio de esta venta es: %f",cantidad*2.98);
  29.            total+=cantidad*=2.98;
  30.            break;
  31.  
  32.        case 2:
  33.  
  34.            printf("\nIntroduzca cantidad vendida: ");
  35.            scanf("%f",&cantidad);
  36.            printf("El precio de esta venta es: %f",cantidad*4.50);
  37.            total+=cantidad*=4.50;
  38.            break;
  39.  
  40.        case 3:
  41.  
  42.            printf("\nIntroduzca cantidad vendida: ");
  43.            scanf("%f",&cantidad);
  44.            printf("El precio de esta venta es: %f",cantidad*9.98);
  45.            total+=cantidad*=9.98;
  46.            break;
  47.  
  48.        case 4:
  49.  
  50.            printf("\nIntroduzca cantidad vendida: ");
  51.            scanf("%f",&cantidad);
  52.            printf("El precio de esta venta es: %f",cantidad*4.49);
  53.            total+=cantidad*=4.49;
  54.            break;
  55.  
  56.        case 5:
  57.  
  58.            printf("\nIntroduzca cantidad vendida: ");
  59.            scanf("%f",&cantidad);
  60.            printf("El precio de esta venta es: %f",cantidad*6.87);
  61.            total+=cantidad*=6.87;
  62.            break;
  63.  
  64.        default:
  65.  
  66.            printf("\nIntroduzca numero de producto VALIDO: ");
  67.            break;
  68.  
  69.        }
  70.    }
  71.    printf("\nLas ventas totales fueron: %f\n\n ",total);
  72.    return 0;
  73. }
  74.  

Cualquier aclaración se lo agradecería.

Saludos y muchas gracias

++c


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: problema con sentencia switch
« Respuesta #1 en: 5 Mayo 2014, 00:50 am »

Código
  1. printf("\nIntroduzca numero de producto. -1 para salir: ");
  2. scanf("%d",&opcion);

Esas dos líneas deberían ir dentro del while, no fuera.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
++c

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: problema con sentencia switch
« Respuesta #2 en: 6 Mayo 2014, 00:16 am »

Hola amchacon gracias por la respuesta, en efecto ese era el problema.

Me gustaría conocer un último matiz que aún no he llegado a aprender y espero conocer adelatándome en materia y es en relación a optimizar el menu de selección cuando se introduce otro carácter distinto a lo estipulado iniciando un bucle infinito.

Dejo el código como lo llevo elaborado:

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5.    int opcion;
  6.    float cantidad,total=0;
  7.  
  8.    printf("En esta tienda se vende 5 productos con los siguientes precios:\n");
  9.    printf("\nProducto 1: 2,98$");
  10.    printf("\nProducto 2: 4,50$");
  11.    printf("\nProducto 3: 9,98$");
  12.    printf("\nProducto 4: 4,49$");
  13.    printf("\nProducto 5: 6,87$\n");
  14.  
  15.    while( opcion != -1){
  16.  
  17.        printf("\nIntroduzca numero de producto. -1 para salir: ");
  18.        scanf("%d",&opcion);
  19.  
  20.        switch( opcion ){
  21.  
  22.        case 1:
  23.  
  24.            printf("\nIntroduzca cantidad vendida: ");
  25.            scanf("%f",&cantidad);
  26.            printf("El precio de esta venta es: %f",cantidad*2.98);
  27.            total+=cantidad*=2.98;
  28.            break;
  29.  
  30.        case 2:
  31.  
  32.            printf("\nIntroduzca cantidad vendida: ");
  33.            scanf("%f",&cantidad);
  34.            printf("El precio de esta venta es: %f",cantidad*4.50);
  35.            total+=cantidad*=4.50;
  36.            break;
  37.  
  38.        case 3:
  39.  
  40.            printf("\nIntroduzca cantidad vendida: ");
  41.            scanf("%f",&cantidad);
  42.            printf("El precio de esta venta es: %f",cantidad*9.98);
  43.            total+=cantidad*=9.98;
  44.            break;
  45.  
  46.        case 4:
  47.  
  48.            printf("\nIntroduzca cantidad vendida: ");
  49.            scanf("%f",&cantidad);
  50.            printf("El precio de esta venta es: %f",cantidad*4.49);
  51.            total+=cantidad*=4.49;
  52.            break;
  53.  
  54.        case 5:
  55.  
  56.            printf("\nIntroduzca cantidad vendida: ");
  57.            scanf("%f",&cantidad);
  58.            printf("El precio de esta venta es: %f",cantidad*6.87);
  59.            total+=cantidad*=6.87;
  60.            break;
  61.  
  62.        }
  63.    }
  64.    printf("\nLas ventas totales fueron: %f\n\n ",total);
  65.    return 0;
  66. }
  67.  
  68.  

Saludos y gracias por ayudar a personas que se inician en el mundo de la programación.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con sentencia SQL
PHP
zhynar_X 2 2,036 Último mensaje 19 Noviembre 2007, 20:13 pm
por дٳŦ٭
Duda sentencia switch
Programación C/C++
netca 3 2,818 Último mensaje 27 Julio 2012, 05:17 am
por avesudra
Sentencia switch vs tablas de búsqueda
Programación C/C++
kutcher 9 3,310 Último mensaje 5 Septiembre 2014, 21:45 pm
por Eternal Idol
[C] Duda sencilla - sentencia Switch
Programación C/C++
n-utz 4 2,209 Último mensaje 31 Mayo 2016, 01:00 am
por n-utz
sentencia switch
Programación C/C++
Dumy 1 1,820 Último mensaje 1 Octubre 2024, 15:22 pm
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines