Problema con comando switch

Iniciado por oliverm, 9 Julio 2013, 00:52 AM

0 Miembros y 1 Visitante están viendo este tema.

oliverm

Buenas, estoy aprendiendo c++ y tuve un problema con el comando switch.
El código es el siguiente:

#include <iostream>

using namespace std;

int main()
{
    unsigned int opcion;
cout<<"[1]\tKilogramos a libras."<<endl<<"[2]\tDolares a pesos.\n";
cout<<endl<<"Escoja la unidad a transformar\n";
cin>>opcion;
while (opcion > 2)
{
cout<<"Escoja una opcion valida (1 o 2)\n";
cin>>opcion;
}
unsigned short kg, lb, dl,ps;
switch (opcion)
{
case 1: cout<<"Ingrese kilogramos\n";
cin>>kg;
cout<<kg<<" kilogramos son "<<(float) (kg/0.45)<<" libras\n";
case 2: cout<<"Ingrese dolares\n";
cin>>dl;
cout<<dl<<" dolares son "<<(float) (dl*500)<<" pesos\n";
}
cin>>opcion; //es para que no se cierre la consola :P

return 0;
}

Cuando pongo opción 1, me pido los kilogramos, me muestra cuantas libras son, pero después de eso me pide que ingrese dolares, siendo que la variable opcion tiene el valor de 1. Si mal no entiendo switch lo que hace es ver el valor de la variable y dependiendo del caso realizar una acción, en este caso si elijo la primera, al terminarse pasa a realizar la segunda, cosa que no quiero y no entiendo por qué sucede. Saludos.
PD: Pasa en Microsoft visual Studio y en Dev-cpp

rir3760

En la sentencia de selección "switch" el control del programa salta a la sentencia después de la etiqueta que coincida, nada mas.

Para que cada caso sea exclusivo se debe colocar una sentencia "break;" al final del bloque para delimitarlo.

Esa sentencia en tu programa se debe cambiar a:
Código (cpp) [Seleccionar]
switch (opcion){
case 1:
   cout << "Ingrese kilogramos\n";
   cin >> kg;
   cout << kg << " kilogramos son " << (float) (kg / 0.45) << " libras\n";
   break;
case 2:
   cout << "Ingrese dolares\n";
   cin >> dl;
   cout << dl << " dolares son " << (float) (dl * 500) << " pesos\n";
   break;
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language