estructura selectiva múltiple (switch)

12
www.lawebdemarce.com Ing. Marcelino Torres Villanueva 1 Estructura selectiva múltiple (switch) Permite escoger una de varias opciones, de acuerdo al valor de una expresión. El formato es el siguiente: switch(expresión) { case cte1: Instrucciones1; break; case cte2: Instrucciones2: break; case cte3: Instrucciones3; break; . . . default: Instrucciones; } expresión: Puede ser entero o carácter no puede ser de otro tipo. Esta expresión se compara con cada uno de las constantes que se encuentran en los case, si es igual a alguna de ellas se ejecutan las expresiones correspondientes y se sale del switch. La sentencia break debe ir al final de cada case. break obliga a salirse del switch, una vez que el case correspondiente se ha ejecutado. Si expresión es distinta a todas las constantes que se encuentran en los case se ejecutan las instrucciones que siguen a default. La sentencia default es opcional. La sentencia switchtiene el mismo efecto que la siguiente sentencia if: if (expresion== cte1) { Instrucciones1; }else if (expresion== cte2) { Instrucciones2; } else if (expresion == cte3) { Instruccioens3; } else { Instrucciones } Como se ve en el switchsolo se compara por igualdad.

Upload: marcelino-villanueva

Post on 05-Jul-2015

3.805 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva 1

Estructura selectiva múltiple (switch)Permite escoger una de varias opciones, de acuerdo al valor de una expresión.

El formato es el siguiente:

switch(expresión){

case cte1: Instrucciones1;break;

case cte2: Instrucciones2:break;

case cte3: Instrucciones3;break;

.

.

.default: Instrucciones;

}

expresión: Puede ser entero o carácter no puede ser de otro tipo. Esta expresión se compara concada uno de las constantes que se encuentran en los case, si es igual a alguna de ellas se ejecutan lasexpresiones correspondientes y se sale del switch. La sentencia break debe ir al final de cada case.break obliga a salirse del switch, una vez que el case correspondiente se ha ejecutado.Si expresión es distinta a todas las constantes que se encuentran en los case se ejecutan lasinstrucciones que siguen a default.La sentencia default es opcional.

La sentencia switchtiene el mismo efecto que la siguiente sentencia if:if (expresion== cte1){

Instrucciones1;}else if (expresion== cte2){

Instrucciones2;}else if (expresion == cte3){

Instruccioens3;}else{

Instrucciones}Como se ve en el switchsolo se compara por igualdad.

Page 2: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva 2

Ejercicios1) Ingresar un numero entre 1 y 12 y reportar el mes que le corresponde

#include<iostream>using namespace std;int main(){

int num;cout<<"ingrese un Numero entre 1 y 12 : ";cin>>num;switch(num){

case 1 : cout<<"Enero"<<endl; break;case 2 : cout<<"Febrero"<<endl; break;case 3 : cout<<"Marzo"<<endl; break;case 4 : cout<<"Abril"<<endl; break;case 5 : cout<<"Mayo"<<endl; break;case 6 : cout<<"Junio"<<endl; break;case 7 : cout<<"Julio"<<endl; break;case 8 : cout<<"Agosto"<<endl; break;case 9 : cout<<"Setiembre"<<endl; break;case 10 : cout<<"Octubre"<<endl; break;case 11 : cout<<"Noviembre"<<endl; break;case 12 : cout<<"Diciembre"<<endl; break;default :

cout<<"Numero fuera de rango"<<endl;}system("pause");return 0;

}

2) Ingresar un numero entero, y si este termina en 2,5 u 8 reportar el cuadrado del numero,si este termina en 4,7 o 9 reportar el numero multiplicado por 5 y reportar el mismo numeroen otro caso.

#include<iostream>using namespace std;int main(){

long num;cout<<"Ingrese numero entero : ";cin>>num;switch(num % 10){

case 2 : case 5 : case 8 :cout<<"El cuadrado del numero es : "<<num*num<<endl;break;

case 4 : case 7 : case 9 :cout<<"El numero multiplicado por 5 es : "<<num*5<<endl;break;

default :cout<<"El numero ingresado es : "<<num<<endl;

}system("pause");return 0;

}

Page 3: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva 3

3) Ingresar una letra entre a y e y reportar el mensaje de acuerdo a:A excelenteB buenoC regularD maloE pesimo

#include<iostream>

using namespace std;

int main(){

char letra;cout<<"Ingrese letra : ";cin>>letra;switch (letra){

case 'a' : case 'A' :cout<<"EXCELENTE "<<endl;

break;case 'b' : case 'B' :

cout<<"BUENO"<<endl;break;

case 'c' : case 'C' :cout<<"REGULAR "<<endl;break;

case 'd' : case 'D' :cout<<"MALO"<<endl;break;

case 'e' : case 'E' :cout<<"PESIMO"<<endl;break;

default :cout<<"Letra fuera de rango "<<endl;

}system("pause");return 0;

}

4) Ingresar 2 números y luego escoger la operación que se quiere hacercon ellos y reportar elresultado.

#include<iostream>

using namespace std;

int main(){

float num1, num2, res;int op;cout<<"Ingrese primer número : ";cin>>num1;cout<<"Ingrese segundo numero : ";cin>>num2;

Page 4: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva 4

cout<<"Operacion que desea realizar"<<endl;cout<<"[1] Suma "<<endl;cout<<"[2] Resta "<<endl;cout<<"[3] Multiplicacion "<<endl;cout<<"[4] Division "<<endl;cout<<"Ingrese opcion (1-4) : ";cin>>op;switch(op){

case 1 : res=num1+num2;cout<<"La suma es : "<<res<<endl;break;

case 2 : res = num1-num2;cout<<"La resta es : "<<res<<endl;break;

case 3 : res = num1*num2;cout<<"La multiplicacion es : "<<res<<endl;break;

case 4 :if(num2!=0){

res = num1/num2;cout<<"La division es : "<<res<<endl;

}else

cout<<"No se puede dividir entre cero"<<endl;break;

default :cout<<"numero de Opcion fuera de rango "<<endl;

}system("pause");return 0;

}5) Ingresar el numero de mes y el año y reporte el número de días que tiene ese mes.

#include<iostream>using namespace std;int main(){

int m,a;int op;cout<<"Ingrese Numero de mes (1-12) : ";cin>>m;cout<<"Ingrese anio : ";cin>>a;

Page 5: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva 5

switch(m){

case 1: case 3: case 5: case 7: case 8: case 10: case 12:cout<<"El mes tiene 31 dias"<<endl;break;

case 4: case 6: case 9: case 11:cout<<"El mes tiene 30 dias"<<endl;break;

case 2:if((a%4==0 && a%100!=0) || a%400==0)

cout<<"El mes tiene 29 dias"<<endl;else

cout<<"El mes tiene 28 dias"<<endl;break;

default :cout<<"Numero de mes equivocado"<<endl;

}system("pause");return 0;

}

6) Generar un número aleatorio entre 1 y 3000, mostrarlo en la pantalla y reportar suequivalente en números romanos.

#include<iostream>

using namespace std;

int main(){

int n, u, d, c, m;cout<<" CONVERSION DE ARABIGOS A ROMANOS "<<endl;srand((unsigned) time(NULL));

n= rand() % 3000+1;cout<<"Numero generado : "<<n<<endl;cout<<"su equivalente en romanos :";

u=n%10;n=n/10;d=n%10;n=n/10;c=n%10;n=n/10;m=n%10;switch(m){

case 1: cout<<"M"; break;case 2: cout<<"MM"; break;case 3: cout<<"MMM"; break;

}switch(c){

case 1: cout<<"C"; break;case 2: cout<<"CC"; break;case 3: cout<<"CCC"; break;

Page 6: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva 6

case 4: cout<<"CD"; break;case 5: cout<<"D"; break;case 6: cout<<"DC"; break;case 7: cout<<"DCC"; break;case 8: cout<<"DCCC"; break;case 9: cout<<"CM"; break;

}switch(d){

case 1: cout<<"X"; break;case 2: cout<<"XX"; break;case 3: cout<<"XXX"; break;case 4: cout<<"XL"; break;case 5: cout<<"L"; break;case 6: cout<<"LX"; break;case 7: cout<<"LXX"; break;case 8: cout<<"LXXX"; break;case 9: cout<<"XC"; break;

}switch(u){

case 1: cout<<"I"; break;case 2: cout<<"II"; break;case 3: cout<<"III"; break;case 4: cout<<"IV"; break;case 5: cout<<"V"; break;case 6: cout<<"VI"; break;case 7: cout<<"VII"; break;case 8: cout<<"VIII"; break;case 9: cout<<"IX"; break;

}cout<<endl;

system("pause");return 0;

}

7) Dados como entrada 3 enteros representando la fecha como día, mes, año, imprimir la fechadel día anterior. Por ejemplo para una entrada como: 1 3 1992 La salida será: Fecha anteriora 1-3-1992 es 29-02-1992.

#include<iostream>

using namespace std;

int main(){

int d,m,a,ma,nd;cout<<"Ingrese dia : ";cin>>d;cout<<"Ingrese mes : ";cin>>m;cout<<"Ingrese año : ";cin>>a;

Page 7: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva 7

// cálculo del numero de dias del mes anteriorma=m-1;if(ma==0) ma=12;

switch(ma){

case 1: case 3:case 5: case 7: case 8: case 10: case 12:nd=31;break;

case 4: case 6: case 9: case 11:nd=30;break;

case 2:if((a%4==0 && a%100!=0) || a % 400==0) nd =29;else nd=28;break;

}d = d-1;if(d==0){

d=nd;m=m-1;if(m==0){

m=12;a=a-1;

}}cout<<"La fecha del dia anterior es: "<<d<<"/"<<m<<"/"<<a<<endl;system("pause");return 0;

}

8) Ingresar dia de una fecha, reportar el dia de la semana que le corresponde, suponiendo queel dia 1 de dicho mes fue lunes.

#include<iostream>using namespace std;

int main(){

int dia;cout<<"Ingrese dia: ";cin>>dia;switch(dia %7){

case 0: cout<<"Domingo"<<endl;break;

case 1: cout<<"Lunes"<<endl;break;

case 2: cout<<"Martes"<<endl;break;

case 3: cout<<"Miercoles"<<endl;break;

Page 8: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva 8

case 4: cout<<"Jueves"<<endl;break;

case 5: cout<<"Viernes"<<endl;break;

case 6: cout<<"Sabado"<<endl;break;

}system("pause");return 0;

}

9) Preguntar que dia de la semana fue el dia 1 del mes actual y reportar el día de la semana quees hoy.

#include<iostream>using namespace std;int main(){

char dia1;int dia,x;cout<<"Ingrese dia 1 fue (L,M,X,J,V,S,D): ";cin>>dia1;switch(dia1){

case 'L': case 'l': x=0;break;case 'M': case 'm': x=1;break;case 'X': case 'x': x=2;break;case 'J': case 'j': x=3;break;case 'V': case 'v': x=4;break;case 'S': case 's': x=5;break;case 'D': case 'd': x=6;break;

}cout<<"Ingrese el numero de dia que es hoy: ";cin>>dia;dia=dia+x;switch(dia %7){

case 0: cout<<"Domingo"<<endl;break;

case 1: cout<<"Lunes"<<endl;break;

case 2: cout<<"Martes"<<endl;break;

case 3: cout<<"Miercoles"<<endl;break;

case 4: cout<<"Jueves"<<endl;break;

case 5: cout<<"Viernes"<<endl;break;

case 6: cout<<"Sabado"<<endl;break;

}system("pause");return 0;

}

Page 9: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva 9

Ejercicios Propuestos

1) En un supermercado, se realizan descuentos por las compras a partir de unas bolitas decolores. Si el cliente saca una bolita color azul, tiene un descuento del 20%, si la bolita esroja, se aplica un descuento del 30% y si saca una bolita color blanca, no se aplica ningúndescuento. Diseñe un programa que a partir del importe de la compra y el color de la bolita,muestre lo que debe pagar dicho cliente.

2) Realizar un programa que calcule el importe a pagar por un vehículo al circular por unaautopista. El vehículo pude ser una bicicleta, una moto, un carro o un camión. Para definir elconjunto de vehículos deben utilizar una estructura switch. El importe se calculara según lossiguientes datos:a) Un importe de 0.5soles por km para la bicicleta.b) Las motos y los carros pagaran 2soles por Km.c) Los camiones pagaran 5 soles por Km. más 3 soles por tonelada.Se debe ingresar el tipo de Vehículo, los kilómetros a recorridos y si es camión las toneladasllevadas.

3) Se desea calcular el sueldo de un trabajador, a partir de las horas trabajadas en la semana yla clase a la que pertenece: Trabajadores Clase “A”, se les paga 25 soles por hora.Trabajadores clase “B”, se paga 20 soles por hora. Trabajadores clase “C”, se les paga 15soles por hora y los de clase “D”, 10 soles por hora.

4) Un comerciante se dedica a la venta de sillas únicamente. Vende tres tipos de sillas: tipo A,tipo B y Tipo C los precios son 20, 35 y 50 soles respectivamente. Por cada cinco sillascompradas del tipo A, del tipo B o del tipo C los clientes reciben un descuento de 3%, 5% y7%, las demás se cobran a precio normal.Hacer un programa para ingresar el tipo de Sillas a comprar, el número de sillas y reportar elimporte a pagar.

5) Dados como entrada 3 enteros representando la fecha como día, mes, año, imprimir la fechadel día siguiente. Por ejemplo para una entrada como: 29 2 2004 La salida será: Fechasiguiente a 29-2-2004 es 1-3-2004.

6) Ingresar el día y el mes de nacimiento y reportar su signo zodiacal.7) Ingresar el día y el mes de una fecha y reportar la estación a la que pertenece: verano,

otoño, invierno o primavera.8) Ingresar el sueldo de un trabajador, Categoría, condición(Estable, contratado) y reportar el

pago total que se le debe hacer de acuerdo a lo siguiente:El porcentaje de Bonificación (respecto al sueldo) se calcula de acuerdo a la siguiente tabla:

Categoría Estable No EstableA 20% 17%B 18% 15%C 15% 14%D 12% 10%

El cálculo del descuento es respecto al (Sueldo + Bonificación)Estable: 6% No estable: 4%

9) Ingresar el costo de un Artículo y el tipo de Artefacto y luego reportar el descuento que sele aplica y el obsequio que se le dará a un cliente.

Page 10: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva10

De acuerdo al tipo de artefacto se aplicara un descuento y se dará un obsequio tal como seseñala en la tabla.Tipo Tasa de Descuento Obsequio

(Sobre el costo)Audio 8% LicuadoraVídeo 9% BatidoraLínea Blanca 0% Plancha

10) Ingresar 2 números y luego un carácter indicando la operación a realizar (+,-,*,/,^) yreportar el resultado de la operación.

11) Una empresa paga a sus vendedores un sueldo bruto que es igual a la suma de un sueldobásico de S/. 250 más una comisión que es igual a un porcentaje del monto total vendido. Elporcentaje por comisión depende de la categoría del vendedor de acuerdo a la siguientetabla:

Categoría Porcentaje de Comisión1 14.25%2 13.00 %3 11.75%

Por otro lado, si el sueldo bruto del vendedor es mayor a S/. 3500, se efectúa un descuento igual al15% del sueldo bruto; en caso contrario, se efectúa un descuento igual al 10% del sueldo bruto.Hacer un programa que determine el sueldo básico, la comisión, el sueldo bruto, el descuento y elsueldo neto de un vendedor de la empresa.

12) Una tienda vende-tres tipos de productos cuyos códigos son A, B Y C a los precios unitariosdados en la siguiente tabla:

Código Precio UnitarioA 25B 35C 45

Como oferta la tienda ofrece un porcentaje de descuento sobre el importe de la compra deacuerdo a la siguiente tabla:

Importe Compra Descuento>=700 16%

>=500 pero < 700 14%>=200 pero <500 12 %

< 200 100%

Hacer un programa que determine el importe de la compra, el importe del descuento y el importe apagar por la compra de cierta cantidad de unidades de un mismo tipo de producto.

13) Hacer un programa que permita calcular el pago total de un trabajador de acuerdo a losiguiente:Bonificación : respecto al sueldo Descuento : respecto al sueldo + bonificaciónMasculino Femenino Masculino FemeninoSoltero 8% 10% Soltero 6% 5%Casado 10% 12% Casado 4% 3%Se debe ingresar el sueldo del trabajador, sexo y estado civil y reportar bonificación,descuento, y el pago total

14) Ingresar un numero entero entre 1 y 3000 y reportarlo en letras por ejemplo si ingresamosel numero 52 debe reportar cincuenta y dos

Page 11: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva11

15) Se desea calcular el costo de Internamiento de un paciente de una clínica, para esto sedebe ingresar el tipo de tratamiento que se muestra en la tabla, la edad y el númerode días de internamiento. Se sabe que los clientes mayores de 60 años tienen undescuento de 25% y los clientes menores de 25 años, de 15%.

Tipo deTratamiento

Costo Internamientopor día

1 4002 3003 2504 180

16) El costo de una llamada telefónica depende de la zona geográfica en la que seencuentra el país destino. En la tabla se muestra el costo de 60 segundos de acuerdo ala zona geográfica.Hacer un programa para calcular e imprimir el costo total de una llamada, se debeingresar la clave de la zona geográfica y la duración de la llamada (en segundos)

Clave Zona Precio1 Estados Unidos 0.132 Canadá 0.115 América del Sur 0.226 América Central 0.197 México 0.179 Europa 0.17

10 Asia 0.2015 África 0.3920 Oceanía 0.28

17) Elaborar un programa que realice la opción seleccionada de acuerdo a lo siguiente:a.- Área de triángulo (Solicitar base y altura)b.- Área de Cuadrado (Solicitar lado)c.- Área de Círculo (Solicitar radio)d.- Área de Rectángulo (Solicitar base y altura)

18) En el juego para dos personas llamado "ROCA, PAPEL Y TIJERAS" cada jugador escogeser "T", "R" o "P" respectivamente. El jugador se determina así: roca rompe tijeras, lastijeras cortan el papel, el papel cubre la roca, el juego es un empate si ambosjugadores eligen la misma opción. Elaborar un programa para que determine cualjugador gana, la salida debe mostrarse de la siguiente forma: "T-R Roca rompe tijerasgana el jugador 2".

19) Una empresa desea calcular la productividad de un mes dado, esta se calcula comosigue:Enero, Febrero y Marzo tienen factor 15Abril, Mayo y Junio tienen factor 17Septiembre, Octubre y Noviembre tienen factor 20Diciembre tiene factor 21

Page 12: Estructura selectiva múltiple (switch)

www.lawebdemarce.com

Ing. Marcelino Torres Villanueva12

Se pide elaborar un programa que permita solicitar al usuario un mes cualquiera y secalcule la productividad si se sabe que ésta es igual al número de artículos producidosen el mes multiplicado por el factor del mes que corresponda al mes proporcionado.Se conoce la cantidad de artículos producidos y el mes

20) La asignación familiar por hijo de un trabajador es la siguiente:- Si no tiene hijos no le corresponde asignación familiar- Si tiene un hijo le corresponde 50 soles- Si tiene dos hijos le corresponde 75 soles por sus dos hijos- Y si tiene más de dos hijos le corresponde 100 solesIngresar el número de hijos y reportar la asignación familiar