Você está na página 1de 39

ALGORITMIA Y C++

ALGORITMIA
C++

Págin
a1
ALGORITMIA Y C++

CAPÍTULO 1: CONCEPTOS BÁSICOS DE ALGORITMIA

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.

Figura 1.1 Problema, algoritmo y programa


Todo algoritmo debe tener las siguientes características:
• Debe ser preciso, es decir, cada instrucción debe indicar de forma
inequívoca que se tiene que hacer.
• Debe ser finito, es decir, debe tener un número limitado de pasos.
• Debe ser definido, es decir, debe producir los mismos resultados para
las mismas condiciones de entrada.
Todo algoritmo puede ser descompuesto en tres partes:
• Entrada de datos.
• Proceso.
• Salida de resultados.

Ejemplo 1.1:- Algoritmo para preparar ceviche de bonito para 6 personas.

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++

- Mezclar la carne con el jugo de limón, el ajo, la


pimienta, el culantro, el ají amarillo y el apio.
- Dejar reposar 30 minutos.
- Agregar sal al gusto y echar las cebollas cortadas.
- Servir acompañando el cebiche con el camote sancochado
y el rocoto en rodajas
Salida:
-.El ceviche
Evidentemente este es un algoritmo no computacional, no podrá ser ejecutado por una
computadora, pero sí por una persona. Por si acaso el ceviche es peruano.

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

Describiremos cada uno de los pasos:

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

3. ¿Qué procesos se realizan para obtener el resultado?

Después de estas preguntas debemos organizar los pasos que debemos


realizar para llevar a cabo el algoritmo.

Págin
a3
ALGORITMIA Y C++

Ejemplo de Análisis para calcular el área del cuadrado

¿Qué resultado necesitas obtener?


El área del cuadrado Área

¿Qué datos necesitamos para obtener el área?


El valor del Lado del cuadrado Lado

¿Qué procesos se realizan para obtener el área del cuadrado?


Multiplicar el lado del cuadrado Área = Lado * Lado

Entonces según las partes de un algoritmo tenemos:

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++

Indica el inicio y final de un diagrama de flujo

Indica Entrada o Salida de datos o mensajes

Representan los procesos, operaciones aritméticas y


asignación de valores.

SI

Representan las Decisión o comparaciones de datos


usando operadores de relación y lógicos.

NO

Decisión múltiple (también es con operaciones lógicas


o de comparación, solo sigue uno pero de varios
caminos)

Indica el sentido de ejecución del diagrama de flujo

Indica una llamada a una subrutina (es un


subprograma que realiza un determinado proceso y
retorna luego al programa principal).

Págin
a5
ALGORITMIA Y C++

Cuadro 2.0 Diagrama para calcular el área del cuadrado

Á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

1. Codificación del Programa


Para que un algoritmo pueda ser ejecutado por un ordenador debemos usar un
lenguaje de programación donde escribiremos el algoritmo con instrucciones que
pueda interpretar la computadora.
Existen diversos lenguajes de Programación pero el que usaremos es el lenguaje de
programación C++.
Cuando se ha terminado el programa se debe EJECUTAR y verificar los errores y
depurar según los datos ingresados.

Págin
a6
ALGORITMIA Y C++

Imagen 1.0 Ejemplo de Programa en C++ para la suma de dos números

• 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

Imagen 03 Mostrar el resultado

• ESTRUCTURA DE UN PROGRAMA EN C++


El lenguaje de programación C++ como todo lenguaje tiene su propia sintaxis y
estructura que es lo que debemos respetar para que el computador pueda entender lo
que debe realizar.
Cuadro 02 Estructura de un programa en C++

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á.

Tabla 1.0 ALGUNAS DE LAS LIBRERÍAS Y FUNCIONES MÁS


UTILIZADAS
LIBRERÍA DESCRIPCIÒN FUNCIONES
Contiene funciones de E/S de cprintf(), cscanf(), cgets(),
cadenas, funciones de teclado, cputs(), clrscr(),
#include <conio.h>
posición de pantalla, etc. getch(),gotoxy(), gettext(),
wherex(), wherey(), etc.
Contiene las declaraciones de C++ cin, cout, class, Template
#include <iostream.h> cono E/S, clases, también utiliza
plantillas, etc.
Contiene todas las funciones sqrt, acos, asin, cos, sin,
#include <math.h> matemáticas como: raíz, coseno, seno log10, sqr,etc.
, tangente, etc.
Contiene funciones, que nos permiten int86, _int86, delay,
#include <dos.h> trabajar los discos, escribir en ellos, abswrite, bdos, etc....
mostrar parámetros de la BIOS

• 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.

• TIPOS DE DATOS EN EL LENGUAJE C++


C++ no soporta un gran número de tipos de datos predefinidos, pero tiene la capacidad
para crear sus propios tipos de datos. Todos los tipos de datos simples o básicos de
C/C++ son, esencialmente números. Los tres tipos de datos básicos son:
° Enteros.
° Números de como flotante (reales)
° Caracteres.
La siguiente tabla muestra sus tamaños en bytes y el rango de valores que puede
almacenar en el lenguaje C++
Tabla 2.0 Tipos de Datos en C++
EJEMPLO BYTES RANGO
TIPO
Char 'C' 1 0...255
Short -15 2 -128...127
Int 1024 2 -32768...32768
unsigned int 42325 2 0...65535
Long 262144 4 -2147483648...2147483637
Float 1.05 4 3.4*(10-38)...3.4*(10 38)
Double 0.00045 8 1.7*(10-308...1.7*(10 308))
long double 1e-8 8 igual que el double

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++

Declaración de una variable: tipo nombre


Declaración de varias variables con el mismo tipo de dato:
tipo nombre1, nombre2, nombre3, ...,
nombren
Donde:
Tipo Es el tipo de dato de la variable que puede ser: ENTERO (si la
variable almacenará un número entero) , REAL (si la variable
almacenará un número decimal) , CARACTER (si la variable
almacenará un carácter), CADENA (si la variable almacenará
un conjunto de carácteres) o LOGICO (si la variable
almacenará el valor verdadero o el valor falso).

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.

Ejemplo 1.3:- Declaración de variables.

• La siguiente instrucción declara la variable edad de tipo ENTERO y la variable descuento


de tipo REAL.
ENTERO edad
REAL descuento
• La siguiente instrucción declara las variables nota1, nota2 y nota3, todas de tipo
ENTERO.
ENTERO nota1, nota2, nota3

DECLARACIÓN DE VARIABLES EN LENGUAJE C++


int edad;
float descuento;
int nota1, nota2, nota3;

1.5 Instrucciones Algorítmicas Básicas


Existen tres instrucciones algorítmicas básicas que son las siguientes
1.5.1 Entrada
Consiste en obtener un dato de un dispositivo de entrada, como el teclado, y
almacenarlo en una variable. En general, la acción de ingresar un dato a una variable
se expresa en el pseudocódigo mediante la palabra LEER, de la siguiente forma:
LEER variable
Por ejemplo, la instrucción:
LEER estatura
Solicita el ingreso de un valor, desde algún dispositivo de entrada (como el teclado),
para la variable estatura. LEER EN UN PROGRAMA EN LENGUAJE C++
Para el ingreso de datos usaremos la función cin, función que
necesita la librería <iostream.h>
Sintaxis
Págin
cin>>variable;
a 10
Ejemplo
int estatura;
cin>>estatura;
ALGORITMIA Y C++

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).

SALIDA EN UN PROGRAMA EN LENGUAJE C++


La salida de datos y mensajes usaremos la función cout, función
que necesita la librería <iostream.h>
Sintaxis
• cout<<variable;
• cout<<”Mensaje”;
• cout<<”Mensaje”<<variable;

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++

PROGRAMA EN LENGUAJE C++


#include <iostream.h>
void main()
{
float M,C,P;
cout<<”Ingresa valor en Metros :”;cin>>M;
C=M*100;
P=C/2.54;
cout<<”\nLos Centímetros es:”<<C;
cout<<”\nLas Pulgadas son :”<<P;
}

Nota: \n es un código de escape para poder imprimir en líneas


separadas.
• CÓDIGOS DE ESCAPE EN C++
Código Significado
'\n' Nueva Línea
'\r' retorno de carro
'\t' Tabulación
'\v' tabulación vertical
'\a' alerta(pitido sonoro)
'\b' retroceso de espacio
'\f' avance de pagina
'\\' Barra inversa
'\'' comilla simple
'\"' doble comilla
'\?' signo de interrogación
'\000' numero octal
'\xhh' número hexadecimal

1.6 Expresiones Aritméticas

Operador Significado Ejemplo


+ Suma a+b
- Resta a-b
* Multiplicación a*b
/ División a/b
% Residuo a%b
Una expresión aritmética es una combinación de variables, literales y operadores aritméticos.
1.6.1 Operadores Aritméticos
En la tabla que sigue se muestran los operadores aritméticos que vamos a utilizar.
Tabla 1.1 Operadores aritméticos

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

e = 4/((a+b)/(c/d)) + v/w/p + 5*m*n*q

• EVALUACIÓN DE CADA EXPRESIÓN


e = a/b/c
Como todos los operadores tienen la misma jerarquía, la evaluación será de izquierda a
derecha:
○ Se dividirá a entre b.
○ El resultado ya obtenido de a/b se dividirá entre c.

Note que el orden de ejecución esta de acuerdo con la expresión algebraica,


por lo que no se requiere ninguna pareja de paréntesis.
e = a*b*c/d/e
Como todos los operadores tienen la misma jerarquía, la evaluación será de izquierda a
derecha:
○ Se multiplicará a por b.
○ El resultado ya obtenido de a*b se multiplicará por c.
○ El resultado ya obtenido de a*b*c se dividirá entre d.

Págin
a 14
ALGORITMIA Y C++

○ El resultado ya obtenido de a*b*c/d se divivirá entre e.

Note que el orden de ejecución esta de acuerdo con la expresión algebraica,


por lo que no se requiere ninguna pareja de paréntesis.
e = 4/((a+b)/(c/d)) + v/w/p + 5*m*n*q
Aplicando las reglas de jerarquía de los operadores aritméticos:
○ Se sumará a más b.
○ Se dividirá c entre d.
○ El resultado ya obtenido de a+b se dividirá entre el resultado ya obtenido
de c/d.
○ Se dividirá 4 entre el resultado ya obtenido de ((a+b)/(c/d))
○ Se dividirá v entre w.
○ Se dividirá el resultado ya obtenido de v/w entre p.
○ Se multiplicará 5 por m.
○ Se multiplicará el resultado ya obtenido de 5*m por n.
○ Se multiplicará el resultado ya obtenido de 5*m*n por q.
○ Se sumará el resultado ya obtenido de 4/((a+b)/(c/d)) más el resultado ya
obtenido de v/w/p.
○ Se sumará el resultado ya obtenido de 4/((a+b)/(c/d)) + v/w/p más el
resultado ya obtenido de 5*m*n*q.
1.7 Expresiones Lógicas
Una expresión lógica combina variables, literales, operadores aritméticos, operadores
relacionales y operadores lógicos. Los operadores relacionales y los operadores lógicos se
muestran en las tablas 3.1 y 3.2.
Tabla 1.3 Operadores relacionales
Operador Significado Ejemplo
> mayor que a > b
>= mayor o igual que a >= b
< menor que a < b
<= menor o igual que a <= b
== igual a a == b
!= diferente de a != b
Tabla 1.4 Operadores lógicos
Operador Significado Ejemplo
! No !a
&& Y a && b
|| Ó a || b

CAPÍTULO 2: ESTRUCTURAS DE SECUENCIA


2.1 Concepto
Una estructura secuencial es aquella en la que las instrucciones están una a continuación de la
otra siguiendo una secuencia única, sin cambios de ruta. La estructura secuencial tiene una
entrada y una salida.

Págin
a 15
ALGORITMIA Y C++

En la Figura 4.1 se muestra el diagrama de flujo y el pseudocódigo de una estructura


secuencial.
Diagrama de Flujo Pseudocódigo

Inicio
.
.
acción 1
acción 2
acción 3
.
.
Fin

Figura 2.1 Estructura Secuencial: Diagrama de Flujo y Pseudocódigo


2.2 Ejercicios resueltos
Ejercicio 1:- Diseñe un pseudocódigo que halle el área y el perímetro de un rectángulo.
Considere que: area = base x altura y perimetro = 2 x (base+altura).

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++

REAL c soles, cdolares, c marcos, ceuros, rubro1, rubro2, rubro3


LEER csoles, cdolares, cmarcos
ceuros = (csoles/3.52 + cdolares + cmarcos/2.08)*1.07
rubro1 = ceuros*0.60
rubro2 = ceuros*0.40
rubro3 = ceuros*0.20
IMPRIMIR rubro1, rubro2, rubro3
FIN

Ejercicio 4:- En una competencia atlética de velocidad el tiempo se mide en minutos,


segundos y centésimas de segundo y, el espacio recorrido se mide en metros. Diseñe un
algoritmo para determinar la velocidad promedio de un atleta en km/hr. Considere que: 1 hora
= 60 minutos, 1 minuto = 60 segundos, 1 segundo = 100 centésimas de segundo, 1 kilómetro
= 1000 metros.

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

Elaborar un algoritmo y programa en C++ de los siguientes casos

1. Permita sumar dos números enteros.


2. Permita restar dos números enteros
3. Permita reporta las cuatro operaciones básicas (+,-,* , /) de dos números ingresados.
4. Calcular el área de un triangulo conociendo sus lados.
5. Encontrar la raíz cubica de un número ingresado.
6. Encontrar la raíz N de un número ingresado.
7. Encontrar la potencia de un número elevado a otro número ingresado. P = nm
8. Convertir una cantidad ingresada en metros a centímetros y pulgadas, reportar centímetros
y pulgadas.
C = M*100
P = C/2.54
9. Convertir una cantidad dada en segundos a Minutos.
10. Calcular la edad de una persona, se debe ingresar el año de nacimiento y el año actual.
11. Convertir una cantidad ingresada en soles a dólares, se debe ingresar el monto en soles y
el tipo de cambio.
12. Convertir una cantidad ingresada en dólares a soles, se debe ingresar el monto en dólares
y el tipo de cambio.
13. Calcular el sueldo neto de un trabajador que tiene una bonificación por el número de horas
extras trabajadas(10 soles por cada hora extra) y un descuento del 10% por seguro, se
debe ingresar el sueldo bruto el número de horas extras.
14. Ingresar dos números y devolver su suma, resta, multiplicación y división.
15. Permita ingresar grados Celsius y me reporte su equivalencia en grados Fahrenheit.
Formula:
F= 9/5 * C + 32
16. Permita ingresar año de nacimiento de una persona y devolver su edad.
17. Ingresar la cantidad y el precio de un artículo. Se debe reportar: Cantidad, Precio Unitario,
IGV y Monto a pagar.
18. Permita ingresar a y b devuelvan ab

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

33. Hallar el área del rombo conociendo sus diagonales


Area = diagonal 1 x diagonal 2 / 2
34. Hallar el volumen del cilindro sabiendo el radio y la altura.
Volumen = π Radio2 Altura
35. Calcular el área de un círculo. Sabiendo que Área = π x Radio2
36. Hallar la hipotenusa de un triángulo rectángulo.
Sabiendo Hipotenusa =

cate12 + cate2 2
37. Hallar el tercer lado de un triángulo. Sabiendo
Lado desconocido =

lado1conocido2 + lado2conocido2 − 2(lado1conocido)(lado2conocido)(cos eno(alfa))

38. Hallar la distancia entre dos puntos conociendo las coordenadas.


Distancia =

( abscisa2 − abscisa1) 2 + (ordenada2 − ordenada1) 2

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

40. Hallar el valor de 2 lados de un triangulo.


LADO 1 = LADO CONOCIDO ( SENO (ALFA) / SENO (GAMMA) )
LADO 2 = LADO CONOCIDO ( SENO (BETA) / SENO (GAMMA) )

41. Hallar el valor en grados centesimales y radianes conocido los grados sexagesimales
Centesimales = Radianes =
10 π
( sexagesimales) ( sexagesimales)
9 180

42. Calcular área de un trapecio


Area =
(basemayor+ basemenor) * altura
2

CAPÍTULO 3: ESTRUCTURAS DE SELECCIÓN


3.1 Introducción
Las estructuras de selección son estructuras de control utilizadas para la toma decisiones
dentro de un programa. A estas estructuras se conocen también como estructuras selectivas
o estructuras de decisión y son las siguientes:
• La estructura de selección simple (SI).
• La estructura de selección doble (SI-SINO).
• La estructura de selección múltiple (SEGUN)
3.2 Estructura de Selección Simple SI
La estructura de selección simple permite ejecutar una acción o un grupo de acciones sólo si se
cumple una determinada condición. Así, en el gráfico 3.1, si la condición es verdadera se
ejecuta la acción acciona; en caso contrario, no se hace nada.
Diagrama de Flujo Pseudocódigo (acción simple)
SI( condicion )
acciona

Pseudocódigo (acción compuesta)


SI( condicion ){
acciona1
acciona2
.
.
.
accionan
}

Figura 3.1 Estructura de Selección Simple

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

Pseudocódigo (acción compuesta)


SI( condicion ){
acciona1
acciona2
.
.
.
accionan
}
SINO{
Figura 3.2 Estructura de Selección Doble accionb1
accionb2
.
.
.
accionbn
}

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.

Diagrama de Flujo Pseudocódigo ( Forma 1 )


SI( condicion1 )
accion1
SINO
SI( condicion2 )
accion2
SINO
SI( condicion3 )
accion3
.
.
.
SINO
acciondefecto
Pseudocódigo ( Forma 2 )
SI( condicion1 )
accion1
SINO SI( condicion2 )
accion2
SINO SI( condicion3 )
accion3
.
.
.
SINO
acciondefecto

Figura 3.3 Estructura de Selección Doble en Cascada


Por ejemplo, la siguiente estructura de selección doble en cascada determina el signo de un
número entre positivo, negativo o cero:
SI( n > 0 )
signo = "Positivo"
SINO
SI( n < 0 )
signo = "Negativo"
SINO
signo = "Cero"
Usando el otro formato tendríamos:
SI( n > 0 )
signo = "Positivo"
SINO SI( n < 0 )
signo = "Negativo"
SINO
signo = "Cero"

3.5 Estructura de Selección Múltiple SEGUN


La estructura de selección múltiple SEGUN permite elegir una ruta de entre varias rutas
posibles, en base al valor de una variable que actúa como selector. La estructura compara el
valor del selector con las constantes c1, c2, ..., cn en orden descendente. En el momento en

Págin
a 25
ALGORITMIA Y C++

que se encuentre una coincidencia, se ejecuta la acción correspondiente a dicha constante y se


abandona la estructura.
En la Figura 3.4 se muestra el diagrama de flujo y el pseudocódigo de la estructura de
selección múltiple.

Diagrama de Flujo Pseudocódigo


SEGUN( selector ){
CASO c1 : accion1
CASO c2 : accion2
CASO c3 : accion3
.
.
.
CASO cn : accionn
DEFECTO : acciondefecto
}

Figura 3.4 Estructura de Selección Múltiple


Por ejemplo, la siguiente estructura de selección múltiple determina el nombre de la estación
del año conociendo el número de la estación (1 para Primavera, 2 para Verano, 3 para Otoño y
4 para Invierno) :
SEGÚN (numeroEstacion){
CASO 1 : nombreEstacion = "Primavera"
CASO 2 : nombreEstacion = "Verano"
CASO 3 : nombreEstacion = "Otoño"
DEFECTO : nombreEstacion = "Invierno"
}

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

// Si el número tiene tres cifras...


SI(numero >= 100 && numero <= 999 ){

// Determina la cifra de las unidades y la cifra de las


centenas
unidades = numero%10

Págin
a 28
ALGORITMIA Y C++

centenas = numero/100

// Determina el tipo de número entre capicúa o no capicúa


SI( unidades == centenas )
tipoNumero = "El número es capicúa"
SINO
tipoNumero = "El número no es capicúa"

// Muestra el tipo de número


IMPRIMIR tipoNumero
}
SINO
IMPRIMIR "Ingrese un número de tres cifras"
FIN

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++

// Determina el monto a pagar


SI( kilomrec <= 300 )
montopag = montofijo
SINO SI( kilomrec <= 1000 )
montopag = montofijo + 0.15*(kilomrec-300)
SINO
montopag = montofijo + 0.15*700 + 0.10*(kilomrec-1000)

// Determina el monto del impuesto


montoigv = igv*montopag /(1+igv)

// 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

// Determina quienes son contemporáneos


SI( juan == mario && mario == pedro )
contemporaneos = "Los tres son contemporáneos"
SINO SI( juan == mario )
contemporaneos = "Juan y Mario son contemporáneos"
SINO SI( juan == pedro )
contemporaneos = "Juan y Pedro son contemporáneos"
SINO SI( mario == pedro )
contemporaneos = "Mario y Pedro son contemporáneos"
SINO
contemporaneos = "No hay contemporáneos"

// Salida de resultados
IMPRIMIR contemporaneos
FIN

Ejercicio 9:- El promedio de prácticas de un curso se calcula en base a cuatro prácticas


calificadas de las cuales se elimina la nota menor y se promedian las tres notas más altas.
Diseñe un algoritmo que determine la nota eliminada y el promedio de prácticas de un
estudiante.

Algoritmo
INICIO
// Declaración de variables
REAL pc1, pc2, pc3, pc4, pcmenor, promedio

// Entrada de datos
LEER pc1, pc2, pc3, pc4

// Determina la nota menor


pcmenor = pc1

Págin
a 30
ALGORITMIA Y C++

SI( pc2 < pcmenor )


pcmenor = pc2
SI( pc3 < pcmenor )
pcmenor = pc3
SI( pc4 < pcmenor )
pcmenor = pc4

// 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<

// Determina el lado mayor


mayor = L1
SI( L2 > mayor )
mayor = L2
SI( L3 > mayor )
mayor = L3
// Determina la suma de los lados a excepción del lado mayor
suma = L1 + L2 + L3 - mayor
// Determina de que tipo de triángulo se trata
SI( mayor < suma ){
SI( ( L1 == L2 ) && ( L2 == L3 ) )
tipoRectangulo = "Triángulo equilátero"
SINO SI( ( L1 == L2 ) || ( L1 == L3 ) || ( L2 == L3 ) )
tipoRectangulo = "Triángulo isósceles"
SINO
tipoRectangulo = "Triángulo escaleno"
}
SINO
tipoRectangulo = "No es un triángulo"
// Salida de resultados
IMPRIMIR tipoRectangulo
FIN

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++

// Imprime en orden ascendente


IMPRIMIR menor, medio, mayor
// Imprime en orden descendente
IMPRIMIR mayor, medio, menor
FIN

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.

Las condiciones impuestas por la fábrica son:


torpro < 200 siendo torpro el número de tornillos producidos
tordef > 10000 siendo tordef el número de tornillos defectuosos
Algoritmo 1
INICIO
ENTERO torpro, tordef, grado
LEER torpro, tordef
SI( tordef < 200 ){
SI( torpro > 10000 )
grado = 8
SINO
grado = 6 }
SINO{
SI( torpro > 10000 )
grado = 7
SINO
grado = 5 }
IMPRIMIR grado
FIN
Algoritmo 2
INICIO
ENTERO torpro, tordef, grado
LEER torpro, tordef // Determina el grado de eficiencia
SI( tordef < 200 && torpro > 10000 )
grado = 8
SINO SI( tordef < 200 )
grado = 6
SINO SI( torpro > 10000 )
grado = 7
SINO
grado = 5
IMPRIMIR grado
FIN

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++

EJERCICIOS PROPUESTOS (SELECTIVA O CONDICIONAL)

Realizar los diagramas estudiados para los siguientes ejercicios:

1. Hacer un diagrama que permita ingresar un número y devuelva si es Positivo, negativo o


cero.
2. Escriba un programa que obtenga tres números, los almacene en variables y luego calcule
y muestre un reporte sobre su suma y su promedio. Si su promedio es menor a 10.5 que
me muestre el mensaje “desaprobado” en caso contrario “aprobado”
3. Dado un número entero decir si: ! Es par o impar
4. Si dos números son positivos calcule su producto en caso contrario calcule su suma.
5. Dado un número entero decir si es mayor, menor o igual a cero
6. Dados tres números hallar el mayor.
7. Dados tres números hallar el menor.
8. Un número puede ser menor, igual o mayor que otro. Hacer un algoritmo que lea 2
números y determine como es uno respecto al otro.
9. Ingrese dos números n y m y diga si n es múltiplo de m.
10. Lea 3 números e indique cual es el valor intermedio.
11. Algoritmo sobre una ecuación de primer grado. (ax + b = 0)
12. Hacer un diagrama que permita ingresar los parámetros a,b,c de una ecuación de 2do
grado y se devuelva las raíces.
X1 = X2 =

− 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%

>2000 y <=3000 10%

>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

28. Calcular el sueldo de una persona de acuerdo a lo siguiente

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

– El sueldo es sacado de la siguiente manera:


Pago = (Valor/hora * horas trabajadas) + horas extras + % antigüedad – 3% de
obra social – 10% jubilación

– Los porcentajes son sobre el sueldo base


1. Si compramos al por mayor 100 o más artículos nos descuentan el 40%, si compramos
entre 25 y 100 nos descuentan un 20% y si compramos entre 10 y 25 un 10%. No hay
descuento si adquirimos menos de 10 artículos. Cuánto se pagará al final.

Aporte del Ing. Miguel Segura Rojas

Págin
a 37
ALGORITMIA Y C++

CAPÍTULO 4: ESTRUCTURAS DE CONTROL REPETITIVOS


Existen problemas que se solucionan realizando un proceso repetidas veces, en los algoritmos
tenemos estructuras que permiten el control de procesos que se repiten.

4.1 Mientras, Hacer Mientras y Para


Ejecuta uno o más procesos mientras una condición es verdadera

• Mientras
La condición se ejecuta primero que las acciones que se encuentran dentro de la estructura
MIENTRAS.

Diagrama de Flujo Pseudocódigo


F
V Condición
Acción
Acción43
1
2
Acción 1

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.

Diagrama de Flujo Pseudocódigo

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.

Diagrama de Flujo Pseudocódigo


var=vi; 2 var<=vf;
Acción 1
3
4 var++

Acción 2

Acción 3

mientras (condición)

Acción 4

Págin
a 39

Você também pode gostar