Escolar Documentos
Profissional Documentos
Cultura Documentos
ALGORITMIA
C++
Págin
a1
ALGORITMIA Y C++
1.1 Algoritmo
Un algoritmo es un conjunto ordenado y finito de instrucciones que conducen a la solución de
un problema. En la vida cotidiana ejecutamos constantemente algoritmos. Por ejemplo, al
instalar un equipo de sonido ejecutamos las instrucciones contenidas en el manual del equipo,
este conjunto de instrucciones constituyen un algoritmo. Otro caso de algoritmo es el algoritmo
matemático de Euclides para la obtención del máximo común divisor de dos números.
Si un algoritmo puede ser ejecutado por una computadora, se dice que es un algoritmo
computacional; en caso contrario, se dice que es un algoritmo no computacional. Según
esto, el algoritmo de Euclides es un algoritmo computacional; pero el algoritmo para instalar el
equipo de sonido es un algoritmo no computacional. Para que un algoritmo pueda ser
ejecutado por una computadora se necesita expresar el algoritmo en instrucciones
comprensibles por la computadora, para esto se requiere de un determinado lenguaje de
programación. Al algoritmo expresado en un determinado lenguaje de programación, se
denomina programa. Puesto de otra manera, podemos decir que, un programa es la
implementación o expresión de un algoritmo en un determinado lenguaje de programación
siguiendo las reglas establecidas por el lenguaje elegido. En la Figura 1.1 que sigue se muestra
la relación entre problema, algoritmo y programa.
Entradas:
- 1 kilo de bonito
- 3 camotes sancochados
- 3 cebollas cortadas a lo largo
- 1 rocoto en rodajas
- 3 ramas de apio picado
- 2 ramitas de culantro picado
- 4 vasos de jugo de limón
- 4 cucharadas de ajo molido
- 2 cucharadas de ají amarillo molido
- sal y pimienta
Proceso:
- Cortar la carne de pescado en pequeños trozos.
Págin
a2
ALGORITMIA Y C++
Ejemplo 1.2:- Algoritmo para expresar en centímetros y pulgadas una cantidad dada en
metros.
Entrada:
La cantidad M de metros
Proceso:
Cálculo de centímetros : C = M*100
Cálculo de pulgadas : P = C/2.54
Salida:
La cantidad C de centímetros y la cantidad P de pulgadas
Este es un algoritmo computacional escrito en lenguaje natural, puede ser convertido en un
programa de computadora, pero también puede ser ejecutado manualmente por una persona.
1.2 Desarrollo de un algoritmo
El desarrollo de un algoritmo y el programa de computadora es parte creativa del especialista
pero se recomienda tener en cuenta ciertas fases para alcanzar el éxito al final de cada
producto, estas fases son las siguientes:
1. Análisis.
2. Creación de Algoritmo.
3. Codificación del Programa
1. Análisis
El análisis nos permite conocer el problema o caso de estudio, de esta forma podemos
saber que debemos conseguir con el desarrollo del algoritmo.
Ya sabemos que el algoritmo tiene tres partes (entrada, proceso y salida), por los tanto
debemos realizar tres preguntas básicas:
1. ¿Qué resultados necesitas obtener?
PROGRAMA
3
2
1
Págin
a3
ALGORITMIA Y C++
Entreda:
El valor del lado del cuadrado
Proceso:
Calcular el área: área = lado * lado
Salida:
El área
1. Creación de Algoritmo
Para la creación del algoritmo se tienen varias herramientas: Pseudocódigo, Diagramas
de flujo y Diagramas NS.
• Diagramas de Flujo
Un Diagrama de Flujo representa la esquematización gráfica de un algoritmo, el
cual muestra gráficamente los pasos o procesos a seguir para alcanzar la solución
de un problema. Su correcta construcción es sumamente importante porque, a
partir del mismo se escribe un programa en algún Lenguaje de Programación. Si el
Diagrama de Flujo está completo y correcto, el paso del mismo a un Lenguaje de
Programación es relativamente simple y directo
Cuadro 1.0 Símbolos de Diagramas de Flujo
SÍMBOLO SIGNIFICADO
Págin
a4
ALGORITMIA Y C++
SI
NO
Págin
a5
ALGORITMIA Y C++
Área
Imprimir
FIN
Leer
= Lado
INICIO Lado
Área
*
Lado N2
• El Pseudocódigo
El pseudocódigo es un lenguaje de pseudoprogramación utilizado para escribir
algoritmos computacionales. Como lenguaje de pseudoprogramación, el
pseudocódigo es una imitación de uno o más lenguajes de programación. De esta
manera podemos encontrar pseudocódigos orientados a lenguajes de
programación como Pascal, Java, C, C++, etc. En el caso de este curso
orientaremos los pseudocódigos a los lenguajes Java, C y C++. El objetivo del
pseudocódigo es permitir que el programador se centre en los aspectos lógicos de
la solución, evitando las reglas de sintaxis de los lenguajes de programación. No
siendo el pseudocódigo un lenguaje formal, los pseudocódigos varían de un
programador a otro, es decir, no hay un pseudocódigo estándar.
Ejemplo de Pseudocódigo: Programa para calcular el área del cuadrado
Real lado
Real área
Inicio
Visualizar "Introduce el lado del cuadrado"
Leer lado
Área = lado * lado
Visualizar "El área del cuadrado es", área
Fin
Págin
a6
ALGORITMIA Y C++
• EJECUTAR EL PROGRAMA
Para ejecutar el programa debemos presionar Ctrl + F9, en la imagen 02 nos
muestra el mensaje para ingresar el valor del lado del cuadrado, después de
ingresar presionamos ENTER y se muestra el resultado que vemos en la imagen
03.
Imagen 02 Ingresar el valor del lado del cuadrado
Págin
a7
ALGORITMIA Y C++
#include
void
CABECER
CUERPO
main()
<iostream.h>
A
{
Instrucción 1;
Instrucción 2;
Instrucción 3;
…;
}
CUERPO
• LIBRERÍAS INCLUIDAS
Iniciaremos con describir las Cabeceras (#include <libreria.h>).- Las
cabeceras son indispensables para programar en C++ ya que en ellas se
encuentran todas las funciones de Entrada y Salida, Procesamiento de datos, como
cadenas, etc. Sin dichos includes nuestro programa no funcionará.
• void main()
Un programa en C++, puede estar compuesto por varios sub programas (tema de
próximos capitulos) y todos están controlados por un programa principal, entonces
main() es el programa principal.
Págin
a8
ALGORITMIA Y C++
Cada programa puede devolver un valor mediante el nombre en este caso por medio
de main(), entonces void indica que no espera ningún valor de retorno.
• {}.-LLAVES
El código que escribiremos en el procedimiento va encerrado entre llaves
"{ }", que significan inicio "{" y final "}", esto también se utilizan en las
condiciones selectivas, bucles, etc.
• ;(Punto y coma)
Cada instrucción en el programa escrito en C++ en punto y coma(;), es de
esta forma como la computadora interpretará cada uno de los pasos de un
programa.
1.3 Datos
Se denominan datos a todo aquello que llega nuestro cerebro por medio de nuestros sentidos,
en una computadora podemos distinguir los siguientes tipos de datos.
• NUMÉRICOS
Datos de números enteros: 12, 20300, 15, etc.
Datos de números reales: 3.1416, 2345.456, etc.
• CADENAS Y CARACTER
Datos de tipo carácter: 'a', 'B', ';', '<', '+', etc.
Datos de tipo cadena: "Hola", "Algoritmos Computacionales", etc.
1.4 Variables
Una variable es una localización o casillero en la memoria principal que almacena un valor que
puede cambiar en el transcurso de la ejecución del programa. Cuando un programa necesita
almacenar un dato, necesita una variable. Toda variable tiene un nombre, un tipo de dato y un
valor. Antes de poder utilizar una variable es necesario declararla especificando su nombre y
su tipo de dato. Para declarar variables usaremos los siguientes formatos:
Págin
a9
ALGORITMIA Y C++
nombre1, nombre2, ..., Nombres de las variables. El nombre de una variable debe
nombren comenzar con una letra, un símbolo de subrayado o un símbolo
de dólar. Los demás caractéres del nombre puede ser letras,
símbolos de subrayado o símbolo de dólar. Debe considerarse
también que una letra mayúscula se considera diferente de una
letra minúscula.
1.5.2 Salida
Consiste en mostrar el valor de una variable o un mensaje en un dispositivo de salida,
como la pantalla. En general, la acción de mostrar el valor de una variable o mensaje
se expresa en el pseudocódigo mediante la palabra IMPRIMIR de la siguiente forma:
IMPRIMIR variable o IMPRIMIR “Mensaje”
Por ejemplo, la instrucción:
IMPRIMIR importeCompra
Muestra, en algún dispositivo de salida (como la pantalla), el valor de la variable
importeCompra.
IMPRIMIR “El Importe de compra es:”
Muestra, el mensaje “El Importe de compra es:” en el dispositivo de salida
(como la pantalla).
Ejemplos
cout<<sueldo;
1.5.3 Asignación
cout<<”El sueldo es:”<<sueldo;
Consiste en asignar a una variable el valor de una expresión. La expresión puede ser
una simple variable, un simple dato o una combinación de variables, datos y
operadores. La asignación se expresa en el pseudocódigo de la siguiente forma:
variable = expresión
Donde variable y el valor de expresión deben tener el mismo tipo de dato.
Ejemplo
N = 25
M = 30
Págin
a 11
ALGORITMIA Y C++
SUMA = N + M
Nombre = “Juan Pablo”
Cada una de las variables tienen un valor que se les asigno, la variable SUMA
posee el valor 55.
Ejemplo 1.4:- Algoritmo para expresar en centímetros y pulgadas una cantidad dada en
metros.
Esta es una solución en pseudocódigo del ejemplo 1.2 utilizando conceptos computacionales
de variable, entrada de datos y salida de resultados. La solución considera que 1 metro = 100
centímetros y que 1 pulgada = 2.54 centímetros.
INICIO
REAL M, C, P
LEER M
C = M*100
P = C/2.54
IMPRIMIR C, P
FIN
Págin
a 12
ALGORITMIA Y C++
Págin
a 13
ALGORITMIA Y C++
Los operadores aritméticos pueden utilizarse con tipos enteros y reales. Si en una
operación con dos operandos, ambos operandos son enteros, el resultado es un
entero; si alguno de ellos es real, el resultado es real. Así, 15/4 es 3 y no 3.75; en
cambio, 15.0/4 es 3.75.
1.6.2 Reglas de jerarquía de los operadores aritméticos
Cuando una expresión aritmética tiene más de un operador aritmético, el orden de
aplicación de los operadores sigue un orden preciso determinado por las reglas de
jerarquía de los operadores aritméticos, que se muestran en la siguiente tabla:
Tabla 1.2 Reglas de jerarquía de los operadores aritméticos
Operador Orden de evaluación
() Se evalúan en primer lugar
*, /, % Se evalúan en segundo lugar
+, - Se evalúan en tercer lugar
Si existen paréntesis anidados, se evalúa primero la expresión en el par más interno. Si
varios operadores o paréntesis tienen la misma jerarquía, la evaluación será de
izquierda a derecha.
• EJEMPLOS DE EXPRESIONES ALGEBRAICAS EN EXPRESIONES
ALGORITMICAS
ALGEBRAICAS ALGORITMICAS
e = a/b/c
e = a*b*c/d/e
Págin
a 14
ALGORITMIA Y C++
Págin
a 15
ALGORITMIA Y C++
Inicio
.
.
acción 1
acción 2
acción 3
.
.
Fin
Algoritmo
INICIO
REAL base, altura, area, perímetro
LEER base, altura
area = base*altura
perimetro = 2*(base+altura)
IMPRIMIR area, perimetro
FIN
Ejemplo 2:- Diseñe un pseudocódigo para convertir una longitud dada en metros a sus
equivalentes en centímetros, pies, pulgadas y yardas. Considere que: 1 metro = 100
centímetros, 1 pulgada = 2.54 centimetros, 1 pie = 12 pulgadas, 1 yarda = 3 pies.
Algoritmo
INICIO
REAL cmetr,ccent,cpies,cpulg,cyard
LEER cmetr
ccent = cmetr*100
cpulg = ccent/2.54
cpies = cpulg/12
cyard = cpies/3
IMPRIMIR cpulg, cpies, cyard
FIN
Ejercicio 3:- Una institución benéfica europea ha recibido tres donaciones en soles, dólares
y marcos. La donación será repartida en tres rubros: 60% para la implementación de un
centro de salud, 40% para un comedor de niños y el resto para gastos administrativos.
Diseñe un algoritmo que determine el monto en euros que le corresponde a cada rubro.
Considere que: 1 dólar = 3.52 soles, 1 dólar = 2.08 marcos, 1 dólar = 1.07 euros.
Algoritmo
INICIO
Págin
a 16
ALGORITMIA Y C++
Algoritmo
INICIO
ENTERO tmin, tseg, tcen
REAL thor, velkmhr, espmt, espkm
LEER tmin, tseg, tcen, espmt
thor = tmin/60 + tseg/3600 + tcen/360000
espkm = espmt/1000
velkmhr = espkm/thor
IMPRIMIR velkmhr
FIN
Ejercicio 5:- Diseñe un algoritmo que determine la cifra de las unidades de un número
natural.
Solución 1
Análisis
Puede comprobarse que la cifra de las unidades de un número es igual al resto de la división
del número entre 10. Observe para ello las siguientes divisiones:
3245 10
5 324
768 10
8 76
9 10
9 0
Podemos concluir entonces que:
Unidades = numero % 10
Siendo % el operador residuo. Este operador permite obtener el residuo de una división, así
como / permite obtener el cociente.
Algoritmo
INICIO
ENTERO numero, unidades
LEER numero
unidades = numero % 10
IMPRIMIR unidades
FIN
Págin
a 17
ALGORITMIA Y C++
Solución 2
Análisis
El residuo de una división entera puede obtenerse también sin recurrir al operador %, de la
siguiente forma:
unidades = numero - (numero / 10) * 10
Observe para esto que en la división (numero/10) los operandos son enteros por lo que el
cociente será un entero. Así por ejemplo, si numero es igual a 3245, la división (numero/10)
produce 324, aunque matemáticamente sea 324.5; es decir, se descarta la parte decimal.
Algoritmo
INICIO
ENTERO numero, unidades
LEER numero
unidades = numero - (numero/10)*10
IMPRIMIR unidades
FIN
Ejercicio 6:- Diseñe un algoritmo que determine la suma de las cifras de un número entero
positivo de 4 cifras.
Solución 1
Análisis
Las cifras pueden ser obtenidas mediante divisiones sucesivas entre 10. Para el efecto,
considere el caso de un número N igual a 3245:
3245 10
5 324
unidades = N%10
cociente = N/10
324 10
4 32
decenas = cociente%10
cociente = cociente/10
32 10
2 3
centenas = cociente%10
millares = cociente/10
Algoritmo
INICIO
ENTERO N, suma, millares, centenas, decenas, unidades, resto
LEER N
unidades = N%10
cociente = N/10
decenas = cociente%10
cociente = cociente/10
centenas = cociente%10
millares = cociente/10
suma = unidades + decenas + centenas + millares
IMPRIMIR suma
FIN
Solución 2
Págin
a 18
ALGORITMIA Y C++
Análisis 2
Considerando que el número tiene 4 cifras, las cifras también pueden ser obtenidas mediante
divisiones sucesivas entre 1000, 100 y 10. Para el efecto, considere el caso de un número N
igual a 3245:
3245 1000
245 3
millares = N/1000
resto = N%1000
245 100
45 2
centenas = resto/100
resto = resto%100
45 10
3 4
decenas = resto/10
unidades = resto%10
Algoritmo
INICIO
ENTERO N, suma, millares, centenas, decenas, unidades, resto
LEER N
millares = N/1000
resto = N%1000
centenas = resto/100
resto = resto%100
decenas = resto/10
unidades = resto%10
suma = unidades + decenas + centenas + millares
IMPRIMIR suma
FIN
Ejercicio 7:- Diseñe un algoritmo que lea la hora actual del día HH:MM:SS y determine
cuantas horas, minutos y segundos restan para culminar el día.
Algoritmo
INICIO
ENTERO hor1, min1, seg1, hor2, min2, seg2, segres, resto
LEER hor1, min1, seg1
segres = 86400 - (hor1*3600 + min1*60 + seg1)
hor2 = segres/3600
resto = segres%3600
min2 = resto/60
seg2 = resto%60
IMPRIMIR hor2, min2, seg2
FIN
Ejercicio 8:- Diseñe un algoritmo para sumar dos tiempos dados en horas, minutos y
segundos.
Algoritmo
INICIO
ENTERO hor1, min1, seg1, hor2, min2, seg2, hor3, min3, seg3, totseg, resto
LEER hor1, min1, seg1, hor2, min2, seg2
totseg = (hor1+hor2)*3600 + (min1+min2)*60 + (seg1+seg2)
Págin
a 19
ALGORITMIA Y C++
hor3 = totseg/3600
resto = totseg%3600
min3 = resto/60
seg3 = resto%60
IMPRIMIR hor3, min3, seg3
FIN
Ejercicio 9:- El sueldo neto de un vendedor se calcula como la suma de un sueldo básico de
S/.250 más el 12% del monto total vendido. Diseñe un algoritmo que determine el sueldo
neto de un vendedor sabiendo que hizo tres ventas en el mes.
Algoritmo
INICIO
REAL venta1, venta2, venta3, ventatot, comision, sueldoneto
LEER venta1, venta2, venta3
ventatot = venta1 + venta2 + venta3
comision = 0.12*ventatot
sueldoneto = 250 + comisión
IMPRIMIR sueldoneto
FIN
Ejercicio 10:- Diseñe un algoritmo que determine el porcentaje de varones y de mujeres que
hay en un salón de clases.
Algoritmo
INICIO
REAL porcvar, porcmuj
ENTERO varones, mujeres, total
LEER varones, mujeres
total = varones + mujeres
porcvar = varones*100.0/total
porcmuj = mujeres*100.0/total
IMPRIMIR porcvar, porcmuj
FIN
Ejercicio 11:- En países de habla inglesa es común dar la estatura de una persona como la
suma de una cantidad entera de pies más una cantidad entera de pulgadas. Así, la estatura
de una persona podría ser 3' 2" ( 3 pies 2 pulgadas ). Diseñe un algoritmo que determine la
estatura de una persona en metros, conociendo su estatura en el formato inglés. Considere
que: 1 pie = 12 plg, 1 plg = 2.54 cm, 1 m = 100 cm.
Algoritmo
INICIO
REAL estmt
ENTERO cpies, cplgs
LEER cpies, cplgs
estmt = (cpies*12 + cplgs)*2.54/100
IMPRIMIR estmt
FIN
Ejercicio 12:- Diseñe un algoritmo que exprese la capacidad de un disco duro en megabytes,
kilobytes y bytes, conociendo la capacidad del disco en gigabytes. Considere que: 1 kilobyte
= 1024 bytes, 1 megabyte = 1024 kilobyte, 1 gigabyte = 1024 megabytes.
Algoritmo
Págin
a 20
ALGORITMIA Y C++
INICIO
REAL cgigabyte, cmegabyte, ckilobyte, cbyte
LEER cgigabyte
cmegabyte = cgigabyte*1024
ckilobyte = cmegabyte*1024
cbyte = ckilobyte*1024
IMPRIMIR cmegabyte, ckilobyte, cbyte
FIN
Ejercicio 13:- Diseñe un algoritmo que intercambie las cifras de las unidades de dos
números naturales.
Algoritmo
INICIO
ENTERO numero1, numero2, unidades1, unidades2
LEER numero1, numero2
unidades1 = n1%10
unidades2 = n2%10
numero1 = numero1 - unidades1 + unidades2
numero2 = numero2 - unidades2 + unidades1
IMPRIMIR n1, n2
FIN
EJERCICIOS PROPUESTOS
Págin
a 21
ALGORITMIA Y C++
19. Escribir una función que dados 2 números, calcule el porcentaje que el primero representa
respecto del segundo.
20. Calcular el sueldo de un operario conociendo la cantidad de horas que trabajó en el mes y
el valor de la hora
21. Dado el radio de una esfera calcular el volumen
22. Elabore un algoritmo que dado los datos enteros A, B, escriba el resultado de la siguiente
expresión:
R = ((A + B)2) / 3
23. En una casa de cambio necesitan construir un programa tal que dado como dato una
cantidad expresado en dólares, convierta esa cantidad a nuevo soles.
24. Escriba un programa que obtenga tres números luego calcule y muestre su suma y su
promedio.
25. Escribir un subprograma que dados a y b devuelva el cociente y el resto de la división.
26. Calcular el tiempo transcurrido entre dos horas dadas de un mismo día (ingreso de horas y
minutos).
27. Mostrar las horas, minutos y segundos de un tiempo ingresado sólo en segundos.
28. Elabore un algoritmo que calcule el número de segundos, ingresando un número de días.
29. Dada la matrícula y 5 calificaciones de un alumno obtenidas a lo largo del semestre
construya un algoritmo que imprima el promedio de sus calificaciones.
30. Elabore un algoritmo que dado el radio de una esfera calcule e imprima su área
A= 4 π R2
31. Elabore un algoritmo que dado el radio de una esfera calcule e imprima su volumen
V = 4/3 π R3
32. Hallar el área de un triángulo dado sus lados:
AT = Donde: P es perímetro
p ( p − a )( p − b)( p − c)
P=(a+b+c)/2 a,b,c son los lados
cate12 + cate2 2
37. Hallar el tercer lado de un triángulo. Sabiendo
Lado desconocido =
Págin
a 22
ALGORITMIA Y C++
39. Hallar el monto a devolver si presto un capital, a una tasa de interés, durante un tiempo o
periodo determinado.
Monto a devolver = c (1 + interés)tiempo o periodo
41. Hallar el valor en grados centesimales y radianes conocido los grados sexagesimales
Centesimales = Radianes =
10 π
( sexagesimales) ( sexagesimales)
9 180
Págin
a 23
ALGORITMIA Y C++
Por ejemplo, si se desea cambiar el signo de un número únicamente en caso que sea negativo,
podemos escribir:
SI( numero < 0 )
numero = -1 * numero
Si el número no es negativo, simplemente esta estructura se pasaría por alto y se continuaría
en la siguiente instrucción después del SI.
3.3 Estructura de Selección Doble SI - SINO
La estructura de selección doble permite seleccionar una ruta de dos rutas posibles en base a
la verdad o falsedad de una condición. Así, en la Figura 3.2, si la condición es verdadera, se
ejecuta la acción A; en caso contrario, se ejecuta la acción B.
En la Figura 3.2 se muestra el diagrama de flujo y el pseudocódigo de la estructura de
selección doble.
Diagrama de Flujo Pseudocódigo (acción simple)
SI( condicion )
acciona
SINO
accionb
Por ejemplo, la siguiente estructura de selección doble determina si una persona es mayor o
menor de edad:
SI( edad >= 18 )
estado = "Mayor de edad"
SINO
estado = "Menor de edad"
Esto imprime "Mayor de edad" si la persona tiene 18 años ó más e imprime "Menor de edad" si
la persona tiene menos de 18 años. En cualquiera de los casos, después de efectuar la
impresión, se ejecutará la primera instrucción que sigue a la estructura SI...SINO.
3.4 Estructura de Selección Doble en Cascada SI-SINO-SI
La estructura de selección doble en cascada esta formada por varias estructuras de selección
doble SI-SINO puestas una a continuación de otra de forma que a un SI-SINO le sigue otro SI-
SINO.
En la estructura de selección doble en cascada, las condiciones se evalúan en orden
descendente, pasando de una condición a otra si la condición anterior resulta falsa. En el
momento que se encuentra una condición verdadera, se efectúa la acción correspondiente a
Págin
a 24
ALGORITMIA Y C++
dicha condición y se corta el resto de la estructura. Si todas las condiciones resultan falsas, se
efectúa la acción correspondiente al último SINO, que se considera como la acción por defecto.
En la Figura 3.3 se muestra el diagrama de flujo y el pseudocódigo de la estructura de
selección doble en cascada.
Págin
a 25
ALGORITMIA Y C++
Págin
a 26
ALGORITMIA Y C++
3.6 Ejercicios
Ejercicio 1:- En una playa de estacionamiento cobran S/. 2.5 por hora o fracción. Diseñe un
algoritmo que determine cuanto debe pagar un cliente por el estacionamiento de su vehículo,
conociendo el tiempo de estacionamiento en horas y minutos.
Algoritmo 1
INICIO
ENTERO horas, minutos
REAL pago
LEER horas, minutos
SI( minutos > 0 )
horas = horas + 1
pago = horas * 2.5
IMPRIMIR pago
FIN
Algoritmo 2
INICIO
ENTERO horas, minutos, horasPagar
REAL pago
LEER horas, minutos
SI( minutos > 0 )
horasPagar = horas + 1
SINO
horasPagar = horas
pago = horasPagar * 2.5
IMPRIMIR pago
FIN
Ejercicio 2:- Diseñe un algoritmo que determine si ún número es o no es, par positivo.
Algoritmo
INICIO
REAL numero
CADENA tipoNumero
LEER numero
SI( (numero%2==0) && (numero>0) )
tipoNumero = "El número es par positivo"
SINO
tipoNumero = "El número no es par positivo"
IMPRIMIR tipoNumero
FIN
Ejercicio 3:- Diseñe un algoritmo que lea tres números y determine el número mayor.
Algoritmo
INICIO
// Declaración de variables
REAL numero1, numero2, numero3, numeroMayor
// Entrada de datos
LEER numero1, numero2, numero3
// Determina el mayor
numeroMayor = numero1
SI( numero2 > numeroMayor )
numeroMayor = numero2
SI( numero3 > numeroMayor )
Págin
a 27
ALGORITMIA Y C++
numeroMayor = numero3
// Salida de resultados
IMPRIMIR mayor
FIN
Ejercicio 4:- Una tienda ha puesto en oferta la venta al por mayor de cierto producto,
ofreciendo un descuento del 15% por la compra de más de 3 docenas y 10% en caso
contrario. Además por la compra de más de 3 docenas se obsequia una unidad del producto
por cada docena en exceso sobre 3. Diseñe un algoritmo que determine el monto de la
compra, el monto del descuento, el monto a pagar y el número de unidades de obsequio por
la compra de cierta cantidad de docenas del producto.
Algoritmo
INICIO
// Declaración de variables
REAL montopag, montocom, montodes, precio
ENTERO docenas, obsequio
// Entrada de datos
LEER docenas, precio
// Determina el monto de la compra
montocom = docenas*precio
// Determina el monto del descuento y el obsequio
SI( docenas > 3 ){
montodes = 0.15*montocom
obsequio = docenas-3
}
SINO{
montodes = 0.10*montocom
obsequio = 0
}
// Determina el monto a pagar
montopag = montocom - montodes
// Salida de resultados
IMPRIMIR montocom, montodes, montopag, obsequio
FIN
Ejercicio 5:- Diseñe un algoritmo que lea un número de tres cifras y determine si es o no
capicúa. Un número es capicúa si es igual al revés del número.
Observación
Como el número tiene tres cifras, para ser capicúa basta con que la cifra de las unidades sea
igual a la cifra de las centenas. Por ejemplo: 353, 878, etc.
Algoritmo
INICIO
// Salida de resultados
ENTERO numero, unidades, centenas
CADENA tipoNumero
// Entrada de datos
LEER numero
Págin
a 28
ALGORITMIA Y C++
centenas = numero/100
Ejercicio 6:- Diseñe un algoritmo que califique el puntaje obtenido en el lanzamiento de tres
dados en base a la cantidad seis obtenidos, de acuerdo a lo siguiente: tres seis, excelente;
dos seis, muy bien; un seis, regular; ningún seis, pésimo.
Algoritmo
INICIO
// Declaración de variables
ENTERO dado1, dado2, dado3
CADENA calificacion
// Entrada de datos
LEER dado1, dado2, dado3
// Determina la calificación
SI( dado1 + dado2 + dado3 == 18 )
calificacion = "Excelente"
SINO SI( dado1+dado2 == 12 || dado1+dado3 == 12 || dado2+dado3 ==
12 )
calificacion = "Muy bién"
SINO SI( dado1 == 6 || dado2 == 6 || dado3 == 6 )
calificacion = "Regular"
SINO
calificacion = "Pésimo"
// Salida de resultados
IMPRIMIR calificacion
FIN
Ejercicio 7:- Una compañía dedicada al alquiler de automoviles cobra un monto fijo de $30
para los primeros 300 km de recorrido. Para más de 300 km y hasta 1000 km, cobra un
monto adicional de $ 0.15 por cada kilómetro en exceso sobre 300. Para más de 1000 km
cobra un monto adicional de $ 0.10 por cada kilómetro en exceso sobre 1000. Los precios ya
incluyen el 18% del impuesto general a las ventas, IGV. Diseñe un algoritmo que determine
el monto a pagar por el alquiler de un vehículo y el monto incluído del impuesto.
Algoritmo
INICIO
// Declaración de variables
REAL kilomrec, montopag, montoigv, montofijo = 30, igv = 0.18
// Entrada de datos
LEER kilomrec
Págin
a 29
ALGORITMIA Y C++
// Salida de resultados
IMPRIMIR montopag, montoigv
FIN
Ejercicio 8:- Diseñe un algoritmo que determine quienes son contemporáneos entre Juan,
Mario y Pedro.
Algoritmo
INICIO
// Declaración de variables
ENTERO juan, mario, pedro
CADENA contemporaneos
// Entrada de datos
LEER juan, mario, pedro
// Salida de resultados
IMPRIMIR contemporaneos
FIN
Algoritmo
INICIO
// Declaración de variables
REAL pc1, pc2, pc3, pc4, pcmenor, promedio
// Entrada de datos
LEER pc1, pc2, pc3, pc4
Págin
a 30
ALGORITMIA Y C++
// Determina el promedio
promedio = (pc1 + pc2 + pc3 + pc4 - pcmenor )/3
// Salida de resultados
IMPRIMIR promedio, pcmenor
FIN
Ejercicio 10:- Diseñe un algoritmo que lea tres longitudes y determine si forman o no un
triángulo. Si es un triángulo determine de que tipo de triángulo se trata entre: equilátero (si
tiene tres lados iguales), isósceles (si tiene dos lados iguales) o escaleno (si tiene tres lados
desiguales). Considere que para formar un triángulo se requiere que: "el lado mayor sea
menor que la suma de los otros dos lados".
Algoritmo
INICIO
// Declaración de variables
REAL L1, L2, L3, suma
CADENA tipoRectangulo
// Entrada de datos
LEER L1, L2, L3<
Ejercicio 11:- Diseñe un algoritmo que lea tres números enteros y determine el menor valor
positivo. Si los números positivos son iguales, dar como menor a cualquiera de ellos.
Algoritmo
Págin
a 31
ALGORITMIA Y C++
INICIO
// Declaración de variables
ENTERO a, b, c, menor
// Entrada de datos
LEER a, b, c
// Determina el menor
// Aquí a, b y c podrían ser positivos
SI( a > 0 ){
menor = a
SI( b > 0 && b < menor )
menor = b
SI( c > 0 && c < menor )
menor = c
}
// Aquí sólo b y c podrían ser positivos
SINO SI( b > 0 ){
menor = b
SI( c > 0 && c < menor )
menor = c
}
// Aquí sólo c podrían ser positivos
SINO SI( c > 0 ){
menor = c
}
// Guardamos el indicador -1 para saber que no hay positivos
SINO
menor = -1
// Salida de resultados
SI( menor != -1 )
IMPRIMIR menor
SINO
IMPRIMIR "No se ingresó ningún número positivo"
FIN
Ejercicio 12:- Diseñe un algoritmo que lea tres números y los imprima de mayor a menor y
de menor a mayor.
Algoritmo
INICIO
// Declaración de variables
REAL n1, n2, n3, mayor, menor, medio
// Entrada de datos
LEER n1, n2, n3
// Determina el menor
menor = n1
SI( n2 < menor )
menor = n2
SI( n3 < menor )
menor = n3
// Determina el mayor
mayor = n1
SI( n2 > mayor )
mayor = n2
SI( n3 > mayor )
mayor = n3
// Determina el medio
medio = n1+n2+n3-mayor-menor
Págin
a 32
ALGORITMIA Y C++
Ejercicio 13:- Diseñe un algoritmo para obtener el grado de eficiencia de un operario de una
fábrica de tornillos, de acuerdo a las siguientes condiciones, que se le imponen para un
período de prueba:
- Menos de 200 tornillos defectuosos.
- Más de 10000 tornillos producidos.
El grado de eficiencia se determina de la siguiente manera:
- Si no cumple ninguna de las condiciones, grado 5.
- Si sólo cumple la primera condición, grado 6.
- Si sólo cumple la segunda condición, grado 7.
- Si cumple las dos condiciones, grado 8.
Ejercicio 14:- Se cuenta con los votos obtenidos por Juan, Pedro y María en una elección
democrática a la presidencia de un club. Para ganar la elección se debe obtener como
mínimo el 50% de los votos más 1. En caso que no haya un ganador se repite la elección en
una segunda vuelta. Van a la segunda vuelta los dos candidatos que obtengan la más alta
Págin
a 33
ALGORITMIA Y C++
votación. Se anula la elección en caso de producirse un empate doble por el segundo lugar o
un empate triple. Diseñe un algoritmo que determine el resultado de la elección.
Algoritmo
INICIO
// Declaración de variables
ENTERO vjuan, vpedro, vmaria, vmingan
CADENA resultado
LEER vjuan, vpedro, vmaria
vmingan = (vjuan + vpedro + vmaria)/2 + 1
SI( vjuan >= vmingan )
resultado = "Gana Juan "
SINO SI( vpedro >= vmingan )
resultado = "Gana Pedro"
SINO SI( vmaria >= vmingan )
resultado = "Gana María"
SINO SI( vpedro > vjuan && vmaria > vjuan )
resultado = "Pasan a la segunda vuelta Pedro y María"
SINO SI( vpedro > vmaria && vjuan > vmaria )
resultado = "Pasan a la segunda vuelta Pedro y Juan"
SINO SI( vmaria > vpedro && vjuan > vpedro )
resultado = "Pasan a la segunda vuelta María y Juan "
SINO
resultado = "Elección anulada"
// Salida de resultados
IMPRIMIR resultado
FIN
Ejercicio 15:- Diseñe un algoritmo que lea un número entero de 3 cifras, y forme el mayor
número posible con las cifras del número ingresado. El número formado debe tener el mismo
signo que el número ingresado.
Algoritmo
INICIO
// Declaración de variables
ENTERO num1, num2, numaux, uni, dec, cen, menor, mayor, medio
// Entrada de datos
LEER num1
// Si el número tiene tres cifras...
SI( ( num1 >= 100 && num1 <= 999 ) && ( num1 >= -999 && num1 <= -100 ) ){
// Guarda el número en una variable auxiliar para preservar el signo
numaux = num1
// Cambia el signo de num1 en caso de ser negativo
SI( num1 < 0 )
num1 = -num1
// Determina las cifras del número
cen = num1/100
dec = (num1%100)/10
uni = (num1%100)%10
// Determina la cifra menor
menor = cen
SI( dec < menor )
menor = dec
SI( uni < menor )
Págin
a 34
ALGORITMIA Y C++
menor = uni
// Determina la cifra mayor
mayor = cen
SI( dec > mayor )
mayor = dec
SI( uni > mayor )
mayor = uni
// Determina la cifra del medio
medio = cen+dec+uni-mayor-menor
// Forma el nuevo número
SI( numaux > 0 )
num2 = mayor*100 + medio*10 + menor
SINO
num2 = -1*(menor*100 + medio*10 + mayor)
// Imprime el nuevo número
IMPRIMIR num2
}
SINO
IMPRIMIR "El número no tiene tres cifras"
FIN
Págin
a 35
ALGORITMIA Y C++
− B + B 2 − 4 AC − B − B 2 − 4 AC
2A 2A
13. Dado un número que representa un mes, escribir el nombre del mes correspondiente.
14. Dado 3 longitudes verificar si se puede formar un triángulo. Se conoce que en todo
triángulo cada lado es menor que la suma de los otros dos, pero mayor que su diferencia.
15. Dado 3 longitudes compruebe si se puede formar un triángulo y clasifique que tipo de
triángulo es. Se conoce lo siguiente
Triángulo Equilátero: todos lados iguales
Triángulo Isósceles: 2 lados iguales
Triángulo escaleno: todos los lados diferentes
16. Dado un mes escribir la cantidad de días de dicho mes.
17. Dados 3 números, mostrarlos por pantalla en orden creciente.
18. Dados 3 números, mostrarlos por pantalla en orden decreciente.
19. Dada una fecha día, mes y año (4 digitos), informar si es correcta o no.
20. Desde un dispositivo de e/s se leen tres números. Indique cual de ellos es la suma de los
otros dos.
21. Un año es bisiesto si es múltiplo de 4, pero no de 100, pero sí de 400. (ejemplos: 1984 es
bisiesto, 2000 es bisiesto, 1800 no es bisiesto). Determine un algoritmo que permita
determinar si un año introducido desde el teclado es bisiesto o no.
22. Un tienda vende dos productos. Realice un diagrama que permita ingresar las unidades
vendidas y sus respectivos precios y se devuelva: SubTotal, Descuento, IGV y Monto a
pagar.
El descuento se hará de la siguiente manera
Subtotal Descuento
1000 – 2000 5%
>3000 15%
Págin
a 36
ALGORITMIA Y C++
23. Los trabajadores de una empresa tienen 3 turnos: mañana, tarde y noche. Desde luego un
trabajador solo pertenece a un turno. La tarifa de los turnos de mañana y tarde son iguales
y los de la noche es 30% más. Se deberá saber el numero de horas trabajadas el costo por
horas.
24. Trabajando con números se encontró que 12 * 12 = 144 y que 21 * 2 1 = 441, así también,
13 * 1 3 = 169 y 31 * 31 = 961. Escribe un programa que permite ingresar un número de 2
dígitos y colocar si cumple o no con dicha características.
25. Un número es un capicúa si su valor es el mismo tanto si es leído de izquierda a derecha
como de derecha a izquierda. Por ejemplo: 353 es un capicúa. 354 no es un capicúa.
Diseña un algoritmo que determine si un número de tres dígitos introducido es un capicúa o
no.
26. Hacer un diagrama que permite ingresar un número (cantidad en soles) y devuelva ¿Cuál
es el menor N° de billetes de 100, 50, 20, 10 y monedas de 5 y 1 son necesarias para
reproducir la cantidad. Ejem; 1488 100=14 50=1 20=1 10=1 5=1 1=3
27. Realizar un DF para un programa que indique la condición de un alumno, dependiendo su
promedio, su condición se basa en el siguiente cuadro
Promedio Condición
>=18 y <=20 Excelente
>=15 y <=17 Muy Bueno
>=11 y <=14 Regular
>=6 y <= 10 Malo
>=0 y <= 5 Muy Malo
Categoría Valor/Hora
(S/.)
Administrador 5
Técnico 7
Profesional 9
Operario 3
– Horas extras son S/. 2.00 por cada hora extra sobre el sueldo base
– El porcentaje por antigüedad es el siguiente:
Antigüedad %
>=1 y <=3 5
>=4 y <=6 10
>=7 y <=10 15
>=11 y 20
<=15
>=16 30
Págin
a 37
ALGORITMIA Y C++
• Mientras
La condición se ejecuta primero que las acciones que se encuentran dentro de la estructura
MIENTRAS.
Mientras (Condición)
Acción 2
Acción 3
Acción 4
Hacer Mientras
La condición se ejecuta después que las acciones que se encuentran dentro de la
estructura MIENTRAS.
Págin
a 38
ALGORITMIA Y C++
F V Acción
Acción 2
3
4
Condición
1
Acción 1
hacer
Acción 2
Acción 3
mientras (condición)
Acción 4
• Para
La estructura Para ejecuta una o mas acciones o procesos en un número finito de
repeticiones, usa una variable que cuenta el número de repeticiones, la variable debe tener
un valor inicial y un valor final.
Acción 2
Acción 3
mientras (condición)
Acción 4
Págin
a 39