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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


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

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Problema con comando switch
« en: 9 Julio 2013, 00:52 am »

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

Código:
#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


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Problema con comando switch
« Respuesta #1 en: 9 Julio 2013, 01:05 am »

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
  1. switch (opcion){
  2. case 1:
  3.   cout << "Ingrese kilogramos\n";
  4.   cin >> kg;
  5.   cout << kg << " kilogramos son " << (float) (kg / 0.45) << " libras\n";
  6.   break;
  7. case 2:
  8.   cout << "Ingrese dolares\n";
  9.   cin >> dl;
  10.   cout << dl << " dolares son " << (float) (dl * 500) << " pesos\n";
  11.   break;
  12. }

Un saludo


En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con Switch
Programación C/C++
higor24 2 3,474 Último mensaje 19 Noviembre 2010, 16:41 pm
por Fer995
Problema con el Switch en C « 1 2 »
Programación C/C++
Samnov 13 11,229 Último mensaje 6 Diciembre 2010, 15:05 pm
por winroot
una pequeña ayuda con el comando switch
Programación C/C++
alkimista1988 3 2,825 Último mensaje 20 Junio 2011, 18:49 pm
por alkimista1988
Comando HP para conocer interface de Switch
Redes
MVP_Sarape 1 1,698 Último mensaje 28 Febrero 2021, 09:06 am
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines