Vous êtes sur la page 1sur 39

ALGORITMIA Y C++

ALGORITMIA C++

Pgin a1

ALGORITMIA Y C++
CAPTULO 1: CONCEPTOS BSICOS DE ALGORITMIA 1.1 Algoritmo
Un algoritmo es un conjunto ordenado y finito de instrucciones que conducen a la solucin 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 matemtico de Euclides para la obtencin del mximo comn divisor de dos nmeros. 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. Segn 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 programacin. Al algoritmo expresado en un determinado lenguaje de programacin, se denomina programa. Puesto de otra manera, podemos decir que, un programa es la implementacin o expresin de un algoritmo en un determinado lenguaje de programacin siguiendo las reglas establecidas por el lenguaje elegido. En la Figura 1.1 que sigue se muestra la relacin entre problema, algoritmo y programa.

Figura 1.1 Problema, algoritmo y programa Todo algoritmo debe tener las siguientes caractersticas:

Debe ser preciso, es decir, cada instruccin debe indicar de forma inequvoca que se tiene que hacer. Debe ser finito, es decir, debe tener un nmero limitado de pasos. Debe ser definido, es decir, debe producir los mismos resultados para las mismas condiciones de entrada. Entrada de datos. Proceso. Salida de resultados.

Todo algoritmo puede ser descompuesto en tres partes:

Ejemplo 1.1:- Algoritmo para preparar ceviche de bonito para 6 personas. Entradas: Proceso: - Cortar la carne de pescado en pequeos trozos. 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 limn 4 cucharadas de ajo molido 2 cucharadas de aj amarillo molido sal y pimienta

Pgin a2

ALGORITMIA Y C++
- Mezclar la carne con el jugo de limn, 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 acompaando 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 centmetros y pulgadas una cantidad dada en metros. Entrada: La cantidad M de metros Proceso: Clculo de centmetros Clculo de pulgadas : C = M*100 : P = C/2.54

Salida: La cantidad C de centmetros y la cantidad P de pulgadas Este es un algoritmo computacional escrito en lenguaje natural, puede ser convertido en un programa de computadora, pero tambin 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. Anlisis. 2. Creacin de Algoritmo. 3. Codificacin del Programa Describiremos cada uno de los pasos:

1. Anlisis
El anlisis 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 bsicas: 1. Qu resultados necesitas obtener?
PROGRAMA

3 2 1

3. Qu procesos se realizan para obtener el resultado?

Despus de estas preguntas debemos organizar los pasos que debemos realizar para llevar a cabo el algoritmo.

Pgin a3

ALGORITMIA Y C++

Ejemplo de Anlisis 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 segn las partes de un algoritmo tenemos: Entreda: El valor del lado del cuadrado Proceso: Calcular el rea: rea = lado * lado Salida: El rea

1. Creacin de Algoritmo
Para la creacin del algoritmo se tienen varias herramientas: Pseudocdigo, Diagramas de flujo y Diagramas NS.

Diagramas de Flujo
Un Diagrama de Flujo representa la esquematizacin grfica de un algoritmo, el cual muestra grficamente los pasos o procesos a seguir para alcanzar la solucin de un problema. Su correcta construccin es sumamente importante porque, a partir del mismo se escribe un programa en algn Lenguaje de Programacin. Si el Diagrama de Flujo est completo y correcto, el paso del mismo a un Lenguaje de Programacin es relativamente simple y directo Cuadro 1.0 Smbolos de Diagramas de Flujo SMBOLO SIGNIFICADO

Pgin 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 aritmticas y asignacin de valores.
SI

Representan las Decisin o comparaciones de datos usando operadores de relacin y lgicos.


NO

Decisin mltiple (tambin es con operaciones lgicas o de comparacin, solo sigue uno pero de varios caminos)

Indica el sentido de ejecucin del diagrama de flujo Indica una llamada a una subrutina (es un subprograma que realiza un determinado proceso y retorna luego al programa principal).

Pgin a5

ALGORITMIA Y C++

Cuadro 2.0 Diagrama para calcular el rea del cuadrado rea FIN Lado Imprimir rea Leer = Lado * INICIO Lado N2

El Pseudocdigo
El pseudocdigo es un lenguaje de pseudoprogramacin utilizado para escribir algoritmos computacionales. Como lenguaje de pseudoprogramacin, el pseudocdigo es una imitacin de uno o ms lenguajes de programacin. De esta manera podemos encontrar pseudocdigos orientados a lenguajes de programacin como Pascal, Java, C, C++, etc. En el caso de este curso orientaremos los pseudocdigos a los lenguajes Java, C y C++. El objetivo del pseudocdigo es permitir que el programador se centre en los aspectos lgicos de la solucin, evitando las reglas de sintaxis de los lenguajes de programacin. No siendo el pseudocdigo un lenguaje formal, los pseudocdigos varan de un programador a otro, es decir, no hay un pseudocdigo estndar. Ejemplo de Pseudocdigo: 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. Codificacin del Programa


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

Pgin a6

ALGORITMIA Y C++
Imagen 1.0 Ejemplo de Programa en C++ para la suma de dos nmeros

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, despus 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 programacin 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++

Pgin a7

ALGORITMIA Y C++
#include <iostream.h> void main() CABECER CUERPO A { Instruccin 1; Instruccin 2; Instruccin 3; ; }

CUERPO

LIBRERAS 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 LIBRERAS Y FUNCIONES MS UTILIZADAS LIBRERA DESCRIPCIN FUNCIONES Contiene funciones de E/S de cprintf(), cscanf(), cgets(), cadenas, funciones de teclado, cputs(), clrscr(), #include <conio.h> posicin 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, tambin utiliza plantillas, etc. Contiene todas las funciones sqrt, acos, asin, cos, sin, #include <math.h> matemticas como: raz, 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 parmetros de la BIOS void main() Un programa en C++, puede estar compuesto por varios sub programas (tema de prximos capitulos) y todos estn controlados por un programa principal, entonces main() es el programa principal.

Pgin 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 ningn valor de retorno. {}.-LLAVES El cdigo que escribiremos en el procedimiento va encerrado entre llaves "{ }", que significan inicio "{" y final "}", esto tambin se utilizan en las condiciones selectivas, bucles, etc. ;(Punto y coma) Cada instruccin 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. NUMRICOS Datos de nmeros enteros: Datos de nmeros reales: CADENAS Y CARACTER Datos de tipo carcter: Datos de tipo cadena: 12, 20300, 15, etc. 3.1416, 2345.456, etc. 'a', 'B', ';', '<', '+', etc. "Hola", "Algoritmos Computacionales", etc.

TIPOS DE DATOS EN EL LENGUAJE C++

C++ no soporta un gran nmero de tipos de datos predefinidos, pero tiene la capacidad para crear sus propios tipos de datos. Todos los tipos de datos simples o bsicos de C/C++ son, esencialmente nmeros. Los tres tipos de datos bsicos son: Enteros. Nmeros de como flotante (reales) Caracteres.

La siguiente tabla muestra sus tamaos en bytes y el rango de valores que puede almacenar en el lenguaje C++ Tabla 2.0 Tipos de Datos en C++ TIPO Char Short Int unsigned int Long Float Double long double EJEMPLO 'C' -15 1024 42325 262144 1.05 0.00045 1e-8 BYTES 1 2 2 2 4 4 8 8 RANGO 0...255 -128...127 -32768...32768 0...65535 -2147483648...2147483637 3.4*(10-38)...3.4*(10 38) 1.7*(10-308...1.7*(10 308)) igual que el double

1.4 Variables
Una variable es una localizacin o casillero en la memoria principal que almacena un valor que puede cambiar en el transcurso de la ejecucin 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:

Pgin a9

ALGORITMIA Y C++
Declaracin de una variable: tipo nombre

Declaracin 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 nmero entero) , REAL (si la variable almacenar un nmero decimal) , CARACTER (si la variable almacenar un carcter), CADENA (si la variable almacenar un conjunto de carcteres) 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 smbolo de subrayado o un smbolo de dlar. Los dems caractres del nombre puede ser letras, smbolos de subrayado o smbolo de dlar. Debe considerarse tambin que una letra mayscula se considera diferente de una letra minscula. Ejemplo 1.3:- Declaracin de variables.

La siguiente instruccin declara la variable edad de tipo ENTERO y la variable descuento de tipo REAL. ENTERO edad REAL descuento

La siguiente instruccin declara las variables nota1, nota2 y nota3, todas de tipo ENTERO. ENTERO nota1, nota2, nota3 DECLARACIN DE VARIABLES EN LENGUAJE C++ int edad; float descuento; int nota1, nota2, nota3;

1.5 Instrucciones Algortmicas Bsicas


Existen tres instrucciones algortmicas bsicas 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 accin de ingresar un dato a una variable se expresa en el pseudocdigo mediante la palabra LEER, de la siguiente forma: LEER variable Por ejemplo, la instruccin: LEER estatura Solicita el ingreso de un valor, desde algn dispositivo de entrada (como el teclado), para la variable estatura. LEER EN UN PROGRAMA EN LENGUAJE C++ Para el ingreso de datos usaremos la funcin cin, funcin que necesita la librera <iostream.h> Sintaxis cin>>variable; Pgin Ejemplo int estatura; cin>>estatura;

a 10

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 accin de mostrar el valor de una variable o mensaje se expresa en el pseudocdigo mediante la palabra IMPRIMIR de la siguiente forma: IMPRIMIR variable o IMPRIMIR Mensaje Por ejemplo, la instruccin: IMPRIMIR importeCompra Muestra, en algn 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 funcin cout, funcin que necesita la librera <iostream.h> Sintaxis cout<<variable; cout<<Mensaje; cout<<Mensaje<<variable; Ejemplos cout<<sueldo;

1.5.3 Asignacin

cout<<El sueldo es:<<sueldo; Consiste en asignar a una variable el valor de una expresin. La expresin puede ser una simple variable, un simple dato o una combinacin de variables, datos y operadores. La asignacin se expresa en el pseudocdigo de la siguiente forma: variable = expresin Donde variable y el valor de expresin deben tener el mismo tipo de dato. Ejemplo N = 25 M = 30

Pgin 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 centmetros y pulgadas una cantidad dada en metros. Esta es una solucin en pseudocdigo del ejemplo 1.2 utilizando conceptos computacionales de variable, entrada de datos y salida de resultados. La solucin considera que 1 metro = 100 centmetros y que 1 pulgada = 2.54 centmetros. INICIO REAL M, C, P LEER M C = M*100 P = C/2.54 IMPRIMIR C, P FIN

Pgin 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 Centmetros es:<<C; cout<<\nLas Pulgadas son :<<P; }

Nota: \n es un cdigo de escape para poder imprimir en lneas separadas. CDIGOS DE ESCAPE EN C++ Cdigo '\n' '\r' '\t' '\v' '\a' '\b' '\f' '\\' '\'' '\"' '\?' '\000' '\xhh' Significado Nueva Lnea retorno de carro Tabulacin tabulacin vertical alerta(pitido sonoro) retroceso de espacio avance de pagina Barra inversa comilla simple doble comilla signo de interrogacin numero octal nmero hexadecimal

1.6 Expresiones Aritmticas


Operador + * / % Significado Suma Resta Multiplicacin Divisin Residuo Ejemplo a+b a-b a*b a/b a%b

Una expresin aritmtica es una combinacin de variables, literales y operadores aritmticos.

1.6.1 Operadores Aritmticos


En la tabla que sigue se muestran los operadores aritmticos que vamos a utilizar. Tabla 1.1 Operadores aritmticos

Pgin a 13

ALGORITMIA Y C++
Los operadores aritmticos pueden utilizarse con tipos enteros y reales. Si en una operacin 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 jerarqua de los operadores aritmticos


Cuando una expresin aritmtica tiene ms de un operador aritmtico, el orden de aplicacin de los operadores sigue un orden preciso determinado por las reglas de jerarqua de los operadores aritmticos, que se muestran en la siguiente tabla: Tabla 1.2 Reglas de jerarqua de los operadores aritmticos Operador () *, /, % +, Orden de evaluacin Se evalan en primer lugar Se evalan en segundo lugar Se evalan en tercer lugar

Si existen parntesis anidados, se evala primero la expresin en el par ms interno. Si varios operadores o parntesis tienen la misma jerarqua, la evaluacin ser de izquierda a derecha. EJEMPLOS DE ALGORITMICAS ALGEBRAICAS EXPRESIONES ALGEBRAICAS EN EXPRESIONES

ALGORITMICAS e = a/b/c

e = a*b*c/d/e

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

EVALUACIN DE CADA EXPRESIN

e = a/b/c
Como todos los operadores tienen la misma jerarqua, la evaluacin 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 ejecucin esta de acuerdo con la expresin algebraica, por lo que no se requiere ninguna pareja de parntesis.

e = a*b*c/d/e
Como todos los operadores tienen la misma jerarqua, la evaluacin 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.

Pgin a 14

ALGORITMIA Y C++

El resultado ya obtenido de a*b*c/d se divivir entre e. Note que el orden de ejecucin esta de acuerdo con la expresin algebraica, por lo que no se requiere ninguna pareja de parntesis.

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


Aplicando las reglas de jerarqua de los operadores aritmticos:

Se sumar a ms 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)) ms el resultado ya obtenido de v/w/p. Se sumar el resultado ya obtenido de 4/((a+b)/(c/d)) + v/w/p ms el resultado ya obtenido de 5*m*n*q.

1.7 Expresiones Lgicas


Una expresin lgica combina variables, literales, operadores aritmticos, operadores relacionales y operadores lgicos. Los operadores relacionales y los operadores lgicos se muestran en las tablas 3.1 y 3.2. Tabla 1.3 Operadores relacionales Operador > >= < <= == != Operador ! && || Significado mayor que mayor o igual que menor que menor o igual que igual a diferente de Tabla 1.4 Operadores lgicos Significado No Y Ejemplo !a a && b a || b Ejemplo a > a >= a < a <= a == a != b b b b b b

CAPTULO 2: ESTRUCTURAS DE SECUENCIA 2.1 Concepto


Una estructura secuencial es aquella en la que las instrucciones estn una a continuacin de la otra siguiendo una secuencia nica, sin cambios de ruta. La estructura secuencial tiene una entrada y una salida.

Pgin a 15

ALGORITMIA Y C++
En la Figura 4.1 se muestra el diagrama de flujo y el pseudocdigo de una estructura secuencial. Diagrama de Flujo Pseudocdigo Inicio . . accin 1 accin 2 accin 3 . . Fin

Figura 2.1 Estructura Secuencial: Diagrama de Flujo y Pseudocdigo

2.2 Ejercicios resueltos


Ejercicio 1:- Disee un pseudocdigo que halle el rea y el permetro de un rectngulo. Considere que: area = base x altura y perimetro = 2 x (base+altura). Algoritmo INICIO REAL base, altura, area, permetro LEER base, altura area = base*altura perimetro = 2*(base+altura) IMPRIMIR area, perimetro FIN Ejemplo 2:- Disee un pseudocdigo para convertir una longitud dada en metros a sus equivalentes en centmetros, pies, pulgadas y yardas. Considere que: 1 metro = 100 centmetros, 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 institucin benfica europea ha recibido tres donaciones en soles, dlares y marcos. La donacin ser repartida en tres rubros: 60% para la implementacin de un centro de salud, 40% para un comedor de nios y el resto para gastos administrativos. Disee un algoritmo que determine el monto en euros que le corresponde a cada rubro. Considere que: 1 dlar = 3.52 soles, 1 dlar = 2.08 marcos, 1 dlar = 1.07 euros. Algoritmo INICIO

Pgin 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 atltica de velocidad el tiempo se mide en minutos, segundos y centsimas de segundo y, el espacio recorrido se mide en metros. Disee 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 centsimas de segundo, 1 kilmetro = 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:- Disee un algoritmo que determine la cifra de las unidades de un nmero natural. Solucin 1 Anlisis Puede comprobarse que la cifra de las unidades de un nmero es igual al resto de la divisin del nmero entre 10. Observe para ello las siguientes divisiones: 3245 5 768 8 10 324 10 76

9 10 9 0 Podemos concluir entonces que: Unidades = numero % 10 Siendo % el operador residuo. Este operador permite obtener el residuo de una divisin, as como / permite obtener el cociente. Algoritmo INICIO ENTERO numero, unidades LEER numero unidades = numero % 10 IMPRIMIR unidades FIN

Pgin a 17

ALGORITMIA Y C++
Solucin 2 Anlisis El residuo de una divisin entera puede obtenerse tambin sin recurrir al operador %, de la siguiente forma: unidades = numero - (numero / 10) * 10 Observe para esto que en la divisin (numero/10) los operandos son enteros por lo que el cociente ser un entero. As por ejemplo, si numero es igual a 3245, la divisin (numero/10) produce 324, aunque matemticamente 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:- Disee un algoritmo que determine la suma de las cifras de un nmero entero positivo de 4 cifras. Solucin 1 Anlisis Las cifras pueden ser obtenidas mediante divisiones sucesivas entre 10. Para el efecto, considere el caso de un nmero N igual a 3245: 3245 5 10 324

unidades = N%10 cociente = N/10 324 4 10 32

decenas = cociente%10 cociente = cociente/10 32 2 10 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 Solucin 2

Pgin a 18

ALGORITMIA Y C++
Anlisis 2 Considerando que el nmero tiene 4 cifras, las cifras tambin pueden ser obtenidas mediante divisiones sucesivas entre 1000, 100 y 10. Para el efecto, considere el caso de un nmero N igual a 3245: 3245 245 1000 3

millares = N/1000 resto = N%1000 245 45 100 2

centenas = resto/100 resto = resto%100 45 3 10 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:- Disee un algoritmo que lea la hora actual del da HH:MM:SS y determine cuantas horas, minutos y segundos restan para culminar el da. 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:- Disee 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)

Pgin 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 bsico de S/.250 ms el 12% del monto total vendido. Disee 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 + comisin IMPRIMIR sueldoneto FIN Ejercicio 10:- Disee un algoritmo que determine el porcentaje de varones y de mujeres que hay en un saln 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 pases de habla inglesa es comn dar la estatura de una persona como la suma de una cantidad entera de pies ms una cantidad entera de pulgadas. As, la estatura de una persona podra ser 3' 2" ( 3 pies 2 pulgadas ). Disee un algoritmo que determine la estatura de una persona en metros, conociendo su estatura en el formato ingls. 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:- Disee 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

Pgin 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:- Disee un algoritmo que intercambie las cifras de las unidades de dos nmeros 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 nmeros enteros. 2. Permita restar dos nmeros enteros 3. Permita reporta las cuatro operaciones bsicas (+,-,* , /) de dos nmeros ingresados. 4. Calcular el rea de un triangulo conociendo sus lados. 5. Encontrar la raz cubica de un nmero ingresado. 6. Encontrar la raz N de un nmero ingresado. 7. Encontrar la potencia de un nmero elevado a otro nmero ingresado. P = nm 8. Convertir una cantidad ingresada en metros a centmetros y pulgadas, reportar centmetros 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 ao de nacimiento y el ao actual. 11. Convertir una cantidad ingresada en soles a dlares, se debe ingresar el monto en soles y el tipo de cambio. 12. Convertir una cantidad ingresada en dlares a soles, se debe ingresar el monto en dlares y el tipo de cambio. 13. Calcular el sueldo neto de un trabajador que tiene una bonificacin por el nmero de horas extras trabajadas(10 soles por cada hora extra) y un descuento del 10% por seguro, se debe ingresar el sueldo bruto el nmero de horas extras. 14. Ingresar dos nmeros y devolver su suma, resta, multiplicacin y divisin. 15. Permita ingresar grados Celsius y me reporte su equivalencia en grados Fahrenheit. Formula: F= 9/5 * C + 32 16. Permita ingresar ao de nacimiento de una persona y devolver su edad. 17. Ingresar la cantidad y el precio de un artculo. Se debe reportar: Cantidad, Precio Unitario, IGV y Monto a pagar. 18. Permita ingresar a y b devuelvan ab

Pgin a 21

ALGORITMIA Y C++
19. Escribir una funcin que dados 2 nmeros, 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 expresin: R = ((A + B)2) / 3 23. En una casa de cambio necesitan construir un programa tal que dado como dato una cantidad expresado en dlares, convierta esa cantidad a nuevo soles. 24. Escriba un programa que obtenga tres nmeros 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 divisin. 26. Calcular el tiempo transcurrido entre dos horas dadas de un mismo da (ingreso de horas y minutos). 27. Mostrar las horas, minutos y segundos de un tiempo ingresado slo en segundos. 28. Elabore un algoritmo que calcule el nmero de segundos, ingresando un nmero de das. 29. Dada la matrcula 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 tringulo dado sus lados: AT = Donde: P es permetro

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 crculo. Sabiendo que rea = x Radio2 36. Hallar la hipotenusa de un tringulo rectngulo. Sabiendo Hipotenusa =

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

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


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

( abscisa2 abscisa ) 2 + (ordenada ordenada ) 2 1 2 1

Pgin a 22

ALGORITMIA Y C++
39. Hallar el monto a devolver si presto un capital, a una tasa de inters, durante un tiempo o periodo determinado. Monto a devolver = c (1 + inters)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 ( sexagesima ) les 9
42. Calcular rea de un trapecio Area =

( sexagesima ) les 180

(basemayor+ basemenor) * altura 2

CAPTULO 3: ESTRUCTURAS DE SELECCIN 3.1 Introduccin


Las estructuras de seleccin son estructuras de control utilizadas para la toma decisiones dentro de un programa. A estas estructuras se conocen tambin como estructuras selectivas o estructuras de decisin y son las siguientes:

La estructura de seleccin simple (SI). La estructura de seleccin doble (SI-SINO). La estructura de seleccin mltiple (SEGUN)

3.2 Estructura de Seleccin Simple SI


La estructura de seleccin simple permite ejecutar una accin o un grupo de acciones slo si se cumple una determinada condicin. As, en el grfico 3.1, si la condicin es verdadera se ejecuta la accin acciona; en caso contrario, no se hace nada. Diagrama de Flujo Pseudocdigo (accin simple) SI( condicion ) acciona Pseudocdigo (accin compuesta) SI( condicion ){ acciona1 acciona2 . . . accionan } Figura 3.1 Estructura de Seleccin Simple

Pgin a 23

ALGORITMIA Y C++
Por ejemplo, si se desea cambiar el signo de un nmero nicamente en caso que sea negativo, podemos escribir: SI( numero < 0 ) numero = -1 * numero Si el nmero no es negativo, simplemente esta estructura se pasara por alto y se continuara en la siguiente instruccin despus del SI.

3.3 Estructura de Seleccin Doble SI - SINO


La estructura de seleccin doble permite seleccionar una ruta de dos rutas posibles en base a la verdad o falsedad de una condicin. As, en la Figura 3.2, si la condicin es verdadera, se ejecuta la accin A; en caso contrario, se ejecuta la accin B. En la Figura 3.2 se muestra el diagrama de flujo y el pseudocdigo de la estructura de seleccin doble. Diagrama de Flujo Pseudocdigo (accin simple) SI( condicion ) acciona SINO accionb Pseudocdigo (accin compuesta) SI( condicion ){ acciona1 acciona2 . . . accionan } SINO{ accionb1 accionb2 . . . accionbn }

Figura 3.2 Estructura de Seleccin Doble

Por ejemplo, la siguiente estructura de seleccin 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 aos ms e imprime "Menor de edad" si la persona tiene menos de 18 aos. En cualquiera de los casos, despus de efectuar la impresin, se ejecutar la primera instruccin que sigue a la estructura SI...SINO.

3.4 Estructura de Seleccin Doble en Cascada SI-SINO-SI


La estructura de seleccin doble en cascada esta formada por varias estructuras de seleccin doble SI-SINO puestas una a continuacin de otra de forma que a un SI-SINO le sigue otro SISINO. En la estructura de seleccin doble en cascada, las condiciones se evalan en orden descendente, pasando de una condicin a otra si la condicin anterior resulta falsa. En el momento que se encuentra una condicin verdadera, se efecta la accin correspondiente a

Pgin a 24

ALGORITMIA Y C++
dicha condicin y se corta el resto de la estructura. Si todas las condiciones resultan falsas, se efecta la accin correspondiente al ltimo SINO, que se considera como la accin por defecto. En la Figura 3.3 se muestra el diagrama de flujo y el pseudocdigo de la estructura de seleccin doble en cascada. Diagrama de Flujo Pseudocdigo ( Forma 1 ) SI( condicion1 ) accion1 SINO SI( condicion2 ) accion2 SINO SI( condicion3 ) accion3 . . . SINO acciondefecto Pseudocdigo ( Forma 2 ) SI( condicion1 ) accion1 SINO SI( condicion2 ) accion2 SINO SI( condicion3 ) accion3 . . . SINO acciondefecto Figura 3.3 Estructura de Seleccin Doble en Cascada Por ejemplo, la siguiente estructura de seleccin doble en cascada determina el signo de un nmero entre positivo, negativo o cero: SI( n > 0 ) signo = "Positivo" SINO SI( n < 0 ) signo = "Negativo" SINO signo = "Cero" Usando el otro formato tendramos: SI( n > 0 ) signo = "Positivo" SINO SI( n < 0 ) signo = "Negativo" SINO signo = "Cero"

3.5 Estructura de Seleccin Mltiple SEGUN


La estructura de seleccin mltiple SEGUN permite elegir una ruta de entre varias rutas posibles, en base al valor de una variable que acta como selector. La estructura compara el valor del selector con las constantes c1, c2, ..., cn en orden descendente. En el momento en

Pgin a 25

ALGORITMIA Y C++
que se encuentre una coincidencia, se ejecuta la accin correspondiente a dicha constante y se abandona la estructura. En la Figura 3.4 se muestra el diagrama de flujo y el pseudocdigo de la estructura de seleccin mltiple. Diagrama de Flujo Pseudocdigo SEGUN( selector ){ CASO c1 : accion1 CASO c2 : accion2 CASO c3 : accion3 . . . CASO cn : accionn DEFECTO : acciondefecto }

Figura 3.4 Estructura de Seleccin Mltiple Por ejemplo, la siguiente estructura de seleccin mltiple determina el nombre de la estacin del ao conociendo el nmero de la estacin (1 para Primavera, 2 para Verano, 3 para Otoo y 4 para Invierno) : SEGN (numeroEstacion){ CASO 1 : nombreEstacion CASO 2 : nombreEstacion CASO 3 : nombreEstacion DEFECTO : nombreEstacion } = = = = "Primavera" "Verano" "Otoo" "Invierno"

Pgin a 26

ALGORITMIA Y C++
3.6 Ejercicios
Ejercicio 1:- En una playa de estacionamiento cobran S/. 2.5 por hora o fraccin. Disee un algoritmo que determine cuanto debe pagar un cliente por el estacionamiento de su vehculo, 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:- Disee un algoritmo que determine si n nmero es o no es, par positivo. Algoritmo INICIO REAL numero CADENA tipoNumero LEER numero SI( (numero%2==0) && (numero>0) ) tipoNumero = "El nmero es par positivo" SINO tipoNumero = "El nmero no es par positivo" IMPRIMIR tipoNumero FIN Ejercicio 3:- Disee un algoritmo que lea tres nmeros y determine el nmero mayor. Algoritmo INICIO // Declaracin 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 )

Pgin 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 ms de 3 docenas y 10% en caso contrario. Adems por la compra de ms de 3 docenas se obsequia una unidad del producto por cada docena en exceso sobre 3. Disee un algoritmo que determine el monto de la compra, el monto del descuento, el monto a pagar y el nmero de unidades de obsequio por la compra de cierta cantidad de docenas del producto. Algoritmo INICIO // Declaracin 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:- Disee un algoritmo que lea un nmero de tres cifras y determine si es o no capica. Un nmero es capica si es igual al revs del nmero. Observacin Como el nmero tiene tres cifras, para ser capica 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 nmero tiene tres cifras... SI(numero >= 100 && numero <= 999 ){ centenas // Determina la cifra de las unidades y la cifra de las unidades = numero%10

Pgin a 28

ALGORITMIA Y C++
centenas = numero/100 // Determina el tipo de nmero entre capica o no capica SI( unidades == centenas ) tipoNumero = "El nmero es capica" SINO tipoNumero = "El nmero no es capica" // Muestra el tipo de nmero IMPRIMIR tipoNumero } SINO FIN IMPRIMIR "Ingrese un nmero de tres cifras"

Ejercicio 6:- Disee 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; ningn seis, psimo. Algoritmo INICIO // Declaracin de variables ENTERO dado1, dado2, dado3 CADENA calificacion // Entrada de datos LEER dado1, dado2, dado3 // Determina la calificacin SI( dado1 + dado2 + dado3 == 18 ) calificacion = "Excelente" SINO SI( dado1+dado2 == 12 || dado1+dado3 == 12 || dado2+dado3 == calificacion = "Muy bin" SINO SI( dado1 == 6 || dado2 == 6 || dado3 == 6 ) calificacion = "Regular" SINO calificacion = "Psimo" // Salida de resultados IMPRIMIR calificacion FIN Ejercicio 7:- Una compaa dedicada al alquiler de automoviles cobra un monto fijo de $30 para los primeros 300 km de recorrido. Para ms de 300 km y hasta 1000 km, cobra un monto adicional de $ 0.15 por cada kilmetro en exceso sobre 300. Para ms de 1000 km cobra un monto adicional de $ 0.10 por cada kilmetro en exceso sobre 1000. Los precios ya incluyen el 18% del impuesto general a las ventas, IGV. Disee un algoritmo que determine el monto a pagar por el alquiler de un vehculo y el monto includo del impuesto. Algoritmo INICIO // Declaracin de variables REAL kilomrec, montopag, montoigv, montofijo = 30, igv = 0.18 // Entrada de datos LEER kilomrec

12 )

Pgin 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:- Disee un algoritmo que determine quienes son contemporneos entre Juan, Mario y Pedro. Algoritmo INICIO // Declaracin de variables ENTERO juan, mario, pedro CADENA contemporaneos // Entrada de datos LEER juan, mario, pedro // Determina quienes son contemporneos SI( juan == mario && mario == pedro ) contemporaneos = "Los tres son contemporneos" SINO SI( juan == mario ) contemporaneos = "Juan y Mario son contemporneos" SINO SI( juan == pedro ) contemporaneos = "Juan y Pedro son contemporneos" SINO SI( mario == pedro ) contemporaneos = "Mario y Pedro son contemporneos" SINO contemporaneos = "No hay contemporneos" // Salida de resultados IMPRIMIR contemporaneos

FIN

Ejercicio 9:- El promedio de prcticas de un curso se calcula en base a cuatro prcticas calificadas de las cuales se elimina la nota menor y se promedian las tres notas ms altas. Disee un algoritmo que determine la nota eliminada y el promedio de prcticas de un estudiante. Algoritmo INICIO // Declaracin de variables REAL pc1, pc2, pc3, pc4, pcmenor, promedio // Entrada de datos LEER pc1, pc2, pc3, pc4 // Determina la nota menor pcmenor = pc1

Pgin 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:- Disee un algoritmo que lea tres longitudes y determine si forman o no un tringulo. Si es un tringulo determine de que tipo de tringulo se trata entre: equiltero (si tiene tres lados iguales), issceles (si tiene dos lados iguales) o escaleno (si tiene tres lados desiguales). Considere que para formar un tringulo se requiere que: "el lado mayor sea menor que la suma de los otros dos lados". Algoritmo INICIO // Declaracin 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 excepcin del lado mayor suma = L1 + L2 + L3 - mayor // Determina de que tipo de tringulo se trata SI( mayor < suma ){ SI( ( L1 == L2 ) && ( L2 == L3 ) ) tipoRectangulo = "Tringulo equiltero" SINO SI( ( L1 == L2 ) || ( L1 == L3 ) || ( L2 == L3 ) ) tipoRectangulo = "Tringulo issceles" SINO tipoRectangulo = "Tringulo escaleno" } SINO tipoRectangulo = "No es un tringulo" // Salida de resultados IMPRIMIR tipoRectangulo

FIN

Ejercicio 11:- Disee un algoritmo que lea tres nmeros enteros y determine el menor valor positivo. Si los nmeros positivos son iguales, dar como menor a cualquiera de ellos. Algoritmo

Pgin a 31

ALGORITMIA Y C++
INICIO // Declaracin de variables ENTERO a, b, c, menor // Entrada de datos LEER a, b, c // Determina el menor // Aqu a, b y c podran ser positivos SI( a > 0 ){ menor = a SI( b > 0 && b < menor ) menor = b SI( c > 0 && c < menor ) menor = c } // Aqu slo b y c podran ser positivos SINO SI( b > 0 ){ menor = b SI( c > 0 && c < menor ) menor = c } // Aqu slo c podran 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 ningn nmero positivo" FIN Ejercicio 12:- Disee un algoritmo que lea tres nmeros y los imprima de mayor a menor y de menor a mayor. Algoritmo INICIO // Declaracin 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

Pgin a 32

ALGORITMIA Y C++
// Imprime en orden ascendente IMPRIMIR menor, medio, mayor // Imprime en orden descendente IMPRIMIR mayor, medio, menor FIN Ejercicio 13:- Disee un algoritmo para obtener el grado de eficiencia de un operario de una fbrica de tornillos, de acuerdo a las siguientes condiciones, que se le imponen para un perodo de prueba: - Menos de 200 tornillos defectuosos. - Ms de 10000 tornillos producidos. El grado de eficiencia se determina de la siguiente manera: - Si no cumple ninguna de las condiciones, grado 5. - Si slo cumple la primera condicin, grado 6. - Si slo cumple la segunda condicin, grado 7. - Si cumple las dos condiciones, grado 8. Las condiciones impuestas por la fbrica son: torpro < 200 tordef > 10000 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 Mara en una eleccin democrtica a la presidencia de un club. Para ganar la eleccin se debe obtener como mnimo el 50% de los votos ms 1. En caso que no haya un ganador se repite la eleccin en una segunda vuelta. Van a la segunda vuelta los dos candidatos que obtengan la ms alta siendo torpro el nmero de tornillos producidos siendo tordef el nmero de tornillos defectuosos

Pgin a 33

ALGORITMIA Y C++
votacin. Se anula la eleccin en caso de producirse un empate doble por el segundo lugar o un empate triple. Disee un algoritmo que determine el resultado de la eleccin. Algoritmo INICIO // Declaracin 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 Mara" SINO SI( vpedro > vjuan && vmaria > vjuan ) resultado = "Pasan a la segunda vuelta Pedro y Mara" 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 Mara y Juan " SINO resultado = "Eleccin anulada" // Salida de resultados IMPRIMIR resultado FIN Ejercicio 15:- Disee un algoritmo que lea un nmero entero de 3 cifras, y forme el mayor nmero posible con las cifras del nmero ingresado. El nmero formado debe tener el mismo signo que el nmero ingresado. Algoritmo INICIO // Declaracin de variables ENTERO num1, num2, numaux, uni, dec, cen, menor, mayor, medio // Entrada de datos LEER num1 // Si el nmero tiene tres cifras... SI( ( num1 >= 100 && num1 <= 999 ) && ( num1 >= -999 && num1 <= -100 ) ){ // Guarda el nmero 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 nmero 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 )

Pgin 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 nmero SI( numaux > 0 ) num2 = mayor*100 + medio*10 + menor SINO num2 = -1*(menor*100 + medio*10 + mayor) // Imprime el nuevo nmero IMPRIMIR num2 } SINO IMPRIMIR "El nmero no tiene tres cifras" FIN

Pgin 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 nmero y devuelva si es Positivo, negativo o cero. 2. Escriba un programa que obtenga tres nmeros, 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 nmero entero decir si: ! Es par o impar 4. Si dos nmeros son positivos calcule su producto en caso contrario calcule su suma. 5. Dado un nmero entero decir si es mayor, menor o igual a cero 6. Dados tres nmeros hallar el mayor. 7. Dados tres nmeros hallar el menor. 8. Un nmero puede ser menor, igual o mayor que otro. Hacer un algoritmo que lea 2 nmeros y determine como es uno respecto al otro. 9. Ingrese dos nmeros n y m y diga si n es mltiplo de m. 10. Lea 3 nmeros e indique cual es el valor intermedio. 11. Algoritmo sobre una ecuacin de primer grado. (ax + b = 0) 12. Hacer un diagrama que permita ingresar los parmetros a,b,c de una ecuacin de 2do grado y se devuelva las races. X1 = X2 =

B + B 2 4 AC 2A

B B 2 4 AC 2A

13. Dado un nmero que representa un mes, escribir el nombre del mes correspondiente. 14. Dado 3 longitudes verificar si se puede formar un tringulo. Se conoce que en todo tringulo 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 tringulo y clasifique que tipo de tringulo es. Se conoce lo siguiente Tringulo Equiltero: todos lados iguales Tringulo Issceles: 2 lados iguales Tringulo escaleno: todos los lados diferentes 16. Dado un mes escribir la cantidad de das de dicho mes. 17. Dados 3 nmeros, mostrarlos por pantalla en orden creciente. 18. Dados 3 nmeros, mostrarlos por pantalla en orden decreciente. 19. Dada una fecha da, mes y ao (4 digitos), informar si es correcta o no. 20. Desde un dispositivo de e/s se leen tres nmeros. Indique cual de ellos es la suma de los otros dos. 21. Un ao es bisiesto si es mltiplo 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 ao 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 1000 2000 >2000 y <=3000 >3000 Descuento 5% 10% 15%

Pgin a 36

ALGORITMIA Y C++
23. Los trabajadores de una empresa tienen 3 turnos: maana, tarde y noche. Desde luego un trabajador solo pertenece a un turno. La tarifa de los turnos de maana y tarde son iguales y los de la noche es 30% ms. Se deber saber el numero de horas trabajadas el costo por horas. 24. Trabajando con nmeros se encontr que 12 * 12 = 144 y que 21 * 21 = 441, as tambin, 13 * 13 = 169 y 31 * 31 = 961. Escribe un programa que permite ingresar un nmero de 2 dgitos y colocar si cumple o no con dicha caractersticas. 25. Un nmero es un capica si su valor es el mismo tanto si es ledo de izquierda a derecha como de derecha a izquierda. Por ejemplo: 353 es un capica. 354 no es un capica. Disea un algoritmo que determine si un nmero de tres dgitos introducido es un capica o no. 26. Hacer un diagrama que permite ingresar un nmero (cantidad en soles) y devuelva Cul 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 condicin de un alumno, dependiendo su promedio, su condicin se basa en el siguiente cuadro Promedio >=18 y <=20 >=15 y <=17 >=11 y <=14 >=6 y <= 10 >=0 y <= 5 Condicin Excelente Muy Bueno Regular Malo Muy Malo

28. Calcular el sueldo de una persona de acuerdo a lo siguiente Categora Valor/Hora (S/.) Administrador 5 Tcnico 7 Profesional 9 Operario 3 Horas extras son S/. 2.00 por cada hora extra sobre el sueldo base El porcentaje por antigedad es el siguiente: Antigedad % >=1 y <=3 >=4 y <=6 >=7 y <=10 >=11 y <=15 >=16 5 10 15 20 30

El sueldo es sacado de la siguiente manera: Pago = (Valor/hora * horas trabajadas) + horas extras + % antigedad 3% de obra social 10% jubilacin

Los porcentajes son sobre el sueldo base 1. Si compramos al por mayor 100 o ms artculos 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 artculos. Cunto se pagar al final.

Aporte del Ing. Miguel Segura Rojas

Pgin a 37

ALGORITMIA Y C++
CAPTULO 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 ms procesos mientras una condicin es verdadera

Mientras
La condicin se ejecuta primero que las acciones que se encuentran dentro de la estructura MIENTRAS. Diagrama de Flujo
F V

Pseudocdigo Accin 1 Mientras (Condicin) { Accin 2 Accin 3 } Accin 4

Condicin Accin 41 Accin 2 3

Hacer Mientras
La condicin se ejecuta despus que las acciones que se encuentran dentro de la estructura MIENTRAS.

Diagrama de Flujo

Pseudocdigo

Pgin a 38

ALGORITMIA Y C++
Accin 2 Condicin F V Accin 1 4 3

Accin 1 hacer { Accin 2 Accin 3 } mientras (condicin) Accin 4

Para
La estructura Para ejecuta una o mas acciones o procesos en un nmero finito de repeticiones, usa una variable que cuenta el nmero de repeticiones, la variable debe tener un valor inicial y un valor final. Diagrama de Flujo Pseudocdigo

var=vi; Accin 2 var<=vf; 1 4 3

var++

{ Accin 2 Accin 3 } mientras (condicin) Accin 4

Pgin a 39