Вы находитесь на странице: 1из 22

Capitulo 3:

Sentencias de control múltiple

Ejercicio 1:

Determinar el nombre correspondiente a un número de mes y además la estación a la que


pertenece, considerando 3 meses completos por estación.

PSEUDOCODIGO:
Inicio
Ingresar número de mes (NM)
En CASO que NM SEA
Enero, Febrero, Marzo: estación=verano
Abril, Mayo, Junio: estación=otoño
Julio, Agosto, Setiembre: estación=invierno
Octubre, Noviembre, Diciembre: estación=primavera
SINO
Estación=desconocida
Fin

SOLUCIÓN
int nummes;
string mes = "", est = "";
Console.WriteLine("Ingrese el número del mes");
nummes = int.Parse(Console.ReadLine());
switch (nummes)
{
case 1:
mes = "Enero"; break;
case 2:
mes = "Febrero"; break;
case 3:
mes = "Marzo"; break;
case 4:
mes = "Abril"; break;
case 5:
mes = "Mayo"; break;
case 6:
mes = "Junio"; break;
case 7:
mes = "Julio"; break;
case 8:
mes = "Agosto"; break;
case 9:
mes = "Septiembre"; break;
case 10:
mes = "Octubre"; break;
case 11:
mes = "Noviembre"; break;
case 12:
mes = "Diciembre"; break;
}
if ((nummes >= 1) & (nummes <= 3))
{
est = "Verano";
}
if ((nummes >= 4) & (nummes <= 6))
{
est = "Otoño";
}
if ((nummes >= 7) & (nummes <= 9))
{
est = "Invierno";
}
if ((nummes >= 10) & (nummes <= 12))
{
est = "Primavera";
}
Console.WriteLine("El mes es: {0}", mes);
Console.WriteLine("La estación es: {0}", est);
Console.ReadLine();

Ejercicio 2:

En una tienda de accesorios para computadoras, el precio de venta de unitario de los


diskettes es el mismo para cualquier marca, sin embargo el descuento varía de acuerdo a la
marca y se establece en la siguiente tabla. Determinar el importe a pagar por la cantidad de
diskettes comprados de una sola marca, considerando que no se paga impuestos. Mostrar
importe bruto, descuento e importe a pagar.

MARCA DESCUENTO
3M 10
NCR 10
Sentinel 20
Burroughs 25
GoldStar 30

PSEUDOCODIGO:
Inicio
Escribir marcas a escoger
Ingresar marca, precio, cantidad
Calcular importe bruto
ImpBruto=cantidad*precio
Calcular descuento:
En CASO que Marca SEA
3M : Dscto=ImpBruto*Pdscto1
NCR : Dscto=ImpBruto*Pdscto2
Sentinel: Dscto=ImpBruto*Pdscto3
Burroughs: Dscto=ImpBruto*Pdscto4
GoldStar: Dscto=ImpBruto*Pdscto5
Fin del CASO
Calcular importe
Importe=ImpBruto-Dscto
Escribir ImpBruto, Dscto, Importe
Fin

SOLCUIÓN:
{
int n;
double pu, impb, des=0, impp;
string mar = "";
Console.WriteLine("Ingrese la cantidad de diskettes a comprar");
n = int.Parse(Console.ReadLine());
Console.WriteLine("Ingrese la marca del diskette");
mar = Console.ReadLine();
Console.WriteLine("Ingrese el precio unitario del diskette");
pu = double.Parse(Console.ReadLine());
impb = pu * n;
switch (mar)
{
case "3M":
des = 0.10 * impb; break;
case "NCR":
des = 0.15 * impb; break;
case "Sentinel":
des = 0.20 * impb; break;
case "Burroughs":
des = 0.25 * impb; break;
case "GoldStar":
des = 0.30 * impb; break;
}
impp = impb - des;
Console.WriteLine("Los importes son:");
Console.WriteLine("Importe Bruto: {0}", impb);
Console.WriteLine("Descuento: {0}", des);
Console.WriteLine("Importe a pagar: {0}", impp);
Console.ReadLine();
}
Ejercicio 3:

Determinar el importe a pagar por un alumno de un instituto cuya cuota tiene un porcentaje
de descuento que se establece en la siguiente tabla y está en función al colegio de
procedencia del alumno; asimismo los importes están exonerados por impuestos.

INSTITUTOS

COLEGIO A B C
Nacional 50 40 30
Particular 25 20 15

PSEUDOCODIGO:
Inicio
Ingresar Instituto, Colegio, Cuota
Calcular Descuento:
En CASO que Instituto SEA
A en: CASO que Colegio SEA
Nacional: Dscto=Cuota*Pdna
Particular: Dscto=Cuota*Pdpa
FIN del CASO
B en: CASO que Colegio SEA
Nacional: Dscto=Cuota*PdnB
Particular: Dscto=Cuota*PdpB
FIN del CASO
C en: CASO que Colegio SEA
Nacional: Dscto=Cuota*PdnC
Particular: Dscto=Cuota*PdpC
FIN del CASO
FIN del CASO
Calcular importe:
Importe=Cuota-Dscto
Escribir importe
Fin

SOLCUIÓN:
{
int op1, op2;
double cuota, des = 0, imp;
Console.WriteLine("Ingrese la cuota");
cuota = double.Parse(Console.ReadLine());
Console.WriteLine("MENU");
Console.WriteLine("1..............Nacional");
Console.WriteLine("2............Particular");
Console.WriteLine("Ingrese el número del instituto al que pertenece");
op1 = int.Parse(Console.ReadLine());
Console.WriteLine("MENU");
Console.WriteLine("1..............A");
Console.WriteLine("2..............B");
Console.WriteLine("3..............C");
Console.WriteLine("Ingrese el número de la escuela al que pertenece");
op2 = int.Parse(Console.ReadLine());
if (op1 == 1)
{
switch (op2)
{
case 1:
des = cuota * 0.50; break;
case 2:
des = cuota * 0.40; break;
case 3:
des = cuota * 0.30; break;
}

}
if (op1 == 2)
{
switch (op2)
{
case 1:
des = cuota * 0.25; break;
case 2:
des = cuota * 0.20; break;
case 3:
des = cuota * 0.15; break;
}

}
imp = cuota - des;
Console.WriteLine("El importe a pagar es: {0}", imp);
Console.ReadLine();
}

Ejercicio 4:

Validar el ingreso de una fecha en el formato día, mes, año numéricos determinando si es
correcta o no, mostrando el mensaje correspondiente. Considerar años bisiestos.

PSEUDOCODIGO:
Inicio
Ingresar día, mes, año
Evaluar valores ingresados
SI (Día está en (1...31)) Y
(Mes está en (1...12))Y
(Año está en (1...99)), ENTONCES
Correcto=verdad
SINO
Correcto=falso
FIN del SI
SI correcto es verdad, ENTONCES
Inicio
En CASO que mes SEA
1, 3, 5, 7
8, 10, 12 : Dmáx=31
4, 6, 9, 11 : Dmáx=30
2 : SI Año es bisiesto, ENTONCES
Dmáx=29
SINO
Dmáx=38
FIN del SI
FIN del CASO
SI (Día> Dmáx), ENTONCES
Escribir fecha correcta
SINO
Escribir fecha incorrecta
Fin del SI
Fin

SOLUCIÓN:
{
int mes, año, op = 0;
double dia;
Console.WriteLine("Ingrese el número del año");
año = int.Parse(Console.ReadLine());
if ((año < 1) | (año > 99))
{
Console.WriteLine("No existe ese número de día");
Console.ReadLine();
}
else
{
Console.WriteLine("Ingrese el número del mes");
mes = int.Parse(Console.ReadLine());
if ((mes < 1) | (mes > 12))
{
Console.WriteLine("No existe ese número de mes");
Console.ReadLine();
}
else
{
Console.WriteLine("¿El año es bisiesto?");
Console.WriteLine("1.................SI");
Console.WriteLine("0 u otro número...NO");
op = int.Parse(Console.ReadLine());
Console.WriteLine("Ingrese el número del día");
dia = double.Parse(Console.ReadLine());
if (op == 1)
{
switch (mes)
{
case 1:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 2:
if ((dia < 1) | (dia > 29))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 3:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 4:
if ((dia < 1) | (dia > 30))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 5:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 6:
if ((dia < 1) | (dia > 30))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 7:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 8:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 9:
if ((dia < 1) | (dia > 30))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 10:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 11:
if ((dia < 1) | (dia > 30))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 12:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
}
}
else
{
switch (mes)
{
case 1:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 2:
if ((dia < 1) | (dia > 28))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 3:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 4:
if ((dia < 1) | (dia > 30))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 5:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 6:
if ((dia < 1) | (dia > 30))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 7:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 8:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 9:
if ((dia < 1) | (dia > 30))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 10:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 11:
if ((dia < 1) | (dia > 30))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
case 12:
if ((dia < 1) | (dia > 31))
{
Console.WriteLine("La fecha es incorrecta");
Console.ReadLine();
}
else
{
Console.WriteLine("La fecha es correcta");
Console.ReadLine();
}
break;
}
}
}
}
}

Ejercicio 5:

Evaluar una expresión de 2 operandos enteros de acuerdo al operador que se elija, mostrar
el resultado considerando la posibilidad que en la división se intente dividir por 0 para lo
cual el resultado debe ser también 0 (aun cuando se sabe matemáticamente que una división
por cero tiende al infinito). Los operadores permitidos son solamente lo siguiente.

+ : SUMA
- : RESTA RESTA
* : MULTIPLICACION
& : DIVISION ENTERA
% : RESIDUO
^ : POTENCIA

PSEUDOCODIGO:
Inicio
Escribir operadores a escoger
Ingresar operadores
Ingresar 2 números enteros: O1, O2
Determinar Resultado
En CASO que Operador SEA
Mas : resultado=O1+O2
Menos: resultado=O1-O2
Por : resultado=O1*O2
Entre : si O2<>0 ENTONCES
Resultado = entero (O1/O2)
SINO
Resultado= 0
Fin del si
Residuo: resultado=residuo (O1/O2)
Potencia: resultado= O1 elevado a la potencia del O2)
FIN del CASO
Escribir resultado
Fin

SOLUCIÓN:
{
double a, b, c = 0;
int op = 0;
Console.Clear();
Console.WriteLine(".........MENU...........");
Console.WriteLine("1...................suma");
Console.WriteLine("2..................resta");
Console.WriteLine("3.........multiplicación");
Console.WriteLine("4...............división");
Console.WriteLine("5................residuo");
Console.WriteLine("6...............potencia");
Console.WriteLine("Ingrese el número de la operación a usar");
op = int.Parse(Console.ReadLine());
Console.WriteLine("Ingrese primer número");
a = double.Parse(Console.ReadLine());
Console.WriteLine("Ingrese segundo número");
b = double.Parse(Console.ReadLine());
switch (op)
{
case 1:
c = a + b; break;
case 2:
c = a - b; break;
case 3:
c = a * b; break;
case 4:
if (b == 0)
{
c = 0;
}
else
{
c = a / b;
}
break;
case 5:
c = a % b; break;
case 6:
c = Math.Exp(b * Math.Log(a)); break;
}
Console.WriteLine("El resultado es: {0}", c);
Console.ReadLine();
}

Ejercicio 6:

En una universidad se ha establecido los siguientes puntajes de ingresos a sus respectivas


facultades:

FACULTAD PUNTAJE MINIMO


Sistemas 100
Electrónica 90
Industrial 80
Administración 70

De acuerdo al puntaje obtenido por un postulante determinar la facultad a la cual ingreso o


dar un mensaje correspondiente para el caso que no ingrese.

PSEUDOCODIGO:
Inicio
Ingresar puntaje obtenido: P
Determinar facultad de ingreso:
En CASO que puntaje SEA
70…79 facultad=Administración
80…89 facultad=Industrial
90…99 facultad=Electrónica
100…110 facultad=Sistemas
SINO
Facultad=Ninguna
Fin del CASO
Escribir facultad
Fin

SOLUCIÓN:
{
float nota;
string c = "";
Console.WriteLine("Ingrese el puntaje obtenido en el examen");
nota = float.Parse(Console.ReadLine());
if ((nota >= 70) & (nota < 80))
{
c = "Administración";
}
if ((nota >= 80) & (nota < 90))
{
c = "Industrial";
}
if ((nota >= 90) & (nota < 100))
{
c = "Electrónica";
}
if ((nota >= 100) & (nota <= 110))
{
c = "Sistemas";
}
if ((nota < 70) | (nota > 110))
{
c = "Ninguna";
}
Console.WriteLine("La Facultad a la cual ingresó es: {0}", c);
Console.ReadLine();
}

Ejercicio 7:

Una tienda distribuidora de ropa ha establecido porcentajes de descuento sobre el monto


comprado de la siguiente forma:

Asdfghj Hombres Mujeres


Origen/Talla S M L S M L
Nacional 10 12 15 15 17 20
Importado 05 07 10 07 09 12

Determinar y mostrar, para un comprador, el monto comprado, el importe del descuento y


el monto a pagar.

SOLUCIÓN:
{
double monc, des = 0, monp;
int op1, op2, op3;
Console.WriteLine("Ingrese monto de compra");
monc = double.Parse(Console.ReadLine());
Console.WriteLine("........MENU.........");
Console.WriteLine("1..............Hombre");
Console.WriteLine("2...............Mujer");
Console.WriteLine("Ingrese el número del sexo al que pertenece");
op1 = int.Parse(Console.ReadLine());
Console.WriteLine("........MENU.........");
Console.WriteLine("1............Nacional");
Console.WriteLine("2...........Importado");
Console.WriteLine("Ingrese el número del origen al que pertenece");
op2 = int.Parse(Console.ReadLine());
Console.WriteLine("........MENU.........");
Console.WriteLine("1...................S");
Console.WriteLine("2...................M");
Console.WriteLine("3...................L");
Console.WriteLine("Ingrese el número del tamaño de prenda al cual que
pertenece");
op3 = int.Parse(Console.ReadLine());
switch (op1)
{
case 1:
switch(op2)
{
case 1:
switch(op3)
{
case 1:
des = 0.10 * monc; break;
case 2:
des = 0.12 * monc; break;
case 3:
des = 0.15 * monc; break;
}
break;
case 2:
switch (op3)
{
case 1:
des = 0.05 * monc; break;
case 2:
des = 0.17 * monc; break;
case 3:
des = 0.10 * monc; break;
}
break;
}
break;
case 2:
switch (op2)
{
case 1:
switch (op3)
{
case 1:
des = 0.15 * monc; break;
case 2:
des = 0.17 * monc; break;
case 3:
des = 0.20 * monc; break;
}
break;
case 2:
switch (op3)
{
case 1:
des = 0.07 * monc; break;
case 2:
des = 0.09 * monc; break;
case 3:
des = 0.12 * monc; break;
}
break;
}
break;
}
monp = monc - des;
Console.WriteLine("Los importes son:");
Console.WriteLine("Monto de compra: {0}", monc);
Console.WriteLine("Descuento: {0}", des);
Console.WriteLine("Monto de pago: {0}", monp);
Console.ReadLine();
}

Ejercicio 8:

Una tienda comercial ofrece ventas al crédito financiadas en tres formas como se indica a
continuación:

TIPO % % NÚMERO
FINANCIAMIENTO INTERES CUOTA INICIAL LETRAS
1 5 60 2
2 10 50 4
3 15 35 6

El cliente deberá firmar antes de la financiación el monto de la compra, el cual es afecto a


un 10% de impuesto, por lo que el monto de la factura es igual al monto de la compra más
el importe del impuesto. Luego que el cliente elige el tipo de financiamiento que le
convenga, se mostrara lo siguiente: monto de la factura, monto de los intereses, nuevo
monto de la factura (incluyendo intereses), monto de la cuota inicial y el monto de cada
letra por pagar (nuevo monto de factura menos monto de cuota inicial entre número de
letras).

SOLUCIÓN:
{
double monc, monf1, inte = 0, monf2 = 0, ci = 0, monl = 0;
int op;
Console.WriteLine("Ingrese el monto de compra");
monc = double.Parse(Console.ReadLine());
monf1 = monc + (0.10 * (monc));
Console.WriteLine("...................................MENU..................................");
Console.WriteLine("..TIPO DE FINANCIAMIENTO....% INTERES....%
CUOTA INICIAL....NUMERO LETRAS");
Console.WriteLine(".............1..................5................60...............2......");
Console.WriteLine(".............2.................10................50...............4......");
Console.WriteLine(".............3.................15................35...............6......");
Console.WriteLine("Ingrese el tipo de financiamiento");
op = int.Parse(Console.ReadLine());
switch (op)
{
case 1:
inte = 0.05 * monf1;
monf2 = monf1 + inte;
ci = 0.60 * monf2;
monl = (monf2 - ci) / 2;
break;
case 2:
inte = 0.10 * monf1;
monf2 = monf1 + inte;
ci = 0.50 * monf2;
monl = (monf2 - ci) / 4;
break;
case 3:
inte = 0.15 * monf1;
monf2 = monf1 + inte;
ci = 0.35 * monf2;
monl = (monf2 - ci) / 6;
break;
}
Console.WriteLine("Los importes son:");
Console.WriteLine("Monto de factura: {0}", monf1);
Console.WriteLine("Monto de interés: {0}", inte);
Console.WriteLine("Nuevo monto de factura: {0}", monf2);
Console.WriteLine("Cuota inicial: {0}", ci);
Console.WriteLine("Monto de cada letra por pagar: {0}", monl);
Console.ReadLine();
}

ALGOTIMOS PROPUESTOS

1.- Los dios de la semana se identifican por un número de la siguiente forma: 0 para
Domingo, 1 para Lunes, 2 para Martes, etc. Determinar el día que corresònda a un número
ingresado dando un mensaje adecuado para el caso que el número dado no corresponda a
ningún día de la semana.

PSEUDOCODIGO:

SOLUCIÓN:

2.- En un olimpiada de tiro al blanco se llega a un acuerdo entre los participantes para que
el puntaje obtenido sea calculado en base al puntaje original (0 al 10) alcanzado en el tiro,
multiplicado por un factor:
PUNTAJE ORIGINAL FACTOR
0 0
1..5 6
6..8 9 ..
9,10 10

Para un tiro realizado determinar su puntaje correspondiente.

PSEUDOCODIGO:

SOLUCIÓN:

3.- Una tienda de ropa ha establecido los porcentajes de descuento, que se indican a
continuación, de acuerdo a ciertas características del comprador: nacionalidad (1,2) y del
producto que compra: sexo (H, M), talla (niño, joven, adulto). Se sabe que una persona
puede comprar varios productos por lo que se desea mostrar como resultado lo siguiente:
nombre del comprador, cantidad de productos comprados, importe comprado, importe
descontado y el importe a pagar; para la compra de una persona termina cuando al ingresar
el nombre del comprador se presiona ENTER.

NIÑO JOVEN ADULTO


SEXO SEXO SEXO

NACIOLNALIDAD H M H M H M
1 5 4 7 9 10 12
2 4 5 9 7 12 10

PSEUDOCODIGO:
SOLUCIÓN:

4.- EL TURBO PASCAL dispone de varios tipos de dato entero que son: ShortInt, Byte,
Integer, Word, LongInt; cada uno de los cuales tiene un rango de valores enteros que lo
definen de la siguiente manera:

TIPO DE DATO RANGO DE VALORES


DESDE HASTA
ShortInt -128 +127
Byte 0 255
Integer -32768 +32767
Word 0 65535
LongInt -2147483648 +2147483647

Al ingresar la primera letra del tipo de dato mostrar su rango de valores correspondientes

5.- Ingresar un número en forma de ARABICO (entero) y mostrar su equivalente en


ROMANO asumiendo que el número ingresado es correcto y no debe ser mayor a 3999.

PSEUDOCODIGO:

SOLUCIÓN:

Вам также может понравиться