Anda di halaman 1dari 20

ESTRUCTURAS LGICAS DE DECISIN

USO COMBINADO DE LAS ESTRUCTURAS LGICAS DE DECISIN


Como se ha mencionado, existen tres tipos de estructura de decisin, las cuales se utilizan en
la solucin de problemas.
Es comn que en las soluciones que se planteen se utilice una o ms de estas estructuras
lgicas. Puede utilizarse una estructura lgica de decisin doble y una estructura lgica de
decisin mltiple en una solucin; una estructura lgica de decisin simple y una estructura
de decisin doble en otra solucin; y muchas otras combinaciones posibles.
Tambin, puede utilizarse ms de una estructura lgica de decisin de un mismo tipo. Puede
utilizarse varias estructuras lgicas de decisin doble en una solucin; varias estructuras
lgicas de decisin mltiple en otra solucin; y muchas otras combinaciones posibles.

USO ANIDADO DE LAS ESTRUCTURAS LGICAS DE DECISIN


Adicionalmente al uso combinado de las estructuras lgicas de decisin, existen soluciones
en las cuales se utilizan dos o ms estructuras lgicas de decisin en forma anidada. Se dice
que dos estructuras lgicas estn anidadas cuando una est dentro de la otra.
Puede utilizar una estructura lgica de decisin simple dentro de una estructura lgica de
decisin mltiple en una solucin; una estructura lgica de decisin doble dentro de otra
estructura lgica de decisin doble; y muchas otras posibilidades.

A continuacin, se presentan algunas soluciones que permiten ilustrar el uso combinado y el


uso anidado de las estructuras de decisin:

Pag. - 1 -

Problema 021
Etapa 01 - Descripcin del problema.
Enunciado:
Ingresar tres notas de un alumno. Muestre las notas ordenadas en forma ascendente.
Etapa 02 - Definicin de la solucin.

Resultado deseado:

Datos necesarios:
Procesamiento:

Mostrar las tres notas de un alumno en forma


ascendente.
Las tres notas del alumno en cualquier orden.
Las tres notas del alumno sern almacenadas en
variables (n1, n2 y n3). Se utilizarn tres variables
auxiliares para ir almacenando el orden de las notas de
acuerdo a diferentes comparaciones entre ellas
(menor, intermedio y mayor). Finalmente, la variable
auxiliar mayor, intermedio y menor almacenarn las
notas y se mostrarn en orden ascendente.

Etapa 03 - Diseo de la lgica.


1. Diseo del algoritmo.
En pseudocdigo:
Algoritmo PrgOrdena main ( )
ENTRADA:
SALIDA:

n1, n2, n3
menor, intermedio, mayor

INICIO
ENTERO n1, n2, n3, menor, intermedio, mayor
LEER n1, n2, n3
SI ( n1 > n2 ) ENTONCES
SI ( n1 > n3 ) ENTONCES
mayor = n1
SI ( n2 > n3 ) ENTONCES
intermedio = n2
menor = n3
SINO
intermedio = n3
menor = n2
FINSI
SINO
mayor = n3
intermedio = n1
menor = n2
FINSI

Pag. - 2 -

Algoritmo PrgOrdena main ( )

SINO
SI ( n2 > n3 ) ENTONCES
mayor = n2
SI ( n1 > n3 ) ENTONCES
intermedio = n1
menor = n3
SINO
intermedio = n3
menor = n1
FINSI
SINO
mayor = n3
intermedio = n2
menor = n1
FINSI
FINSI
ESCRIBIR menor, intermedio, mayor
FIN

En diagrama de flujo:
Algoritmo PrgOrdena main ( )

INICIO

ENTERO n1 , n2 , n3 , mayor , intermedio , mayor

n1 , n2 , n3

Pag. - 3 -

Algoritmo PrgOrdena - main ( )

FALSO

FALSO

VERDADERO

n1 > n2

VERDADERO

FALSO

VERDADERO

n2 > n3

mayor = n3
intermedio = n2
| = n1
menor

n1 > n3

mayor = n3
intermedio = n1
menor = n2

mayor = n2

mayor = n1

n2 > n3

n1 > n3
FALSO

intermedio = n3
menor = n1

FALSO

VERDADERO

intermedio = n3
menor = n2

intermedio = n1
menor = n3

menor ,
intermedio ,
mayor

FIN

Pag. - 4 -

VERDADERO

intermedio = n2
menor = n3

Etapa 04 - Desarrollo de la codificacin.


En lenguaje de programacin C++:
Clase PrgOrdena
#include <iostream>
using std::cout ;
using std::cin ;
using std::endl ;
int main ( ) {
int n1, n2, n3, menor, intermedio, mayor ;
cout << Ingrese la primera nota: ;
cin >> n1 ;
cout << Ingrese la segunda nota: ;
cin >> n2 ;
cout << Ingrese la tercera nota: ;
cin >> n3 ;
if ( n1 > n2 ) {
if ( n1 > n3 ) {
mayor = n1 ;
if ( n2 > n3 ) {
intermedio = n2 ;
menor = n3 ;
} else {
intermedio = n3 ;
menor = n2 ;
}
} else {
mayor = n3 ;
intermedio = n1 ;
menor = n2 ;
}
} else {
if ( n2 > n3 ) {
mayor = n2 ;
if ( n1 > n3 ) {
intermedio = n1 ;
menor = n3 ;
} else {
intermedio = n3 ;
menor = n1 ;
}
} else {
mayor = n3 ;
intermedio = n2 ;
menor = n1 ;
}
}
cout << Las notas ordenadas en forma ascendente son: ;
cout << menor << , << intermedio << y << mayor << \n\n ;
system ( PAUSE ) ;
return 0 ;
}

Pag. - 5 -

Problema 022
Etapa 01 - Descripcin del problema.
Enunciado:
Una editorial ha puesto a la venta tres tipos de libros de acuerdo a la tabla adjunta.
Considerando que para el caso de los libros tipo B, el precio tienen un incremento del 18.5%,
si la compra es realizada con tarjeta de crdito y para los libros tipo C, el precio tiene un
descuento del 40% si se compra en efectivo. Desarrolle una solucin que permita determinar
y mostrar el precio a pagar por la compra de cierta cantidad de libros del mismo tipo.
Tipo de libro
A
B
C

Precio
40
30
25

Etapa 03 - Diseo de la lgica.


1. Diseo del algoritmo.
En pseudocdigo:
Algoritmo PrgVentaLibro main ( )
ENTRADA:
SALIDA:

tipoLibro, cantidad, tipoPago


montoPago

INICIO
NUMERO cantidad, tipoPago, montoPago, precio=0
CARACTER tipoLibro
LEER tipoLibro, cantidad, tipoPago
CUANDO ( tipoLibro ) SEA
CASO A : CASO a :
precio = 40
TERMINAR
CASO B : CASO b :
precio = 30
SI ( tipoPago == 1 ) ENTONCES
precio=precio * 1.185
FINSI
TERMINAR
CASO C : CASO c :
precio = 25
SI ( tipoPago == 0 ) ENTONCES
precio=precio * 0.60
FINSI
FINCUANDO
montoPago = precio * cantidad
ESCRIBIR montoPago
FIN
Intente disear el algoritmo en diagrama de flujo.

Pag. - 6 -

Etapa 04 - Desarrollo de la codificacin.


Intente desarrollar la codificacin en el lenguaje de programacin C++.

Pag. - 7 -

Problema 023
Etapa 01 - Descripcin del problema.
Enunciado:
Una empresa vende dos tipos de jabones, en dos calidades distintas. Considerando que los
precios no incluyen IGV, desarrolle una solucion que muestre el monto subtotal (sin incluir
IGV), el monto del IGV (19% del subtotal) y el monto a pagar (monto incluido IGV) por la
compra de cierta cantidad de jabones del mismo tipo y la misma calidad.
Tipo de jabn
1
2

Precio calidad 1
2.0
3.0

Precio calidad 2
2.5
3.5

Etapa 03 - Diseo de la lgica.


1. Diseo del algoritmo.
En pseudocdigo:
Algoritmo PrgVentaJabones main ( )
ENTRADA
SALIDA:

tipoJabon, cantidad, calidad


subtotal, igv, total

INICIO
NUMERO tipoJabon, cantidad, calidad, precio=0, subtotal, igv, total
LEER tipoJabon, cantidad, calidad
CUANDO ( tipoJabon ) SEA
CASO 1 :
SI ( calidad == 1 ) ENTONCES
precio = 2.0
SINO
precio = 2.5
FINSI
TERMINAR
CASO 2 :
SI ( calidad == 1 ) ENTONCES
precio = 3.0
SINO
precio = 3.5
FINSI
TERMINAR
FINCUANDO
subtotal = precio * cantidad
igv = subtotal * 0.19
total = subtotal + igv
ESCRIBIR subtotal, igv, total
FIN
Intente disear el algoritmo en diagrama de flujo.

Pag. - 8 -

Etapa 04 - Desarrollo de la codificacin.


Intente desarrollar la codificacin en el lenguaje de programacin C++.

Pag. - 9 -

Problema 024
Etapa 01 - Descripcin del problema.
Enunciado:
Calcular y mostrar el costo total que representa un paciente para un hospital de acuerdo al
tipo de enfermedad, segn los datos de la tabla. Adicionalmente deber considerarse que las
mujeres tienen un incremento del 10% para el primer tipo de enfermedad y los hombres
tienen un aumento del 5% para el tercer tipo de enfermedad.
Enfermedad tipo

Costo diario por paciente

1
2
3

200
350
420

Etapa 03 - Diseo de la lgica.


1. Diseo del algoritmo.
En pseudocdigo:
Algoritmo PrgHospital1 - main ( )

ENTRADA:
SALIDA:

tipoEnfermedad, dias, sexo


costoTotal

INICIO
NUMERO tipoEnfermedad, dias, sexo, costoTotal = 0
LEER tipoEnfermedad, dias, sexo
CUANDO ( tipoEnfermedad ) SEA
CASO 1 :
costoTotal = 200 * dias
SI ( sexo == 2 ) ENTONCES
costoTotal = costoTotal * 1.10
FINSI
TERMINAR
CASO 2 :
costoTotal = 350 * dias
TERMINAR
CASO 3 :
costoTotal = 420 * dias
SI ( sexo == 1 ) ENTONCES
costoTotal = costoTotal * 1.05
FINSI
FINCUANDO
ESCRIBIR costoTotal
FIN

Intente disear el algoritmo en diagrama de flujo.

Pag. - 10 -

Etapa 04 - Desarrollo de la codificacin.


Intente desarrollar la codificacin en el lenguaje de programacin C++.

Pag. - 11 -

Problema 025
Etapa 01 - Descripcin del problema.
Enunciado:
Leer las notas obtenidas por un alumno del curso de Matemtica Bsica III y calcule su nota
final (nf), de acuerdo a la frmula empleada por su profesor, segn los datos de la tabla.
Muestre la nota final (nf) del alumno y si est aprobado o no, considerando que la nota
mnima aprobatoria es 12 (doce).
Cdigo profesor
1
2
3

Frmula
nf = (n1 + n2 ) / 2
nf = (n1 + n2*2) / 3
nf = (n1*2 + n2) / 3

Etapa 03 - Diseo de la lgica.


1. Diseo del algoritmo.
En pseudocdigo:
Algoritmo PrgNotaFinal3 main ( )
ENTRADA:
SALIDA:

n1, n2, codigo


nf, mensaje

INICIO
NUMERO codigo, n1, n2, nf = 0
TEXTO mensaje
LEER codigo, n1, n2
CUANDO ( codigo ) SEA
CASO 1 :
nf = ( n1 + n2 ) / 2
TERMINAR
CASO 2 :
nf = ( n1 + n2 * 2 ) / 3
TERMINAR
CASO 3 :
nf = ( n1 * 2 + n2 ) / 3
FINCUANDO
SI ( nf > 12) ENTONCES
mensaje = aprobado
SINO
mensaje = desaprobado
FINSI
ESCRIBIR nf, mensaje
FIN

Intente disear el algoritmo en diagrama de flujo.

Pag. - 12 -

Etapa 04 - Desarrollo de la codificacin.


Intente desarrollar la codificacin en el lenguaje de programacin C++.

Pag. - 13 -

Problema 026
Etapa 01 - Descripcin del problema.
Enunciado:
Una librera ha puesto a la venta sus cuadernos, ofreciendo descuentos segn el siguiente
detalle:
Detalle de descuentos
Por las primeras 12 unidades 10% de descuento
Por las 12 unidades siguientes 20% de descuento
Por las dems unidades 40% de descuento

Desarrolle una solucin, que permita determinar y mostrar el importe subtotal, el importe del
descuento y el importe a pagar, por la compra de cierta cantidad de cuadernos.
Etapa 03 - Diseo de la lgica.
1. Diseo del algoritmo.
En pseudocdigo:
Algoritmo PrgLibreria main ( )
ENTRADA:
SALIDA:

precio, cantidad
subtotal, iDescuento , iPagar

INICIO
ENTERO cantidad
REAL precio, iSubtotal, iDescuento, iPagar, dscto
LEER precio, cantidad
SI ( cantidad <= 12 ) ENTONCES
dscto = cantidad * 0.10
SINO SI ( cantidad <= 24 ) ENTONCES
dscto = 12 * 0.10 + (cantidad 12) * 0.20
SINO
dscto = 12 * 0.10 + 12 * 0.20 + (cantidad 24) * 0.4
iSubtotal = precio * cantidad
iDescuento= precio * dscto
iPagar = iSubtotal - iDescuento
ESCRIBIR iSubtotal, iDescuento, iPagar
FIN

Intente disear el algoritmo en diagrama de flujo.


En algunas ocasiones podr encontrar una solucin cmo la mostrada anteriormente,
donde la estructura lgica de decisin mltiple (SI) no presenta explcitamente el fin de la
estructura (FINSI). Este formato se puede utilizar, en forma opcional, cuando existe slo
una instruccin en cada uno de los bloques o flujos de la estructura lgica de decisin
mltiple (SI). Es importante mencionar que para poder visualizar adecuadamente este
formato se utiliza un nmero diferente de tabulaciones en cada instruccin. Su uso se ha
extendido por las nuevas posibilidades que ofrecen los actuales lenguajes de
programacin.

Pag. - 14 -

Etapa 04 - Desarrollo de la codificacin.


Intente desarrollar la codificacin en el lenguaje de programacin C++.

Pag. - 15 -

Problema 027
Etapa 01 - Descripcin del problema.
Enunciado:
En una oficina de empleados, categorizan a los postulantes en funcin del sexo y de la edad,
de acuerdo a lo siguiente:
- Si la persona es de sexo femenino:
- Categora FA si tienen menos de 23 aos.
- Categora FB en caso contrario.
- Si la persona es de sexo masculino:
- Categora MA si tiene menos de 25 aos.
- Categora MB en caso contrario.

Etapa 03 - Diseo de la lgica.


1. Diseo del algoritmo.
En pseudocdigo:
Algoritmo PrgCategoriaPostulante main ( )

ENTRADA:
SALIDA:

sexo, edad
categoria

INICIO
CARACTER sexo
ENTERO edad
TEXTO categoria =
LEER sexo, edad
CUANDO ( sexo ) SEA
CASO f :
CASO F :
SI ( edad < 23 ) ENTONCES
categoria = FA
SINO
categoria = FB
FINSI
TERMINAR
CASO m :
CASO M :
SI ( edad < 25 ) ENTONCES
categoria = MA
SINO
categoria = MB
FINSI
FINCUANDO
ESCRIBIR categora
FIN
Intente disear el algoritmo en diagrama de flujo.

Pag. - 16 -

Etapa 04 - Desarrollo de la codificacin.


Intente desarrollar la codificacin en el lenguaje de programacin C++.

Pag. - 17 -

Problema 028

Etapa 01 - Descripcin del problema.


Enunciado:
Un negocio vende tres tipos de artculos. El mouse tiene un costo de $3 dlares, el teclado de
$5 dlares y la CPU de $250 dlares. Segn la cantidad que compra el cliente se aplica la
siguiente tabla de descuentos:

Tipo de producto
Mouse
Teclado
CPU

Cantidad < 10
2%
3%
5%

Cantidad >=10
4%
6%
7%

Ingresar la cantidad y el tipo de artculo que el cliente desea comprar. Considere que el
cliente slo puede comprar un tipo de producto a la vez. Determinar el monto total a pagar.

Etapa 03 - Diseo de la lgica.


Intente disear el algoritmo en pseudocdigo y diagrama de flujo.

Etapa 04 - Desarrollo de la codificacin.


Intente desarrollar la codificacin en el lenguaje de programacin C++.

Pag. - 18 -

Problema 029
Etapa 01 - Descripcin del problema.
Enunciado:
Desarrollar un programa que permita ingresar el da, el mes y el ao de una determina fecha.
Determinar si la fecha ingresada es correcta y si el ao es bisiesto o no.

Etapa 03 - Diseo de la lgica.


Intente disear el algoritmo en pseudocdigo y diagrama de flujo.

Etapa 04 - Desarrollo de la codificacin.


Intente desarrollar la codificacin en el lenguaje de programacin C++.

Pag. - 19 -

Problema 030
Etapa 01 - Descripcin del problema.
Enunciado:
Desarrollar un programa que permita ingresar un nmero arbico entre 1000 y 3000.
Determinar y mostrar el equivalente del nmero ingresado en nmero romano.

Etapa 03 - Diseo de la lgica.


Intente disear el algoritmo en pseudocdigo y diagrama de flujo.

Etapa 04 - Desarrollo de la codificacin.


Intente desarrollar la codificacin en el lenguaje de programacin C++.

Ahora, se recomienda solucionar los problemas propuestos del 21 al 80.

Pag. - 20 -

Anda mungkin juga menyukai