Vous êtes sur la page 1sur 122

Algoritmos y su codificacin en C++ - Gua para el docente

Pagina 1 de 122




Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 2 de 122








Ing. Juan Carlos Clares perca
Ing. Edwing Alcides Maquera Flores
Ing. Felipe Feliciano Perez Chura
ALGORITMO Y SU CODIFICACIN EN C++
GUA PARA EL DOCENTE

















Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 3 de 122







INVESTIGATION DE OPERACIONES EJERCICIOS DESARROLLADOS
HECHO EL DEPOSITO LEGAL EN LA BIBLIOTECA NACIONAL DEL PERU N 2012-00000
RAZON SOCIAL: EDITORIAL GRAFICA SOLANO E.I.R.L. - RUC. 20527454205
DOMICILIO : Jr. Guillermo Cceres Tresierra N 575 - Andahuaylas - Apurmac - Per
Prohibido su reproduccin Total a Parcial
bajo ningn concepto sin autorizacin
escrita del Autor.
Informes al Telfono: 952010052 Tacna - Per
Ing. Juan Carlos Clares perca
Ing. Edwing Alcides Maquera Flores
Ing. Felipe Feliciano Perez Chura







Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 4 de 122


INDICE

























Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 5 de 122



ALGORITMOS Y SU CODIFICACIN EN C++
GUIA PARA EL DOCENTE







ING. JUAN CARLOS CLARES PERCA
ING. EDWING A. MAQUERA FLORES
ING. FELIPE F. PEREZ CHURA

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 6 de 122

ENTORNO DE PROGRAMACIN

Objetivos:
Conocer la estructura de un programa en C++
Compilar, depurar y ejecutar programas en C++

CONSIDERACIONES PREVIAS

Ficheros o Archivos:La informacin existente en las unidades de almacenamiento del sistema
(USB o discos duros) estorganizada en "carpetas" que contienen "ficheros" o "archivos", con
objeto de facilitar su localizacin ymanejo no slo al propio sistema operativo sino tambin a
otros programas que se ejecuten en el ordenadory al usuario del mismo.
Para poder identificar el contenido guardado en un fichero, y por tanto facilitar su localizacin,
los archivosposeen una identificacin o denominacin que debe ser dada por el usuario en el
momento de su creacin.

En Windows los ficheros se identifican de la forma:

"Nombre.Extensin"

En donde NOMBRE identifica al nombre del archivo y puede estar formado por hasta 255
caracteres, quepueden ser letras, nmeros y smbolos de puntuacin a excepcin de los
siguientes: (* \ | : . , = <> + ? ; /).
Es conveniente utilizar nombres de ficheros que faciliten la identificacin del contenido de los
mismos.Tambin hay que tener cuidado de no utilizar el mismo nombre para dos archivos
diferentes en la mismacarpeta, ya que el sistema operativo o bien no aceptar el segundo fichero
o incluso podra destruir lainformacin del primero para sustituirla por la del segundo.

La EXTENSION de un fichero identifica el tipo de contenido del mismo. La extensin empieza
por un punto"." seguido normalmente de hasta 3 caracteres, con las mismas limitaciones que para
los nombres.
Pero si bien el nombre es obligatorio, la extensin es opcional, de tal forma que puede haber
ficheros que ensu denominacin no posean extensin, aunque no es muy recomendable, ya que
la extensin va a permitiral sistema catalogar diferentes tipos de ficheros y asociarlos a
determinadas aplicaciones que los manejan.
En Windows, los archivos de datos normalmente tienen asociados una aplicacin. Cuando se
abre unarchivo que no es ejecutable, se ejecuta previamente la aplicacin a la que est asociado y
seguidamente seabre dicho fichero sobre la aplicacin.

Esta asociacin se hace a travs de la extensin del fichero. As, por ejemplo:




Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 7 de 122
Cuando algn programa, u orden del sistema operativo, necesita trabajar con un fichero es
necesarioespecificarlo escribiendo su identificacin: nombre y extensin. Aunque numerosos
programas no necesitanque se les indique la extensin, asumiendo que el nombre indicado posee
una extensin predeterminada yconocida por dicha aplicacin. As, en el traductor de Dev-C++
no es necesario indicar la extensin si elfichero posee como extensin ".cpp" (extensin
predeterminada para dicho traductor).
De igual manera, al generar un fichero de datos con una aplicacin, normalmente la extensin es
aadidaautomticamente por la misma.

Entorno: Dev-C++ es un entorno de programacin (IDE) para los lenguajes C y C++ totalmente
gratuito (licencia desoftware de dominio pblico GPL) desarrollado por miembros del GNU
(Bloodshed Software).
Dev-C++ funciona bajo el entorno Windows y permite generar programas ejecutables para DOS
(modoconsola) y para Windows . Tambin incorpora un depurador integrado para C++.

Preprocesador: Analizando nuestro programa podemos observar unas lneas al principio del
cdigo en color verde. Sondirectivas o clusulas para el preprocesador. Y que es el
preprocesador?
El preprocesador, es un programa integrado en el compilador, que se ejecutar de forma
automtica alcompilar nuestro programa y que realiza una serie de tareas previas al proceso de
compilacin.

Mediante el preprocesador podemos:

Incluir ficheros de texto en nuestro programa fuente.
Definir macros.
Definir bloques de compilacin condicional.
Establecer parmetros dependientes de la mquina o compilador concreto.
Etc.

En nuestro caso, la directiva usada "#include" incluye en nuestro programa unos ficheros que
contienen lasdefiniciones necesarias para poder usar una serie de bibliotecas del sistema. Son los
llamados ficheros decabecera (header en ingls), como por ejemplo:

iostream, contiene los operadores bsicos para poder usar la entrada/salida estndar (como
por ejemplo el objeto "cout").
cstdlib, contiene una serie de operadores y funciones estndar de C++ (como por ejemplo
la funcin "system").
math, contiene funciones matemticas en punto flotante para nmeros reales.
iomanip, contiene los manipuladores de formato para la entrada/salida estndar.
Etc.

El preprocesador buscar estos ficheros en los directorios indicados por el software C++ ,
generalmente se configura desde la opcin "Opcionesdel Compilador". Es importante no cambiar
nunca estos directorios.
No se debe utilizar nunca la directiva "#include" para insertar ficheros con cdigo de programa
C++.

Compilacion y ejecucin: El siguiente paso es compilar nuestro programa para crear el cdigo
objeto y enlazarlo con las bibliotecas delsistema, para generar el programa ejecutable.

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 8 de 122
Para ello seleccionaremos la opcin Compilar del men Ejecutar (o pulsando el botn Compilar
en la barrade botones).
Esta opcin no solo compila nuestro programa sino que tambin lo enlaza con las bibliotecas del
sistemanecesarias para generar un programa ejecutable.
Al compilar, aparecer encima del editor una pequea ventana con el transcurso del proceso de
compilaciny al final del mismo aparecern los resultados del mismo, indicando el nmero de
errores encontrados. Unavez finalizado el proceso pulsaremos en botn Cerrar.
Para ver una informacin ms completa sobre el proceso de compilacin podemos pulsar sobre
la pestaaResultado de la compilacin que aparece en la parte inferior de la pantalla. Se
desplegar una ventanainformndonos sobre los parmetros de la compilacin y el resultado de
la misma, el nmero de erroresencontrado y el tamao del fichero ejecutable en bytes. Para
cerrar la ventana basta con pulsar en lapestaa Cerrar

En caso de producirse errores, se detendr el proceso de compilacin, la ventanita que muestra
eltranscurso de la compilacin desaparecer y se desplegar la pestaa Compilador en la parte
inferior de lapantalla mostrndose los diferentes mensajes de error. Pulsando con el ratn sobre
uno de estos mensajesaparecer destacada (en color rojo oscuro) la lnea del programa fuente en
donde el compilador hadetectado el correspondiente error.

PROCEDIMIENTO GUIA

ENTORNO DE TRABAJO

1. Ingrese a Dev C++




Nombre del archivo



AREA DE TRABAJO o ENTORNO DE PROGRAMACION
Pestaas de
informacin del
proceso
Barra de accesos
directos
Panel de
depuraci
n
Barra de estado: muestra el
nmero de lnea en la que se
encuentra el cursor con
respecto al entorno de
programacin

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 9 de 122


Descripcin del men

Archivo. Comandos de manejo de ficheros fuente y proyectos como "Nuevo", "Abrir
Proyecto oArchivo", "Guardar", "Cerrar", "Imprimir", "Importar", "Exportar", etc.

Edicin. Comandos para alterar y editar los programas fuentes en el editor integrado, como
"Cortar"texto, "Pegar" texto, "Deshacer" cambios, etc.

Buscar. Opciones para localizar y cambiar variables u otra informacin en los programas
fuente.

Ver. Los mens y las barras de herramientas (Toolbars) pueden activarse o desactivarse.

Proyecto. Comandos para manejar proyectos con mltiples ficheros fuente y para cambiar
lasopciones del proyecto.

Ejecutar. Contiene los comandos para compilar y ejecutar los programas.

Depurar. Comandos para manejar el depurador integrado.

Herramientas. Permite cambiar la configuracin por defecto del entorno de programacin y
elcompilador, as como utilidades para manejar e instalar herramientas y libreras externas.

CVS. Comandos para manejar el Control de Versiones de ficheros Fuente integrado en el
entorno.

Ventana. Opciones para cambiar de ventanas y configurar la organizacin de las mismas
dentro delentorno.

Ayuda. Informacin de ayuda sobre el entorno y un pequeo tutor de lenguaje C (en ingls).



2. Tenga en cuenta las siguientes combinaciones de teclas para trabajar en C++














Operaciones bsicas:
Use la teclas Ctrl + F9 para compilar un
programa.
Use la teclas F9 para ejecutar un programa.

Combinaciones de teclas para la edicin de programas :
Copiar un bloque marcado en la posicin del cursor
CTRL + C
Mover un bloque marcado en la posicin del cursor
CTRL +X
Pegar bloque de texto CTRL + V

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 10 de 122
3. Escriba el siguiente cdigo, en el entorno de programacin, este muestra la estructura usual de
un programa en C++.
Guia0101.cpp


























Observe entonces que C++ usa los smbolos /* */ (barra y asterisco, asterisco y barra)
para crear comentarios de varias lneas y usa el smbolo // (doble barra) para comentarios
de una sola lnea; El texto literal va escrito entre comillas; una instruccin termina con ;
(punto y coma). Complete explicando lo que hacen las siguientes terminos:

cout
-----------------------------------------------------------------------------------------------------------------
----

cin
-----------------------------------------------------------------------------------------------------------------
----

\n
-----------------------------------------------------------------------------------------------------------------
----
;
-----------------------------------------------------------------------------------------------------------------
----


/*-----------------------------------------------------
|Autor: |
|Fecha: |
|------------------------------------------------------
|DESCRIPCION DEL PROGRAMA |
| |
|-----------------------------------------------------*/
#include<iostream>
#include<cstdlib>
using namespace std;
//Zona de declacion de constantes
//Zona de declaracion de tipos
//Zona de cabeceras de funciones y procedimientos

//Aqu empiesa el programa principal
intmain()
{
//Zona de declaracion de variables del programa principal
int x;
//Zona de instrucciones del programa principal
cout<<"Ingrese su edad actual \n"; // Presenta texto literal y salida de linea
cin>>x;// Lee el valor de la variable x
x=x+1
/* La siguiente linea encadena en la salida de texto literal, valor de la variable
X y un salto o cambio de linea*/
cout<<"El proximo ao usted tendra "<<x<<" aos de edad en este mundo \n";
system("pause"); //hacer una pausa
return 0; // valor de retorno al sistema operativo
}
//Implementacion de procedimientos y funciones

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 11 de 122
4. Ahora vamos a compilar el cdigo escrito, presione la combinacin de teclas Ctrl+F9 (o dar
clic en el botn compilar)seguro que hay errores, observa:



Al momento de compilar antes nos pide que guardemos el archivo, guarda el archivo con el
nombre de Guia0101.cpp
Corrige el error encontrado por C++, debes poner punto y coma al final de la instruccin
de la lnea 23. ( x=x+1; )
Una vez que hayas corregido el error, seguro que veras la ventana siguiente:


5. Para ejecutar el programa presione la combinacin de teclas Ctrl+F10 o la tecla F9, el
programa se ejecutara en una nueva ventana como se muestra.


Clic en el
botn
para
compilar
Clic en el botn
para compilar y
ejecutar el
programa
Muestra los
errores de
depuracin
Esta ventana indica
que ya no existen
errores.

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 12 de 122

PROBLEMAS DE APLICACIN

1. En una nueva ventana escriba el siguiente programa, depure los errores y ejectelos.

Ejercicio01E01.cpp




















Corrige los errores que encontraras durante la depuracin, adems modifique el programa
para que la salida sea de la siguiente manera:






















/*-----------------------------------------------------
|Autor: |
|Fecha: |
|------------------------------------------------------
|DESCRIPCION DEL PROGRAMA |
| |
|-----------------------------------------------------*/
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
cout<<"-----------------------";
cout<<"| |";
cout<<"| ...HOLA MUNDO..! |"
cout<<"| |";
cour<<"-----------------------";
cout<<"\n";
system("pause");
return 0;
}
----------------------
| |
| HOLA MUNDO! |
| |
----------------------

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 13 de 122
2. Depure los errores

Ejercicio01E02a.cpp Ejercicio01E02b.cpp













3. Depure el siguiente cdigo y cambie la salida como se ve en la ventana de salida

Ejercicio01E03.cpp































#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int i=100, j=2000;
cout>>"i + j = ">>(i+j)<<"\n";
system("pause");
return 0;
}
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int i=0;
i=i+1;
cout<<i<<" ";
/*comentario/*//i=i+1;
cout<<i;
system("pause");
return 0;
}
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
intm,f,q;
m=90;
f=77;
q=69
cout<<"Matemtica ="<<m<<"Fisica"<<f<<"Quimica"<<q<<"\n";
system("pause");
return 0;
}

Matematica = 90
Fisica = 77
Quimica = 69

Presione una tecla.
Ventana de salida modificando el programa anterior Ejercicio0103.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 14 de 122
4. Verifique si las siguientes lneas de sentencias tienen errores de codificacin.

a) cout<< x= x;
b) m=5; //n=10; //s=m+n;
c) cin>>x;>>y;
d) cout<<\n Nombre: <<name;
e) cout<< introdusca el valor: ;cin>>x
f) /* Suma */ z=x+y;

















Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 15 de 122
ALGORITMOS CON ESTRUCTURA
SECUENCIAL SIMPLE


Objetivos
Solucionar problemas creando algoritmos simples
Codificar algoritmos con sentencias simples

CONSIDERACIONES PREVIAS

Estructura de un programa en C++: Comenzaremos viendo la estructura global de un
programa escrito en C++ para acontinuacin ir desglosando y analizando cada uno de sus
componentes. El programa que semuestra es el famoso Hola Mundo, un programa que
nicamente muestra el mensaje HolaMundo en pantalla antes de finalizar

/*
* Nombre: HolaMundo.cpp
* Autor: Juan Perez
* Fecha: 01/01/2010
* Descripcin: Este es el programa Hola Mundo.
*/
#include <iostream> // Para usar cout
#include <cstdlib> // No hace falta en este caso
using namespace std; // Para usar cout
int main ()
{
cout<< "Hola Mundo" << endl;
system("pause");
}

Como puede apreciarse, el programa comienza con un comentario a lo largo de sies lneas, y en
el cual se da informacin sobre el nombre, autor, fecha y propsito del programa. Esto no es
sintcticamente necesario como es bien sabido, pero siempre lo incluiremos como norma de
estilo. A continuacin nos encontramos con dos operaciones de inclusin ( # ). Sin entrar en
detalles sobre lo que internamente significan dichas inclusiones, lo que hacemos mediante las
mismas es indicarle al compilador que pretendemos hacer uso de las funcionalidades que nos
proporcionan unas ciertas bibliotecas (en este caso predefinidas; en temas posteriores
aprenderemos a definirlas por nuestra cuenta). En este caso concreto queremos emplear la
biblioteca de entrada/salida iostream para lo cual tenemos que incluirla. La otra inclusin que se
realiza corresponde a una biblioteca (cstdiib) que no es necesaria en este caso dada la
simplicidad del programa, pero que s lo ser en la mayora de los programas que realicemos ms
adelante. La lnea using namespace std; la ignoraremos por el momento.

El algoritmo comienza en la lnea int main(). Aqu aparecen varios elementos cuyo significado
veremos en temas posteriores. Lo que s debemos saber es que todo programa que realicemos
tendr un algoritmo principal (el que empezar a realizarse cuando ejecutemos el programa), y
que el comienzo de dicho algoritmo principal se indica mediante una lnea de estructura como la
mostrada.


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 16 de 122
A continuacin encontramos el cuerpo del algoritmo principal, que abarca desde la llave de
apertura ({) hasta la llave de cierre (}). Siempre aparecern estas llaves delimitando el cuerpo de
un algoritmo. En este caso, el algoritmo consta de dos rdenes, mostrar en pantalla el mensaje
"Hola Mundo", saltar a la lnea siguiente y hacer una pausa. Como puede verse, esto se expresa
haciendo uso del objeto predefinido (en iostream precisamente) cout. Todo lo que redirijamos
(mediante el empleo del operador <<) hacia dicho objeto ser mostrado en pantalla. En el
ejemplo se redirige en primer lugar la cadena "Hola Mundo", y a continuacin la indicacin de
salto de linea (endl - abreviatura de end of line). La instruccin termina mediante un punto y
coma (;), que la separa de instrucciones posteriores (es preciso poner dicho delimitador incluso
aun si no haya instruccin posterior).

Entrada y Salida en C++:Cuando incluimos la biblioteca iostream disponemos
automticamente del flujo cin(asociado a la entrada a travs de teclado), y el flujo cout (asociado
a la salida a travs depantalla). Sobre dichos flujos podemos aplicar respectivamente las
operaciones de extraccin(>>) y de insercin (<<). Empezando por este ltimo, imaginemos el
siguiente cdigo:

#include <iostream>
using namespace std;
int main()
{
int x = 10, y = -1;
char c = A;
double d = 10.124567;
cout<< x << y << endl<< c << d << Se acab;
}

La ejecucin del mismo producira en pantalla la salida:

10-1
A10.124567Se acab

Como puede apreciarse, la gestin de la salida de datos es muy cmoda y homogn ea. Otrotanto
ocurre con la gestin de la entrada de datos. En este caso, simplemente tenemos queextraer los
datos que vayamos precisando del flujo cin:

#include <iostream>
using namespace std;
int main()
{
int x, y;
char c;
double d;
cin>> x >> y >> c >> d;
}

En el cdigo que se muestra, se leen de teclado los valores de x, y, c y d sucesivamente.

El siguiente programa muestra un ejemplo de uso combinado de operaciones de E/S. Eneste caso
se trata de leer dos nmeros y mostrar su suma en pantalla:


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 17 de 122
#include <iostream>
using namespace std;
int main()
{
int a, b; // los nmeros que queremos sumar
cout<< Introduzca dos nmeros: << endl;
cin>> a >> b;
cout<< Su suma es << a + b << endl;
}

Ntese un hecho importante: en la ltima lnea aparecen combinados los operadores deinsercin
(<<) y de suma (+). El funcionamiento del programa es correcto, ya que el operadorde insercin
tiene una precedencia menor que la suma. Por ello, primero se realiza estaltima, y es el
resultado lo que se inserta en el flujo de salida. Si volvemos a la lista de nivelesde precedencia
mostrada al final de la seccin anterior, los operadores de flujo se situaran enun nivel intermedio
entre el 2 (suma y resta) y el 3 (operaciones relacionales).


Algoritmos: Luego de analizar detalladamente el problema hastaentenderlo completamente, se
procede a disear unalgoritmo (trazar un plan) que lo resuelva por medio depasos sucesivos y
organizados en secuencia lgica. Elconcepto intuitivo de algoritmo (procedimientos y reglas)se
puede encontrar en procesos naturales de los cualesmuchas veces no se es conciente. Por
ejemplo, elproceso digestivo es un concepto intuitivo de algoritmocon el que se convive a diario
sin que haga falta undefinicin matemtica del mismo. Tener claro elproceso digestivo, no
implica que los alimentosconsumidos nutran ms. La familiaridad de lo cotidianoimpide a las
personas ver muchos algoritmos que sesuceden a su alrededor. Procesos, rutinas o
biorritmosnaturales como la gestacin, las estaciones, lacirculacin sangunea, los ciclos
csmicos, etc, sonalgoritmos naturales que generalmente pasandesapercibidos. Los algoritmos se
ubican en la segunda fase del ciclo de la programacin:


En trminos generales, un Algoritmo debe ser:

Realizable: El proceso algortmico debe terminar despus de una cantidad finita de pasos. Se
dice que un algoritmo es inaplicable cuando se ejecuta con un conjunto de datos iniciales y el
proceso resulta infinito o durante la ejecucin se encuentra con un obstculo insuperable sin
arrojar un resultado.
Comprensible: Debe ser claro lo que hace, de forma que quien ejecute los pasos (ser humano
o mquina) sepa qu, cmo y cundo hacerlo. Debe existir un procedimiento que determine
el proceso de ejecucin.

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 18 de 122
Preciso: El orden de ejecucin de las instrucciones debe estar perfectamente indicado.
Cuando se ejecuta varias veces, con los mismos datos iniciales, el resultado debe ser el
mismo siempre. La precisin implica determinismo.

Los Algoritmos se puede expresar de muchas maneras,pero las mas difundidas son solo dos
formas:Seudocdigo y Diagrama de Flujo. En Seudocdigo lasecuencia de instrucciones se
representa por medio defrases o proposiciones, mientras que en un Diagramade Flujo se
representa por medio de grficos.

Ejemplo: Elaborar un Algoritmo para calcular el rea de cualquier tringulorectngulo y
presentar el resultado en pantalla.

Seudocdigo

Paso 1: Inicio
Paso 2: Conocer la base del tringulo y guardarla en la variable"Base"
Paso 3: Conocer la altura del tringulo y guardarla en la variable"Altura"
Paso 4: Asignar el nmero 2 a la constante "Div"
Paso 5: Guardar en la variable "Area" el valor de multiplicar "Base"por "Altura"
Paso 6: Guardar en la variable "Area" el valor de dividir "Area"entre "Div"
Paso 7: Reportar el valor de la variable "Area"
Paso 8: Final



Diagrama de Flujo (DFD)



La estandarizacin de los smbolos para la elaboracin de Diagramas de Flujo tard varios aos.
Con el fin de evitar lautilizacin de smbolos diferentes para representar procesos iguales, la
INICIO
Leer:
BASE, HALTURA
DIV = 2
Imprimir:
Area del triangulo: AREA
INICIO
AREA=BASE * ALTURA
AREA=AREA / DIV

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 19 de 122
Organizacin Internacional para laEstandarizacin (ISO, por su sigla en ingls) y el Instituto
Nacional Americano de Estandarizacin (ANSI, por su sigla eningls), estandarizaron los
smbolos que mayor aceptacin tenan en 1985. Los siguientes son los principales smbolospara
elaborar Diagramas de Flujo:



El Diagrama de Flujo es una herramienta grfica valiosa para la representacin esquemtica de la
secuencia deinstrucciones de un algoritmo o de los pasos de un proceso.

Cuando el algoritmo se desea expresar en forma dediagrama de flujo, se deben tener en cuenta
algunasreglas o principios bsicos para su elaboracin:

Poner un encabezado que incluya un ttulo queidentifique la funcin del algoritmo; el nombre
delautor; y la fecha de elaboracin;
Slo se pueden utilizar smbolos estndar (ISO 5807);
Los diagramas se deben dibujar de arriba haca abajo y de izquierda a derecha;
La ejecucin del programa siempre empieza en la parte superior del diagrama;
Los smbolos de Inicio y Final deben aparecer solo una vez;
La direccin del flujo se debe representar por medio de flechas (lneas de flujo);
Todas las lneas de flujo deben llegar a un smbolo o a otra lnea;
Una lnea de flujo recta nunca debe cruzar a otra. Cuando dos lneas de flujo se crucen, una
de ellas debe incluir una lnea arqueada en el sitio donde cruza a la otra (ilustracin 2-5);
Se deben inicializar las variables que se utilicen o permitir la asignacin de valores mediante
consulta al usuario;
Las bifurcaciones y ciclos se deben dibujar procurando una cierta simetra;

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 20 de 122
Cada rombo de decisin debe tener al menos dos lneas de salida (una para SI y otra para
NO);
Las acciones y decisiones se deben describir utilizando el menor numero de palabras posible;
sin que resulten confusas o poco claras;
Si el Diagrama se vuelve complejo y confuso, es mejor utilizar smbolos conectores para
reducir las lneas de flujo;
Todo el Diagrama debe ser claro, ordenado y fcil de recorrer;
El Diagrama se debe probar recorrindolo con datosiniciales simples (prueba de escritorio).


PROCEDIMIENTO GUIA

PROBLEMA 01:
1. Digitar el siguiente programa en las lneas que se indican:

Guia0201.cpp
















2. Guarde el contenido de la ventana en su USB:
a. Archivo, guardar como...En el cuadro dilogo Save File Asescriba Guia0201.cpp y
pulse en el botn aceptar

3. Verifique los errores posibles al compilarlo:
a. Presione Ctrl + F9
b. Si tiene errores aparecern en una nueva ventana de depuracin, corrija los errores en
la posicin del cursor o lnea anterior.
c. Repita los a) y b) hasta que no existan errores

4. Ejecute el programa presionando la teclaF9, observe lo que se ha realizado, y para regresar al
programa pulse una tecla. (Repita el paso 4. cuantas veces desee )

Lnea N
1. #include conio.h
2. #include <iostream.h>
3. main( )
4. {
5. //clrscr( );
6. cout<< CONVERSION DE SOLES A DOLARES;
7. cout<< =============================;
8. getch( );
9. return 0;
10. }


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 21 de 122
Ntese que existe un Ventana de Edicin y una Ventana de Ejecucin

5. Ahora mejoraremos la visualizacin utilizando el comando endl\n :
a. Modifique la lnea 6 agregando \n como se muestra y ejecute el programa:
cout<< CONVERSION DE SOLES A DOLARES \n;
b. Ahora modifique la lnea 6 agregando endl como se muestra y ejecute el programa:
cout<< CONVERSION DE SOLES A DOLARES<<endl;

Ntese que se puede utilizar endl o \n para hacer un salto de lnea en la
ejecucin del programa

6. Ahora documentaremos el programa colocando comentarios:
a. Ubique el cursor al inicio del programa (primera lnea posicin 1:1) digite lo
siguiente y ejecute el programa:
/* PROGRAMA : DOLARES.CPP
DESCRIPCION : Convierte Soles a Dlares
FECHA MOD. : / /
PROGRAMADOR : (Su nombre) */

Ntese que el texto escrito entre /* y */ no es interpretado por C++ y se
considera como un comentario

b. Al inicio de la lnea 12 agregar el smbolo / dos veces como se muestra y ejecute el
programa varias veces:
// Hace una pausa solicitando que presione una tecla

Ntese que la codificacin escrita a partir de // hasta el final de lnea no es
interpretado por C++ y se considera como un comentario

7. Ahora vamos a leer la cantidad de dinero en soles para realizar nuestra conversin :
a. Declarar la variable de Soles a utilizar como un dato real:
i. Ubicarse al inicio de la lnea 9 (al inicio de //clrscr( );)
ii. Digitar lo siguiente y Pulsar Enter
float Soles;

b. Visualizar un mensaje antes de leer la variable Soles
i. Ubicarse al inicio de la lnea 13 (al inicio de getch( );)
ii. Digitar lo siguiente y Pulsar Enter
cout<<INGRESE LA CANTIDAD EN SOLES :;
iii. Ejecutar el programa (F9).
iv. Agregar \n \n en la lnea 12 para mejorar el aspecto

c. Leer por teclado la variable Soles
i. Ubicarse al inicio de la lnea 14
ii. Digitar lo siguiente y Pulsar Enter
cin>>Soles;
iii. Ejecutar el programa (F9).

d. El programa modificado ser:

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 22 de 122























8. A continuacin leeremos el tipo de cambio del dlar:
a. Declarar la variable TipCambio
i. En la lnea 9 declarar TipCambio como tipo real:
float Soles, TipCambio;

b. Visualizar un mensaje y leer la variable TipCambio
i. Ubique el cursor al inicio de la lnea 15, agregue las lineas para obtener:
cout<<INGRESE EL TIPO DE CAMBIO DEL $: ;
cin>>TipCambio;

c. Ejecute el programa (F9).

9. Enseguida codificaremos la operacin a realizar para calcular el tipo de cambio:
a. Al inicio de la lnea 17 digitar lo siguiente y pulsar Enter
Dolares = Soles/TipCambio;

b. Como se esta utilizando la variable Dolares, entonces tambin deber declararse en la
lnea 9:
float Soles, TipCambio, Dolares;

c. Ejecute el programa (F9).

10. Finalmente visualizaremos el resultado de nuestro programa:
a. Al inicio de la lnea 18 digitar lo siguiente y pulsar Enter
cout<< LA CANTIDAD EN DOLARES ES: <<Dolares;

b. Ejecute el programa.
Lnea N
1. /* PROGRAMA : DOLARES.CPP
2. DESCRIPCIN : Convierte Soles a Dlares
3. FECHA MOD. : / /
4. PROGRAMADOR : (Su nombre) */
5. #include conio.h
6. #include<iostream.h>
7. main( )
8. {
9. float Soles;
10. //clrscr( );
11. cout<< CONVERSION DE SOLES A DOLARES<<endl;
12. cout<< ==================\n\n;
13. cout<<INGRESE LA CANTIDAD EN SOLES :;
14. cin>>Soles;
15. getch( );
16. return 0;
17. }

C++ guarda automticamente el archivo con el mismo nombre, cada vez que se
compila

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 23 de 122

c. Modifique la lnea digitada por la siguiente y ejecute el programa:
cout<<RESULTADO : <<endl;
cout<< <<Soles<< Soles, es igual
a<<Dolares<<Dlares;

11. Si ha seguido los pasos correctamente la ejecucin del programa ser:

CONVERSION DE SOLES A DOLARES
=============================

INGRESE LA CANTIDAD EN SOLES : 70
INGRESE EL TIPO DE CAMBIO DEL $: 3.5
RESULTADO:
70 Soles, es igual a 20 Dlares



12. El programa realizado corresponde al siguiente algoritmo presentado en Diagrama de Flujo.














13. Cree una nueva ventana (Ctrl+N) y en esta disee un programa que convierta una cantidad de
dlares a soles (puede copiar y pegar el cdigo del programa anterior y modificar),
obteniendo una ejecucin similar a:

CONVERSION DE DOLARES A SOLES
=============================

INGRESE LA CANTIDAD EN DOLARES : 70
INGRESE EL TIPO DE CAMBIO DEL $ : 3.5
RESULTADO:
70 Dlares, es igual a 245 Soles


A su programa creado gurdelo con el nombre de Guia0202.cpp






Leer
Soles, TipCambio
INICIO
FIN
Dolares = Soles/TipCambio

Escribir
Dolares
Recuerda que las variables deben
ser usadas en el programa, tal
como fueron declaradas, es decir
si la variable esta mayscula, en
todo el programa debe ser usada
en maysculas.


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 24 de 122
PROBLEMA 02:
Disear un programa que visualice el grafico de un pino de asteriscos, use la sentencia cout y
guarde su archivo con el nombre de Guia0203.cpp

*
* *
* *
* *
* *
* * * * * * *
*
*
* * *
PROBLEMA 03:
Ahora codificaremos los programas a partir de un algoritmo en DFD. Calcule el promedio en el
curso de Filosofa, el promedio se obtiene del Examen terico, Examen prctico y Trabajo
prctico.

Datos de Entrada:
Et : Nota del Examen terico
Ep : Nota del Examen prctico
T : Nota de Trabajo





















a) Ejecute varias veces el programa y notara que siempre el promedio es entero, ahora
modifique la lnea 14 de la siguiente manera:
Prom=((Et + Ep + T)/3.0;

b) Enseguida mejoraremos la visualizacin de los resultados, reemplazando la lnea 16 por:
cout<<(<<Et<<+ <<Ep<< + <<T<< )/3 = <<Prom<<\n;
PROBLEMA 04:
Leer
Et, Ep, T
INICIO
FIN
Prom = (Et +Ep + T)/3

Escribir
Prom
Observacin: Estas dos lneas de cdigo son iguales
.
cout<<Ingrese el valor del radio<<endl;
cout<<Ingrese el valor del radio \n;


Datos de Salida:
Prom : Promedio
Procedimiento:
Prom = (Et + Ep + T)/3

#include <cstdlib>
#include <iostream>
using namespace std;
main()
{
int Et, Ep, T;
float Prom;
cout<<" INGRESE NOTA DEL EXAMEN TEORIO : ";
cin>>Et;
cout<<" INGRESE NOTA DEL EXAMEN PRACTICO : ";
cin>>Ep;
cout<<" INGRESE NOTA DE TRABAJO : ";
cin>>T;
Prom= (Et + Ep + T)/3;
cout<<" EL PROMEDIO ES : ";
cout<<Prom<<\n;
system(pause);
return 0;
}
Antes de leer o escribir un
dato es importante colocar un
mensaje
Todas las variables
a utilizar en el
programa deben ser
declaradas
Guia0204.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 25 de 122
Una persona desea depositar su capital en un banco y desea saber cunto dinero ganar despus
de un mes si el banco paga a razn de 5% mensual

Datos de Entrada:
Cap : Capital de la persona


















PROBLEMA 05:
Un cliente desea saber cunto dinero deber pagar finalmente por su compra en una tienda, se
conoce que la tienda ofrece un descuento del 35% sobre el precio de la compra.

Datos de Entrada:
Prec : Precio de la compra


















Ejecute varias veces el programa y mejore la salida.
PROBLEMAS DE APLICACIN

Leer
Cap
INICIO
FIN
DinGan = Cap*0.05

Escribir
DinGan
Leer
Prec
INICIO
FIN
Pag = Prec Prec*0.35

Escribir
Pag
Datos de Salida:
DinGan : Dinero a Ganar en
un mes
Procedimiento:
DinGan = Cap*0.05
//#include<conio.h>
#include<cstdlib>
#include<iostream>
using namespace std;
main()
{
float DinGan, Cap;
cout<<" INGRESE EL CAPITAL DE LA PERSONA : ";
cin>>Cap;
DinGan = Cap*0.05;
cout<<" EL DINERO A GANAR EN UN MES ES: ";
cout<<DinGan<<"\n";
//getch();
system("pause");
return 0;
}
Guia0205.cpp
Datos de Salida:
Pag : Pago Final
Procedimiento:
Pag = Prec - Prec*0.35
#include<cstdlib>
#include<iostream>
using namespace std;
main()
{
float Prec, Pag;
cout<<" INGRESE EL PRECIO DE COMPRA: ";
cin>>Prec;
Pag = Prec - Prec*0.35;
cout<<" EL PAGO FINAL POR LA COMPRA ES: ";
cout<<Pag<<"\n";
system("pause");
return 0;
}
Guia0206.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 26 de 122
1. Un alumno desea saber cul ser su calificacin final en el curso de Introduccin a la
Computacin. Dicha calificacin se compone de los siguientes porcentajes:
40% del promedio de sus tres trabajos prcticos
25% de la calificacin del Examen Terico
35% de la calificacin del Examen Prctico

Solucin:
PTP: Promedio de trabajos prcticos
ET: Examen terico
EP: Examen practico
CF: calificacin final




2. La Escuela de Ingeniera agroindustrial desea saber el porcentaje de hombres y mujeres que
existe en el primer ao de estudios.

Solucin:
H: hombres
M: mujeres
PH: porcentaje de hombres
PM: porcentaje de mujeres












3. Calcular el salario de un obrero si obtuvo un incremento del 25% sobre su salario anterior.

Solucin:
INICIO
PTP, ET,EP
CF=PTP*0.4+ET*0.25+EP*0.35
Calificacion Final:
CF
FIN
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
float ptp,et,ep,cf;
cout<<"Ingrese, Trabajos practicos:";
cin>>ptp;
cout<<"Ingrese Examen Teorico:";
cin>>et;
cout<<"Ingrese Examen Practico:";
cin>>ep;
cf=ptp*0.4+et*0.25+ep*0.35;
cout<<"Calificacion Final:"<<cf;
cout<<"\n";
system("pause");
return 0;
}
Guia02E01.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
float h,m,ph,pm;
cout<<"Ingrese Numero de hombres:";
cin>>h;
cout<<"Ingrese Numero demujeres:";
cin>>m;
ph=100*h/(h+m);
pm=100-ph;
cout<<"Porcentaje de hombres:"<<ph;
cout<<"\n";
cout<<"Porcentaje de mujeres:"<<pm;
cout<<"\n";
system("pause");
return 0;
}
Guia02E02.cpp
Guia02E03.cpp
INICIO
Leer:
Hombres: H
Mujeres: M
PH=100*H/(H+M)
PM=100-PH
Porcentaje de
Hombres: PH
Porcentaje de
Mujeres: PM
FIN

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 27 de 122
SA: salario anterior
NS: nuevo salario



4. En la Universidad se desea calcular el presupuesto anual que recibir cada carrera si la
reparticin es:
30% para la Escuela de Gestin Publica
20% para la Escuela de Ing. De Minas
50% para la Escuela de Ing. Agroindustrial

Solucin:
PA: presupuesto anual de la universidad
GP: presupuesto para gestin publica
MI: presupuesto para ing. de minas
AG: presupuesto para ing. agroindustrial





5. Tres personas desean invertir su dinero en un proyecto informtico. Cada una de ellas invierte
una cantidad distinta, se desea obtener el porcentaje que cada quien invierte en el proyecto
respecto a la cantidad total invertida
INICIO
Salario
Anterior: SA
NS=SA+0.25*SA
Nuevo salario: NS
FIN
INICIO
Leer:
Presupuesto
anual: PA
GP=PA*0.3
MI=PA*0.2
AG=PA*0.5
Presupuesto Gestion: GP
Presupuesto Minas: MI
Presupuesto Agro: AG
FIN
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
float sa,ns;
cout<<"Ingrese Salario anterior:";
cin>>sa;
ns=sa+0.25*sa;
cout<<"El nuevo salario es:"<<ns;
cout<<"\n";
system("pause");
return 0;
}
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
float pa,gp,mi,ag;
cout<<"Ingrese Presupuesto anual:";
cin>>pa;
gp=pa*0.3;
mi=pa*0.2;
ag=pa*0.5;
cout<<"Presupuesto para Gestion publica:"<<gp;
cout<<"\n";
cout<<"Presupuesto para Ing. de minas:"<<mi;
cout<<"\n";
cout<<"Presupuesto para Ing.
Agroindustrial:"<<ag;
cout<<"\n";
system("pause");
return 0;
}
Guia02E04.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 28 de 122

Solucin:
D1: inversin de la persona 1
D2: inversin de la persona 2
D3: inversin de la persona 3




6. El dueo de una computadora desea venderla. Obtener el precio en que lo debe vender para
obtener una ganancia del 25%.

7. Codifique el siguiente cdigo: disee el algoritmo en DFD e indique la salida respectiva.

















8. El siguiente programa tiene errores, encuntrelos.


INICIO
Leer:
Persona1: D1
Persona 2: D2
Persona 3: D3
TOTAL=D1+D2+D3
Porcentaje persona 1: PD1
Porcentaje persona 2: PD2
Porcentaje persona 3: PD3
FIN
PD1=100*D1/TOTAL
PD2=100*D2/TOTAL
PD3=100*D3/TOTAL
Guia02E08.cpp
//Area de un triangulo

#include<iostream>
#include <cstdlib>
using namespace std;
int main()
{
floatbase,altura,div,area;
cout<<"Calculo del area de un triangulo \n";
div=2;
cin>>base;
cin>>altura;
area=base*altura/div;
cout<<"El area es: "<<area;
cout<<"\n";
system("pause");
return 0;
}
Guia02E07.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
float d1,d2,d3,total,pd1,pd2,pd3;
cout<<"Ingrese Inversion persona 1:";
cin>>d1;
cout<<"Ingrese Inversion persona 2:";
cin>>d2;
cout<<"Ingrese Inversion persona 3:";
cin>>d3;
total=d1+d2+d3;
pd1=100*d1/total;
pd2=100*d2/total;
pd3=100*d3/total;
cout<<"Porcentaje Persona 1:"<<pd1;
cout<<"\n";
cout<<"Porcentaje Persona 2:"<<pd2;
cout<<"\n";
cout<<"Porcentaje Persona 3:"<<pd3;
cout<<"\n";
system("pause");
return 0;
}
Guia02E05.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 29 de 122





























/*
* Nombre: Errores.cpp
* Autor: Chindasvinto de Prusia
* Fecha: 10/12/2010
* Descripcin: Programa ejemplo sobre errores lxicos,
* sintcticos y semnticos
*
*/
#include<iostream>
using namespace std;
intmain ()
{
const int tasa = 25.00;
doublehoras, das, total, neto;
cout<< Introduce las horas trabajadas:\n ';
cin>> horas
cout<< Introduce los dias trabajados: \n;
cin>>dias;
horas*dias = total;
neto = total-Tasa;
cout>> El valor total que pagar es: >>endl;
cin<< total <<endl;
cout<< El valor neto que pagar es: <<endl
cout<< NETO <<endl;
system("pause");
return(0);
}

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 30 de 122
ESTRUCTURAS DE CONTROL
SELECTIVA

Objetivo
Solucionar problemas creando algoritmos con estructuras selectivas
Codificar algoritmos con sentencias de seleccin simples y mltiples

CONSIDERACIONES PREVIAS

Las estructurasde control o construcciones de control controlan la secuencia o flujo de ejecucin
de lassentencias. Las estructuras de control se dividen en tres grandes categoras en funcindel
flujo de ejecucin: secuencia, seleccin e iteracin.

Hasta este momento slo se ha usado el flujo secuencial. Cada una de lassentencias que se
utilizan en C++ estn separadas por el carcter punto y coma (;). Noobstante, en algunos casos
nos interesar agrupar en un bloque una serie de sentencias,como veremos al explicar las
estructuras de seleccin y de iteracin. El bloque desentencias se define por el carcter llave de
apertura ({) para marcar el inicio delmismo, y el carcter llave de cierre (})para marcar el final.
Ejemplo:

{
sentencia1;
sentencia2;

sentencian;
}

Sin embargo, en caso de que el bloque de sentencias este constituido por unanica sentencia no
es obligatorio el uso de las llaves de apertura y cierre ({ }), aunque sirecomendable.

Estructuras de seleccin: Las estructuras de seleccin o condicionales controlan si una sentencia
o secuencia desentencias se ejecutan, en funcin del cumplimiento o no de una condicin o
expresinlgica. C++ tiene dos estructuras de control para la seleccin, if y switch.

Sentencia If: Esta sentencia permite realizar una bifurcacin, ejecutando una parte u otra del
programa segn se cumpla o no una cierta condicin. La sintaxis es la siguiente:

Sentencia I f Sentencia I f..Else

if (<expres_log>) if (<expres_log>)
{ {
<sec_sent> <sec_sent1>
} }
else
{

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 31 de 122
<sec_sent2>
}

donde<expres_log> es una expresin lgica que ha de ir entre parntesis, y <sec_sent> esuna
sentencia o bloque de sentencias.
Explicacion If..else: Se evala expres_log. Si el resultado es true (!=0), se ejecuta sec_sent1 y se
prosigue en la lnea siguiente a sec_sent2; si el resultado es false (=0), se salta sec_sent1, se
ejecuta sec_sent2 y se prosigue en la lnea siguiente. Hay que indicar aqu tambin que sec_sent1
y sec_sent2 pueden ser sentencias simples o compuestas.
El diagrama de flujo para la sentencia if es:


Ejemplos:

Sentencia if
Guia03EJ01.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int num;
cout<<"Introduzca numero:";
cin>> num;
if ((num%2)==0)
{
cout<< "PAR" << endl;
}
system(pause);
}









EXPRES_LOG
SEC_SENT
V F
SEC_SENT
INICIO
Leer:
X
(X MOD 2)=0
Imprimir:
PAR
FIN
V F
Diagrama de flujo (DFD)

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 32 de 122
Sentencia If..else
Guia03EJ02.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int num;
cout<<"Introduzca numero:";
cin>> num;
if ((num%2)==0)
{
cout<< "El numero" << num;
cout<< "es PAR" << endl;
}
else
{
cout<< "IMPAR" << endl;
}
system(pause);
}
Sentencia If..else multiple o anidado: Las sentencias if mostradas hasta el momento
implementan decisiones que implican una odos alternativas. Sin embargo, tambin es posible
utilizarlas para implementar decisiones queimpliquen diferentes alternativas. Una sentencia if es
anidada cuando la sentencia de la ramaverdadera o de la rama falsa es a su vez otra sentencia if.
Una sentencia if anidada se puedeutilizar para implementar decisiones con varias alternativas o
multi-alternativas. Una estructuratpica if-else anidada sera la siguiente

if (<expres_log>)
{
<sec_sent>
}
else if (<expres_log>)
{
<sec_sent>
}
else if (<expres_log>)
{
<sec_sent>
}
else
{
<sec_sent>
}
INICIO
Leer:
X
(X MOD 2)=0
Imprimir:
IMPAR
Imprimir:
PAR
FIN
V F
Diagrama de flujo (DFD)

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 33 de 122

Como ejemplo, considrese un programa que nos permita escribir en pantalla el
mensajecorrespondiente a un valor que representa una calificacin numrica. El programa
utilizandosentencias if anidadas sera el siguiente:

Guia03EJ03.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
unsigned int nota;
cout<< "Introduzca una calificacin numrica:";
cin>> nota;
cout<< "La calificacin del alumno es" << endl;
if (nota == 20)
{
cout<< "Matricula de Honor" << endl;
}
else if (nota >= 17)
{
cout<< "Sobresaliente" << endl;
}
else if (nota >= 14)
{
cout<< "Notable" << endl;
}
else if (nota >= 11)
{
cout<< "Aprobado" << endl;
}
else
{
cout<< "Desaprobado" << endl;
}
system("pause");
}








Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 34 de 122
El diagrama de flujo para if anidados sera el siguiente:



Sentencia Switch: La sentencia switch es una sentencia de C++ que se utiliza para seleccionar
una de entre mltiplesalternativas. Esta sentencia es especialmente til cuando la seleccin se
basa en el valor de unavariable de un tipo simple o de una expresin de un tipo simple
denominada expresin de control oselector. La sintaxis es la siguiente:

switch (selector)
{
case<etiqueta> : <sec_sent>
break;
case<etiqueta> : <sec_sent>
break;
.
.
.
case<etiqueta> : <sec_sent>
break;
default : <sent> //opcional
}

INICIO
Leer:
N
N=20
Imprimir:
MAT. DE HONOR
FIN
V F
N>=17
Imprimir:
SOBRESALIENTE N>=14
Imprimir:
NOTABLE N>=11
Imprimir:
APROBADO
Imprimir:
DESAPROBADO

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 35 de 122
donde(selector) es una expresin ordinal, <sec_sent> es una sentencia o secuencia
desentencias terminadas en punto y coma (;), y <etiqueta> es una expresin constante.
La expresin selector debe ser un tipo ordinal (por ejemplo int, char, bool pero nofloat, double o
string). El tipo de cada etiqueta debe ser el mismo que el de la expresinselector. Las
expresiones estn permitidas como etiquetas, pero nicamente si cada operando de laexpresin
es en si mismo una constante (ej. 4+8, c*20 si c ha sido definido anteriormente comoconstante).
Ejemplo:

Guia03EJ04.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int A,B, Resultado;
char operador;
cout<< "Introduzca un numero:";
cin>> A;
cout<< "Introduzca otro numero:";
cin>> B;
cout<<"Introduzca un operador (+,-,*,/):";
cin>> operador;
Resultado = 0;
switch (operador)
{
case - : Resultado = A B;
break;
case + : Resultado = A + B;
break;
case * : Resultado = A * B;
break;
case / : Resultado = A / B; //suponemos B!=0
break;
default : cout << "Operador Invalido"<< endl;
}
cout<< "El resultado es:";
cout<< Resultado << endl;
system(pause);
}

Cuando se ejecuta la sentencia switch se evala el selector. Si el valor de la expresin esigual a
una etiqueta, entonces se transfiere el flujo de control a las sentencias asociadas con laetiqueta
correspondiente, y se ejecutan todas las sentencias del bloque de sentencias hasta que
seencuentre una sentencia break (o hasta que se encuentre el final de la sentencia de

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 36 de 122
controlswitch). Si el valor del selector no esta listado en ninguna etiqueta case, no se ejecutar
ningunade las opciones a menos que se especifique la accin por defecto default
La omisin de la etiqueta default puede ocasionar un error lgico difcil deprever. Aunque esta
etiqueta es opcional, se recomienda su uso a menos deque se est absolutamente seguro de que
todos los valores del selector estnincluidos en las etiquetas case.

PROCEDIMIENTO GUIA

PROBLEMA 01:
Calcule el nmero de pulsaciones que debe tener una persona por cada 10 segundos de ejercicio
aerbico. La frmula que se aplica es:
Para el sexo femenino : (220 Edad)/10
Para el sexo masculino : (210 Edad)/10

Datos de Entrada:
Edad : Edad de la persona
Sex : Sexo de la persona ( M o F )

Procedimiento:

Verdad Npulsac = (220 - Edad)/10
Si Sex = F
Falso Npulsac = (210 - Edad)/10

1. Realizar el DFD y la respectiva codificacin del problema 01.
























#include <iostream>
#include<cstdlib>
using namespace std;
int main()
{
int Edad, Npulsac;
char Sex;
cout<<" INGRESE LA EDAD DE LA PERSONA : ";
cin>>Edad;
cout<<" INGRESE EL SEXO DE LA PERSONA (M/F) : ";
cin>>Sex;
if (Sex == 'F')
Npulsac= (220 - Edad)/10;
else
Npulsac= (210 - Edad)/10;
cout<<" EL NUMERO DE PULSACIONES ES :
"<<Npulsac<<"\n";
system("pause");
return 0;
}
Datos de Salida:
Npulsac : Nmero de pulsaciones de la persona
Los caracteres
se colocan
entre
apstrofes
Guia0301.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 37 de 122
a) Ejecute el programa varias veces y pruebe con los siguientes valores
i. Edad = 15 Sexo = M
ii. Edad = 15 Sexo = F






b) Ahora agregaremos a nuestro programa la posibilidad de reconocer una letra mayscula
minscula para el Sexo, entonces modifique la lnea 12 del programa:
if (Sex == 'F' || Sex == 'f' )

c) Ejecute el programa y verifique el resultado para los datos de a.i. y a.ii. Existe
diferencia!

2. Ntese que al visualizar el resultado no se sabe si las pulsaciones corresponden a una persona
de sexo masculino o femenino:
g) Modificaremos nuestro diagrama para que realice esta tarea.

h) Como la codificacin es similar al diagrama anterior, guardar el programa con otro nombre
(File/Save as..Guia0301b.cpp) y realice las siguientes modificaciones:
i. Reemplace la lnea 13 por :
{
Npulsac= (220 - Edad)/10;
cout<<" EL NUMERO DE PULSACIONES DE
LA PERSONA DE SEXO FEMENINO ES:"<<Npulsac;
}

i) Complete la codificacin para el caso de las acciones a realizar cuando el resultado de
condicin sea falso. El diagrama modificado sera el siguiente

















j) Ejecute el programa varias veces.

Analiza: Por qu el resultado es el mismo para i. y ii. Si el sexo
ingresado es diferente?

Cuando existen ms de una
sentencias despus de if else deben
estar entre dos llaves { }para que se
ejecuten dichas sentencias.
Leer
Edad, Sex
If
Sex = F Sex= f
INICIO
FIN
Npulsac = (210 Edad)/10

Npulsac = (220 Edad)/10

Escribir
EL NUMERO DE
PULSACIONES DE LA
PERSONA DE SEXO
FEMENINO ES,
Npulsac
F V
Escribir
EL NUMERO DE
PULSACIONES DE LA
PERSONA DE SEXO
MASCULINO ES,
Npulsac


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 38 de 122
k) Pruebe ahora con los siguientes valores:

Edad =18
Sexo = A





3. Para dar solucin al problema cuando se ingresa un valor del Sexo diferente a los reconocidos
(M o F), modificaremos nuestro diagrama aadiendo un control para que cuando el valor
ingresado sea diferente a M, m, f, F, el programa de un mensaje de error.











Analiza: Observe el resultado Qu sucede?El sexo ingresado
que es diferente a M o F, a quien pertenece como lo interpreta
el programa?
Observe los niveles y llaves
que se usan al momento de
codificar el algoritmo.

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 39 de 122

a) En una nueva ventana codifique el algoritmo DFD.































b) Ejecute el programa varias veces y pruebe con diferentes valores para Sexo y Edad.















#include <cstdlib>
#include <iostream>
using namespace std;
main()
{
int Edad, Npulsac;
char Sex;
cout<<" INGRESE LA EDAD DE LA PERSONA : ";
cin>>Edad;
cout<<" INGRESE EL SEXO DE LA PERSONA (M/F) : ";
cin>>Sex;
if (Sex == 'F' || Sex == 'f' || Sex == 'M'|| Sex == 'm')
{
if (Sex == 'F' || Sex == 'f' )
{
Npulsac= (220 - Edad)/10;
cout<<"El numero de pulsaciones de la persona de sexo F es: "<<Npulsac;
}
else
{
Npulsac= (210 - Edad)/10;
cout<<"El numero de pulsaciones de la persona de sexo M es: "<<Npulsac;
}
}
else
{
cout<<" EL SEXO INGRESADO NO ES VALIDO";
}
cout<<"\n";
system("pause");
return 0;
}
Guia0301c.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 40 de 122
4. Tambin podemos dar solucin al problema 01, creando un algoritmo alternativo como es la
estructura de seleccin mltiple (Swith).


































a) Ejecute el programa y pruebe con diferentes valores

b) Observando y analizando el programa Guia0301.cpp, haga el algoritmo en DFD usando
la estructura de seleccin mltiple.










#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int Edad, Npulsac;
char Sex;
cout<<" INGRESE LA EDAD DE LA PERSONA : ";
cin>>Edad;
cout<<" INGRESE EL SEXO DE LA PERSONA (M/F) : ";
cin>>Sex;
switch (Sex)
{
case 'F':
Npulsac= (220 - Edad)/10;
cout<<"El numero de pulsaciones de la persona de sexo F es:"<<Npulsac<<"\n";
break;
case 'f':
Npulsac= (220 - Edad)/10;
cout<<"El numero de pulsaciones de la persona de sexo F es:"<<Npulsac<<"\n";
break;
case 'M':
Npulsac= (210 - Edad)/10;
cout<<"El numero de pulsaciones de la persona de sexo M es:"<<Npulsac<<"\n";
break;
case 'm':
Npulsac= (210 - Edad)/10;
cout<<"El numero de pulsaciones de la persona de sexo F es:"<<Npulsac<<"\n";
break;
default: cout<<"El sexo ingresado no es valido \n";
}
system("pause");
return 0;
}
Guia0302.cpp
default:
Visualiza el mensaje
cuando el valor de Sex no
corresponde a ningn caso

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 41 de 122

PROBLEMAS DE APLIACAIN

1. Conociendo x, encuentre el valor numrico de la siguiente expresin: Y=(x-3)/(x
2
-25)
Pruebe con los valores x=5, x=3

Solucin:
X: variable x
Y: resultado de la expresin





2. Diga si un numero n es mltiplo de m.

Solucin:
N: nmero real
M: nmero real
MOD: funcin que permite dar el residuo
de la divisin entre dos nmeros














INICIO
Leer:
X
|X|<>5
Y=(X-3)/(X^2-25)
Imprimir:
No existe solucion
real
Imprimir:
Y
FIN
V F
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
float x,y;
cout<<"Ingrese variable X:";
cin>>x;
if (abs(x)!=5)
{
y=(x-3)/(pow(x,2)-25);
cout<<"Resultado de expresion Y:"<<y;
cout<<"\n";
}
else
{cout<<"No existe solucion real";}
cout<<"\n";
system("pause");
return 0;
}
Guia03E01.cpp
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,m;
cout<<"Ingrese valor de N:";
cin>>n;
cout<<"Ingrese valor de M:";
cin>>m;
if (n%m==0)
{
cout<<"N es multiplo de M";
cout<<"\n";
}
else
{
cout<<"N no es multiplo de M";
cout<<"\n";
}
system("pause");
return 0;
}
Guia03E02.cpp
INICIO
Leer:
N, M
N MOD M =0
Imprimir:
N no es multiplo
de M
Imprimir:
N es multipo de M
FIN
V F

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 42 de 122
3. En una tienda de computadoras se hace una promocin, donde el cliente obtiene un
descuento que depende de un nmero que escoge al azar. Si el nmero escogido es menor
que 60, el descuento ser el 30%, y si el nmero en mayor o igual a 60 el descuento ser el
50%. Calcular el descuento y el monto final a pagar.

Solucin:
PC: precio de compra
N: numero escogido














4. El PRONAA ha implementado un programa social para repartir un subsidio bajo la
siguientes especificaciones:
Si la familia tiene hasta de 3 hijos, recibirn S/. 30.00 por cada hijo
Si la familia tiene ms de 3 hijos, recibirn S/. 100
Si la madre de familia es divorciada, recibirn S/. 25.00 adicionales
Calcular el moto que recibir una familia.







INICIO
Leer:
PC, N
N < 60
D=0.3*PC
PD=PC-D
FIN
V F
D=0.5*PC
PD=PC-D
Imprimir:
Descuento: D
Monto a pagar: PD
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
float pc,n,pd,d;
cout<<"Ingrese Precio de compra:";
cin>>pc;
cout<<"Ingrese un numero:";
cin>>n;
if (n<60)
{
d=0.3*pc;
pd=pc-d;
}
else
{
d=0.5*pc;
pd=pc-d;
}
cout<<"El descuento es "<<d<<endl;
cout<<"El monto a pagar es"<<pd;
cout<<"\n";
system("pause");
return 0;
}
Guia03E03.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 43 de 122

Solucin:
H: hijos
EC: estado de la madre (divorciada (s/n))






5. Calcular la utilidad que recibir un trabajador respecto a las bonificaciones anuales que se
asignan al final del ao. Esta utilidad esta en base al tiempo de servicio:
Tiempo Utilidad
Menos de 1 ao 15% del Salario
1 ao o ms y menos de 3 aos 20% del Salario
3 aos o ms y menos de 7 aos 25% del Salario
7 aos o ms y menos de 10 aos 30% del Salario
10 aos a ms aos 45% del Salario

Solucin:
TS: Tiempo de servicio
SAL: Salario del empleado
U: Utilidad

INICIO
Leer:
H, EC
H > 3
SUB=100
FIN
V F
SUB=30*H
EC=S or
EC=s
SUB=SUB+25
Imprimir:
La familia recibe un
subsidio de: SUB
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int h, sub; char ec;
cout<<"Ingrese Numero de hijos:";
cin>>h;
cout<<"Es divorciada (S/N)?:";
cin>>ec;
if (h>3)
{sub=100;}
else
{sub=30*h;}
if(ec=='S' || ec=='s')
{sub=sub+25;}
cout<<"La familia recibe un subsidio
de "<<sub;
cout<<"\n";
system("pause");
return 0;
}
Guia03E04.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 44 de 122




























INICIO
Leer:
TS, SAL
TS<1
TS<3
TS<7
TS<10
U=0.15*SAL
U=0.2*SAL
U=0.25*SAL
U=0.3*SAL U=0.45*SAL
Imprimir:
La utilidad del
trabajador es: U
FIN
V F
Guia03E05.cpp

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
float ts,sal,u;
cout<<"Ingrese Tiempo de servicio:";
cin>>ts;
cout<<"Ingrese Salario:";
cin>>sal;
if (ts<1)
{u=0.15*sal;}
else
{
if(ts<3)
{u=0.2*sal;}
else
{
if (ts<7)
{u=0.25*sal;}
else
{
if(ts<10)
{u=0.3*sal;}
else
{u=0.45*sal;}
}
}
}
cout<<"La utilidad del trabajador es "<<u;
cout<<"\n";
system("pause");
return 0;
}

Algoritmo en DFD

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 45 de 122
6. En una tienda comercial se efecta una promocin sobre el valor de la compra total, segn el
color de bolita que saque el cliente; si la bolita es de color rojo se har un descuento del 35%,
si la bolita es de color verde se har un descuento del 20%, si la bolita es de color amarillo se
har un descuento del 15%, si la bolita es de color violeta se har un descuento del 25%, si la
bolita es de color negro se har un descuento del 80%, si la bolita es de color blanco se har
un descuento del 100%. Se sabe que solo existe bolitas de los colores indicados.

7. Calcular el mayor de tres nmeros

8. En una tienda de computadoras se planea ofrecer a los clientes un descuento que depender
del nmero de computadoras que compre. Si las computadoras son menos de 5 se les dar un
descuento de 10% sobre el total de la compra, si el nmero de computadoras es mayor o
igual a 5 pero menos de 10 se le otorgar un 20% de descuento; si son 10 o ms
computadoras se les har un descuento del 40%. El precio de cada computadora es $800.

9. En un juego de preguntas a las que se responde Si o No gana quien responda
correctamente a las tres preguntas. Si responde mal a cualquiera de ellas ya no se pregunta la
siguiente y termina el juego. Las preguntas son:
a. Clon descubri America
b. El Aniversario de Moquegua es el 22 de nov.
c. Tacna es la ciudad Blanca

10. A un programa se ingresan los nombres y goles de tres equipos, determinar el equipo
campen de acuerdo al nmero mayor de goles.

11. Disear un programa que lea un nmero (entre 1-50) y visualice dicho nmero en letras.

12. Disear un programa que lea un nmero (entre 1-50) y visualice dicho nmero en romanos.























Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 46 de 122
13. Haga el DFD de los siguientes programas:

















































#include <iostream>
#include<cstdlib>
using namespace std;
int main()
{
int prom;
cout<<" INGRESE EL PROMEDIO : ";
cin>>prom;
if ((prom<0) || (prom>20) )
cout<<"Datos erroneos..";
else
{
if (prom<=5)
cout<<"Rendimiento pesimo";
else
if (prom<=10)
cout<<"Rendimiento deficiente";
else
if (prom<=15)
cout<<"Rendimiento Regular";
else
cout<<"Rendimiento bueno";
}
cout<<"\n";
system("pause");
return 0;
}
#include <iostream>
#include<cstdlib>
using namespace std;
int main()
{
int prom,k;
cout<<" INGRESE EL PROMEDIO : ";
cin>>prom;
k=0;
if (prom>=0 && prom<=5)
{cout<<"Rendimiento pesimo"; k=1;}
if (prom>=6 && prom<=10)
{cout<<"Rendimiento deficiente"; k=1;}
if (prom>=11 && prom<=15)
{cout<<"Rendimiento Regular"; k=1;}
if (prom>=16 && prom<=20)
{cout<<"Rendimiento bueno"; k=1;}
if (k==0)
cout<<"Datos Erroneos";
cout<<"\n";
system("pause");
return 0;
}
Ejercicio0314a.cpp
Ejercicio0314b.cpp
La prctica hace al maestro

Y t ests practicando?

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 47 de 122
Estructuras de control repetitiva
(while, do..while)


Objetivos:
Solucionar problemas creando algoritmos con estructuras repetitivas (while / do while)
Codificar algoritmos con sentencias repetitivas

CONSIDERACIONES PREVIAS
Adems de bifurcaciones, en el lenguaje C++ existen tambin varias sentencias que permiten
repetir una serie de veces la ejecucin de unas lneas de cdigo. Esta repeticin se realiza, bien
unnmero determinado de veces, bien hasta que se cumpla una determinada condicin de tipo
lgico o aritmtico. De modo genrico, a estas sentencias se les denomina bucles. Las tres
construcciones del lenguaje C++ para realizar bucles son el while, el for y el do...while, en esta
gua veremos la sentcia while y do..while.

Sentencia While: Esta sentencia permite ejecutar repetidamente, mientras se cumpla una
determinada condicin, una sentencia o bloque de sentencias Un bucle while tiene una condicin
de control o expresin lgica (<expres_log>), que hade ir encerrada entre parntesis, que
controla la secuencia de repeticin. La posicin de estacondicin es delante del cuerpo del bucle,
y por este motivo el bucle while es un bucle preprueba,ya que se evala la condicin antes de
que se ejecute el cuerpo del bucle. El cuerpo delbucle se ejecuta mientras se cumpla la condicin
de control. Si la condicin es falsa, entonces elcuerpo no se ejecuta. Hay que hacer notar que si
la condicin es cierta inicialmente, la sentenciawhile no terminar nunca (bucle infinito) a menos
que en el cuerpo de la misma se modifique dealguna forma la condicin de control del bucle.
Una sentencia while se ejecutar cero (condicinde control inicialmente falsa) o ms veces. La
sintaxis de la sentencia es la siguiente:

while (<expres_log>)
{
<sec_sent>
}

Como en el caso de la sentencia de seleccin simple o doble, la utilizacin de llaves ({ })antes y
despus del bloque de sentencias nicamente es obligatorio si el nmero de sentencias delbloque
es mayor o igual que dos. Sin embargo, se aconseja siempre su uso en prevencin delposibles
errors. El diagrama de flujo es el siguiente:








EXPRES_LOG
SEC_SENT
EXPRES_LOG
SEC_SENT
V
F

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 48 de 122
Por ejemplo, si queremos leer una secuencia de enteros y calcular su suma detenindonoscuando
se lea un nmero negativo, podemos hacer el siguiente programa y diagrama:

Guia04EJ01.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int sum, i;
cout<< "Introduzca un numero:";
cin>> i; //lectura adelantada
sum = 0;
while (i >= 0)
{
sum = sum + i;
cin>> i; //actualizacin
}
cout<< "El resultado es:";
cout<< sum << endl;
system(pause);
}


Sentencia Do..While: En esta sentencia, el cuerpo del bucle se ejecuta hasta que sea falsa la
expresin lgica(<expres_log>)(que ha de ir encerrada entre parntesis). Por tanto, al igual
que en el bucle whileel cuerpo del bucle se ejecuta mientras la expresin lgica sea cierta. El
bucle do-while tambinse denomina post-prueba, ya que la expresin lgica se comprueba cada
vez despus de laejecucin del cuerpo del bucle. La sintaxis es la siguiente:

do
{
<sec_sent>
}
while (<expres_log>);

Como en el caso anterior, la utilizacin de llaves ({ }) antes y despus del bloque desentencias
nicamente es obligatorio si el nmero se sentencias del bloque es mayor o igual quedos. Sin
embargo, se aconseja siempre su uso en prevencin del posibles errores. El diagrma de flujo para
la sentencia do while seria:

INICIO
Leer: I
S=0
While
I >= 0
S=S+I
Leer: I
Imprimir: S
FIN

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 49 de 122


El cuerpo de una sentencia do-while siempre se ejecuta al menos una vez. Cuando esto deba
ocurrir en un programa (el cuerpo del bucle tenga que ejecutarse una o ms veces),
esconveniente el uso de la sentencia do-while en lugar de la sentencia while. Por ejemplo, en
lugarde escribir:

Guia04EJ02.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
void main()
{
int numero;
cout<< "Introduzca un numero entre 1 y 10";
cin>> numero;
while !((numero>=1) && (numero <= 10))
{
cout<< "Introduzca un nmero entre 1 y 10");
cin>> numero;
}
}

podemos escribir:

Guia04EJ03.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
void main()
{
int numero;
do
{
cout<< "Introduzca un numero entre 1 y 10";
cin>> numero;
}
SEC_SENT
EXPRES_LOG
F
V

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 50 de 122
while ((numero < 1) || (numero > 10));
}

La primera ejecucin del bucle da a numero un valor, de manera que no
necesitamosinicializarlo antes del comienzo del bucle

PROCEDIMIENTO GUIA

PROBLEMA 01:
Visualizar los nmeros de la serie: 2, 4, 6, 8, ..., N. (Utilice while)

Datos de Entrada:
N : Nmero final de la serie

Procedimiento:
Utilizar un contadorcon valor inicial 2. ( I = 2 )
Incrementar el contadoren 2. ( I=I+2 )

1. Realice el DFD y la respectiva codificacin del problema 01.
























a) Ejecute varias veces el programa y notar que los nmeros se visualizan juntos. Ahora
modifique la lnea 12 de la siguiente manera:
cout<<I<< ;

b) Ejecute el programa y observe la diferencia.

Leer
N
w
I <= N
INICIO
FIN
I = I + 2

I = 2
Escribir
I
F




V
Datos de Salida:
I : Variable que contendr y visualizar la serie

#include <cstdlib>
#include <iostream>
using namespace std;
main()
{
int N, I;
cout<<"NUMERO FINAL DE LA SERIE: ";
cin>>N;
I = 2;
while (I<=N)
{
cout<<I;
I = I + 2;
}
system("pause");
return 0;
}
Guia0401.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 51 de 122
c) Enseguida mejoraremos la visualizacin de los resultados, reemplace la lnea 12 por:
cout<<Nmero : <<I<<\n;

d) Aada puntos de ruptura en las lneas 10 y 13, haciendo clic en el margen izquierdo de
las lneas (debe aparecer un crculo rojo y la lnea se pintara de color rojo:
i. Depure el programa con la tecla F8.
ii. Ingrese un valor para N (ejemplo: 11)
iii. Ubquese en la ventana DEV-C++ y Aada las variables de vigilancia I, N; para esto
presione F4 y aada I, vuelva a presionar F4 y aada N.
iv. Luego para hacer seguimiento al flujo del programa presione F7 seguidas veces hasta
acabar la ejecucin.
v. Tambin puede usar la ficha depuracin


PROBLEMA 02:
Visualizar los nmeros de la serie: 2, 4, 6, 8, .... N. (Utilice do-while)

Datos de Entrada:
N : Nmero final de la serie

Procedimiento:
Utilizar un contador con valor inicial 2
I = 2
Incrementar el contador en 2
I = I + 2

2. Realice el DFD y la respectiva codificacin del problema 02.






















a) Modifique el programa para que la salida sea similar al programa anterior.
Leer
N
DW
I <= N
INICIO
FIN
I = I + 2

I = 2
Escribir
I
V



F
Datos de Salida:
I : Variable que contendr y visualizar la serie

#include <cstdlib>
#include <iostream>
using namespace std;
main()
{
int N,I;
cout<<"NUMERO FINAL DE LA SERIE : ";
cin>>N;
I = 2;
do
{
cout<<I;
I =I + 2;
}
while (I<=N);
system("pause");
return 0;
}
Guia0402.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 52 de 122

b) Ejecute el programa varias veces, pruebe con los siguientes valores en los dos programas
realizados
i. N = 5
ii. N = 0






Notas:
El cuerpo de una sentencia do - while siempre se ejecuta al menos una vez.
El uso de las llaves { } al inicio y fin del bucle (pasos de repeticin) de un do -
while o while es necesario.






PROBLEMA 03:
Lee la Leyenda del ajedrez y de una solucin algortmica al problema.
Hace mucho tiempo reinaba en la India un prncipe llamado Iadava. Sus amigos estaban muy
preocupados por l, pues ltimamente estaba siempre triste y
taciturno. Hasta la aldea de LahurSessa, un joven brahmn,
lleg la noticia de la tristeza del monarca. As pues
LahurSessa invent un juego ("el ajedrez") que pudiera
distraerlo y alegrar su corazn.
Sessa explic al rey Iadava, a los visires y cortesanos las
reglas del juego. Era un gran tablero cuadrado dividido en 64
casillas. Sobre l se colocaban dos series de piezas, unas
blancas y otras negras. Las formas de las figuras se repetan
simtricamente y haba reglas curiosas para moverlas.
Iadava qued impresionado por el ingenio de Sessa y le
ofreci una bolsa llena de oro o un arca repleta de joyas o
palacios o tierras... pero Lahur "slo" le pidi granos de trigo:
Un grano por la primera casilla del tablero, 2 por la segunda, 4 por la tercera, 8 por la cuarta, y
as doblando sucesivamente hasta la ltima casilla.
Al oir la peticin de Sessa todos rieron, Iadava aunque extraado, llam a los algebristas de su
corte para que hicieran el clculo del n de granos que deba entregar al brahmn.

Analiza: El resultado es el mismo para i. y ii. en este programa y el anterior
programa?


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 53 de 122
1. Usted como alumno de programacin, realice un algoritmo (DFD) para calcular el nmero de
granos de trigo que el prncipe debe entregar al joven genio y la respectiva codificacin de la
solucin en C++.









Datos de Entrada:
N : Nmero de casillas del ajedrez (64)

Salida:
S : Total de granos de trigo

Procedimiento:
Utilizar un contador con valor inicial 0
I = 0
Acumular en S el valor 2 elevado a la potencia I
S=S+2
I

Incrementar el contador en 1
I = I + 1
























2
0
+2
1
+2
2
+2
3
+2
4
++2
63

/*LEYENDA DEL AJEDREZ*/

#include <iostream>
#include <cstdlib>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
double S;
float i;
i=0; S=0;
while (i<=63)
{
S=S+pow(2,i);//la function pow() eleva 2 a
lapotencia i, y se encuentra
en la libreria <cmath>
i++;
}
cout<<"El rey debera pagarle al joven invertor
un total de \n\n ";
cout<<setprecision(20)<<S<<"\n\ngranos de trigo
aproximadamente. \n\n";
system("pause");
}
Algoritmo en DFD
Guia0403.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 54 de 122
a) De la solucin al problema 03 con el siguiente algoritmo (codifique en C++)

0. Iniciar las variables
I=2
D=1
S=1

Mientas I sea menor o igual a 64 ( I<=64 ) hacer los pasos 1, 2, 3 y 4

1. Calcular el valor doble del casillero anterior
D=2*D

2. Acumular la suma en la variable S
S=S+D

3. Incrementar la variable I en 1
I=I+1

4. Volver al paso 1

5. Imprimir el valor de S


PROBLEMAS DE APLICACIN

1. Imprima su nombre un nmero determinado de veces, es decir N veces.
Ejemplo:
Datos de entrada
N = 5


Solucin:
DFD

INICIO
Leer:
N
FIN
i<=N
i=1
i=i+1
Imprimir:
JUAN PEREZ
Salida
Juan Perez
Juan Perez
Juan Perez
Juan Perez
Juan Perez

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i;
cout<<"Ingrese Numero de veces:";
cin>>n;
i=1;
while(i<=n)
{
cout<<"JUAN PEREZ \n";
i+=1;
}
cout<<"\n";
system("pause");
return 0;
}
Guia04E01.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 55 de 122

2. Para la siguiente serie numrica: 0,4,8,12,16,,etc. Imprima todos los nmeros que sean
menores o iguales que un nmero dado.

Ejemplo:
Datos de entrada
N=18





Algoritmo en DFD




















INICIO
Leer:
N
FIN
i<=N
i=0
i=i+4
Imprimir:
i
Salida
0
4
8
12
16

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i;
cout<<"Ingrese Numero:";
cin>>n;
i=0;
while(i<=n)
{
cout<<i<<"\n";
i+=4;
}
cout<<"\n";
system("pause");
return 0;
}
Guia04E02.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 56 de 122
3. Dada la serie: 1,3,6,8,11,13,16,,etc. Muestre todos los nmeros que sean menores o iguales
que un nmero dado.

Solucin:






















INICIO
Leer:
N
FIN
i<=N
i=1
k=0
i=i+2
Imprimir:
i
k=0
k=1
i=i+3
Imprimir:
i
k=0
V
F
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i,k;
cout<<"Ingrese Numero:";
cin>>n;
i=1; k=0;
while(i<=n)
{
if(k==0)
{
cout<<i<<"\n";
i=i+2;
k=1;
}
else
{
cout<<i<<"\n";
i=i+3;
k=0;
}
}
cout<<"\n";
system("pause");
return 0;
}
Guia04E03.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 57 de 122
4. Calcular el promedio final de un alumno que tiene N calificaciones en el curso de Lenguajes
de programacin.

Ejemplo:
Datos de entrada
N=5
Calificaciones: 12 11 20 15 14






















INICIO
Leer:
N
FIN
i<=N
i=1
P=0
P=P+X/N
Leer:
X
Imprimir:
Promedio es, P
i=i+1
Salida
Promedio = 14.4

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i;
float x,p;
cout<<"Ingrese Numero de notas:";
cin>>n;
i=1;
p=0;
while(i<=n)
{
cout<<"Nota "<<i<<" :";
cin>>x;
p=p+x/n;
i=i+1;
}
cout<<"El promedio de notas es "<<p;
cout<<"\n";
system("pause");
return 0;
}
Guia04E04.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 58 de 122
5. Leer N nmeros e imprimir cuantos son positivos, cuantos negativos y cuantos neutros.

Ejemplo:
Datos de entrada
N=6
Numeros: 12 2 0 1 -4 5













INICIO
Leer:
N
FIN
i<=N
i=1
e=0; p=0; t=0
Leer:
X
Imprimir:
Neutros, e
Positivos, p
Negativos, t
i=i+1
X=0
e=e+1
p=p+1
X>0
t=t+1
F
V
Salida
Positivos=4
Negativos=1
Neutros=1

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i,e,p,t,x;
cout<<"Cuantos numeros ingresara?:";
cin>>n;
i=1;
e=0; p=0; t=0;
while(i<=n)
{
cout<<"Numero "<<i<<" :";
cin>>x;
if(x==0)
{e=e+1;}
else
{
if(x>0)
{p=p+1;}
else
{t=t+1;}
}
i=i+1;
}
cout<<"Numeros neutros "<<e<<endl;
cout<<"Numeros positivos "<<p<<endl;
cout<<"Numeros negativos "<<t<<endl;
cout<<"\n";
system("pause");
return 0;
}
Guia04E05.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 59 de 122
6. Realice un programa que permita leer nmeros por teclado(la lectura se detendr cuando se
ingrese un numero negativo) e imprima el mayor, menor y el promedio de los nmeros
ledos.
Ejemplo:
Datos de entrada
Numeros:
5
3
8
2
0
2
-1

7. Suponga que se tiene un conjunto de calificaciones de un grupo de 20 alumnos. Realizar un
algoritmo para calcular la calificacin media y la calificacin ms baja y la calificacin mas
alta de todo el grupo.

Ejemplo:
Datos de entrada (ingresar las veinte calificaciones)
Calificaciones: 11 10 13 05 07 12 16 15 12 15 20 19 09 14 15 16 10 12 19 16
Salida
Calificacion_media=13.33
Calificacion_alta=20
Calificacion_baja=5

8. Calcular: N!, donde N!=1x2x3x4xxN

Ejemplo:
Datos de entrada
N=5
Salida
Factorial=120

9. Calcular: S = 1! + 3!+5! + 7!+ ... + N! N= nmero impar

Ejemplo:
Datos de entrada
N=7
Salida
S=5164

10. Calcular: S = 1/2 + 2
2
/4! + 3
3
/6!+ ... + N
N
/(2N)!

Ejemplo:
Datos de entrada
N=5
Salida
S=0.71

Salida
Mayor = 8
Menor = 0
Promedio = 3.33


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 60 de 122
11. La secuencia de fibonacci, es muy conocida en los crculos matemticos y tiene la
particularidad que cada nmero es igual a la suma de los 2 anteriores trminos. La serie de
Fibonacci comienza con los nmeros 0 y 1 produciendo la siguiente secuencia:
0,1,1,2,3,5,8,13,.etc. Muestre todos los nmeros de Fibonacci que sean menores que un
nmero dado.

Ejemplo:
Datos de entrada
N=6
Salida
0
1
1
2
3
5
8

12. En una empresa se requiere calcular el salario semanal de los N obreros que laboran en ella.
El salario se obtiene de la siguiente forma:
Si el obrero trabaja 40 horas o menos se le paga $20 por hora
Si trabaja ms de 40 horas se le paga $20 por cada una de las primeras 40 horas y $25 por
cada hora extra

Ejemplo:
Datos de entrada
N = 4
Horas_obrero1 = 30
Horas_obrero2 = 50
Horas_obrero3 = 60
Horas_obrero4 = 20
Salida
Sueldo_obrero1 = 600
Sueldo_obrero2 = 1050
Sueldo_obrero3 = 1300
Sueldo_obrero4 = 400

13. Una persona desea invertir su dinero en un banco, el cual otorga un 2% de inters, Cul ser
la cantidad de dinero que esta persona tendr al cabo de un ao si la ganancia de cada mes es
reinvertida?
Ejemplo:
Datos de entrada
Dinero = 100
Salida
Total_dinero = 124.34

14. Lea un nmero y forme otro nmero con las cifras en orden inverso. As si el nmero es
12345 el nuevo nmero ser 54321


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 61 de 122
15. Un nmero se considera perfecto cuando la suma de sus divisores es igual al nmero. Por
ejemplo 6 tiene como divisores a 1,2 y 3 y como 1+2+3=6, el numero 6 ser perfecto; 28
tiene como divisores a 1,2,4,7,14, luego 28 es perfecto pues 1+2+4+7+14=28; lo mismo
ocurre con 496 y 8128. Escriba un programa que lea un nmero y diga si es perfecto.

Ayuda:

Ejercicio 09.
Para este ejercicio tendremos que anidar bucles. Analiza el algoritmo en DFD y veras que da la
solucin a este ejercicio

Observa que existen dos bucles While, el bucle interior calcula el
factorial de i con ayuda de la variable k y lo guarda en F. El bucle
exterior acumula en S todos los factoriales calculados en F. De
manera similar dars solucin al ejercicio 10.


Ejercicio 11.
Definicion de variables:
m: mximo numero Fibonacci a mostrar
a: ensimo numero Fibonacci
b: ensimo+1 numero Fibonacci
Iniciamos la serie con a=0 y b=1, imprimimos el valor de a y
Mientrasb sea menor que m: imprimimos b, calculamos c=a+b,
asignamos a la variable a el valor de b (a=b), asignamos a la
variable b el valor de c (b=c).

Ejercicio 14.
Definicion de variables:
n: numero cuyos digitos se invertirn
inv: numero invertido
Para obtener un nuevo numeroinv, formado por los digitos de n,
pero en orden invertido, debemos obtener cada uno de los digitos
de n e ir desplazndolos un valor posicional (unidad, decena,
centena, etc.). Cada uno de los digitos, pueden ser obtenidos al
buscar el resto de la divisin entera entre 10 (n MOD 10) y se
debe ir incrementando el valor posicional mediante la
multiplicacin del resto por 10, y su acumulacin en la variable
inv. El ciclo se ejecuta mientras el numero aun tenga digitos que
obtener (mientas n sea mayor que 0), luego del cual imprimimos
inv.










Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 62 de 122
Estructuras de control Repetitiva (for)

Objetivos
Solucionar problemas creando algoritmos con estructuras repetitivas( for )
Codificar algoritmos con sentencias repetitivas
Codificar algoritmos con sentencias repetitivas anidadas

CONSIDERACIONES PREVIAS
C soporta tres tipos de estructuras de iteracin: los bucles while, do-while y for, ahora veremos
la sentencia for.

Sentencia for: cuando se sabe el numero de iteraciones que tendrn que ejecutarse cierta cantidad
de acciones, recomendable usar la estructura for, esta estructura no solo ejecuta un numero de
acciones, adems cuenta internamente el numero de iteraciones, esto elimina la necesidad de un
contador lo que no sucede con la estructura mientas. La sintaxis tpica de la sentencia for seria:

for (<inicializacion> ; <expres_log> ; <incremento>)
{
<sec_sent>
}

donde (<inicializacion>) es la parte en la que se inicializa la variable de control delbucle,
(<expres_log>) es una expresin lgica que hace que el bucle ejecute el bloque desentencias
mientras que dicha expresin sea cierta, e (<incremento>) es una expresin quedecrementa o
incrementa la variable de control del bucle. De esta manera para cada valor que tomela variable
de control de bucle, el cuerpo del bucle se ejecuta una vez. Cuando la variable decontrol del
bucle toma su primer valor, (<inicializacion>), sta se va modificandoautomticamente en cada
iteracin del bucle de acuerdo al valor de incremento (<incremento>)mientras que la expresin
lgica (<expres_log>) sea falsa. En el caso de que cuando la variablede control del bucle tome su
primer valor la expresin lgica sea falsa, el cuerpo del bucle no seejecutar ninguna vez. El
DFD para esta sentencia seria:


i: representa la variable de control del ciclo
Vi: variable que representa el inicio del ciclo
Vf: variable que representa el final del ciclo
For i = Vi Vf (Incr)
SEC_SENT
V
F
For i = Vi Vf (Incr)
SEC_SENT
V
F


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 63 de 122
Incr: representa el incremento/decremento de la variable de control, cuando se omite esta
expresin se supone que el incremento es de una unidad.
SEC_SENT: bloque de sentencias que se ejecutan en cada iteracin del bucle


Existen dos formas de implementar la sentencia for: (i) formato ascendente, en el que la variable
de control se incrementa, y (ii) formato descendente, en el que la variable de control se
decrementa. A continuacin mostramos dos ejemplos de formato ascendente y descendente:

Formato ascendente

Guia05EJ 01.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
// formato ascendente int n;
int n;
for (n = 1; n <= 10; n++) //incrementa de 1 en 1
{
cout<< n << endl;
}
}















Formato descendente

Guia05EJ 02.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
// formato descendente int n;
inti;
for (i = 9; i>= 0; i-=3) //decrementa de 3 en 3
{
cout<< i << endl;
}
Salida
1
2
3
4
5
6
7
8
9
10

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 64 de 122
}






La utilizacin de llaves ({ }) antes y despus del bloque de sentencias nicamente es obligatoria
si el nmero de sentencias del bloque es mayor o igual que dos. Sin embargo, seaconseja siempre
su uso en prevencin de posibles errores.

En el ejemplo de formato ascendente la variable de control es n y su valor inicial es 1, el valor
lmite es 10 y la expresin de incremento es n++. Esto significa que el bucle ejecuta la sentencia
del cuerpo del bucle una vez por cada valor de n en orden ascendente de 1 a 10, por tanto el
bucle se ejecutar 10 veces. En la primera iteracin n tomar el valor 1, en la segunda el valor 2,
y as sucesivamente hasta el valor 10. El ejemplo de formato descendente inicializa la variable de
control i a 9. El bucle se ejecuta mientras i no sea negativo, y como la variable de control del
bucle se decrementa en 3, el bucle se ejecutar 4 veces con el valor de la variable de control i, 9,
6, 3 y 0.

C++ permite declarar la variable de control de bucle al mismo tiempo que se inicializa, sin
embargo nosotros siempre la declararemos en la zona de declaraciones al principio del programa.
La variable de control se puede incrementar o decrementar en valores de tipo int, pero tambin
es posible en valores de tipo double , y por tanto estaramos incrementando en una cantidad
decimal. La expresin de incremento no necesita ser una suma o una resta. Tampoco se requiere
que la inicializacin de una variable de control sea igual a una constante. Se puede inicializar y
modificar una variable de control de bucle en cualquier cantidad que se desee. Lgicamente,
cuando la variable de control no sea de tipo int se tendrn menos garantas de precisin. Por
ejemplo:

Guia05EJ 03.cpp
#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;
intmain()
{
doublex,y;
x=y=2;
for(x =pow(y,3.0); x > 2.0; x = sqrt(x))
{
cout<< "x es ahora igual a "<< x << endl;
}
}
Salida

9
6
3
0

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 65 de 122
Es necesario incluir la librera <cmath>para poder hacer uso de funciones matemticas. En el ejemplo
anterior: sqrt - raz cuadrada y pow - potencia.








PROCEDIMIENTO GUIA


PROBLEMA 01
Visualizar los nmeros de la serie: 2, 4, 6, 8, ....N.(Utilicefor)

Datos de Entrada:
N : Nmero final de la serie

Procedimiento:
Utilizar un contador con valor inicial 2
I = 2
Incrementar el contador en 2

1. Realice el DFD utilizando la estructura for y la respectiva codificacin del problema 01






















NLeer
N
I
N ; 2
Datos de Salida:
I : Variable que contendr y visualizar la serie

#include<iostream>
#include <cstdlib>
using namespace std;
main()
{
int N,I;
cout<<"NUMERO FINAL DE LA SERIE : ";
cin>>N;
for (I=2; I<=N; I=I+2)
{
cout<<I;
cout<<endl;
}
system("pause");
return 0;
}
Guia0501.cpp
Salida

x es ahora igual a 8
x es ahora igual a 2,82843

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 66 de 122
a) Ejecute el programa con los siguiente valores:
i. N = 5
ii. N = 0

b) Realice el mismo algoritmo utilizando la estructura while, codifique en C++ y guarde el
archivo con el nombre de Guia0502.cpp, compruebe los resultados.

c) Mejore el programa Guia0501.cpp de tal manera que si el usuario ingresa un nmero
menor que 2 (N<2) el programa emita un mensaje de error, en caso contrario visualice la
serie.










PROBLEMA 02
Visualizar los nmeros pares que existen en la serie: 1, 2, 3, 4, 5, 6, 7, 8, .... N.

Datos de Entrada:
N : Nmero final de la serie

Procedimiento:
Utilizar un contador con valor inicial 2
I = 2
Verificar si el resto de I es igual a 0
Si I % 2 = 0
Entonces Visualizar I
Incrementar el contador en 2
I=I+2
















Datos de Salida:
Visualizar los nmeros pares


Nota: El uso de las llaves( { } ) al inicio y fin del bucle (pasos de repeticin) de un for
es necesario

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 67 de 122
2. Realice el DFD utilizando la estructura for y la respectiva codificacin del problema 02

























l) Ejecute el programa y pruebe con los valores para N=100 y N=50

m) Ahora elimine las llaves de la lnea 13 y 15. Luego ejecute el programa con los valores
anteriores.(observar que ejecuta de igual manera) Por qu?

n) Ahora elimine las llaves que estn despus del fory antes de system(pause); Luego
ejecute el programa con los valores anteriores.(observar que ejecuta de igual manera)
Por qu?

o) Mejore el programa Guia0503.cpp de tal manera que si el usuario ingresa un nmero
menor que 1 (N<1) el programa emita un mensaje de error, en caso contrario visualice los
resultados solicitados.












Leer
N
INICIO
FIN
I = 1 N ; 1
If
I % 2 =0
Escribir
I
F V
#include<cstdlib>
#include <iostream>
using namespace std;
main()
{
int N,I;
cout<<"NUMERO FINAL DE LA SERIE : ";
cin>>N;
cout<<"LOS NUMEROS PARES SON : \n";
for (I=2; I<=N; I=I+2)
{
if(I % 2 == 0)
{
cout<<I<<endl;
}
}
system("pause");
return 0;
}
Guia0503.cpp
Nota: La utilizacin de las llaves({ } )antes y despus del bloque de sentencias
nicamente es obligatoria si el nmero de sentencias del bloque es mayor o
igual que dos. Sin embargo, se aconseja siempre su uso en prevencin de
posibles errores.



Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 68 de 122
PROBLEMA 03
Dado un nmero de filas (N), Imprima en pantalla la siguiente secuencia de nmeros
1
1 2
1 2 3
1 2 3 4


Datos de Entrada:
N : Nmero final de la serie

Procedimiento:
Observe que para cada fila se debe imprimir el mismo nmero de dgitos consecutivos, es decir
si estamos en la fila tres debemos imprimir tres dgitos consecutivos ( 1 2 3 ).

Para cada valor de I = 1 hasta que I sea igual a N hacer
Para cada valor de k=1 hasta que k sea igual a I hacer
Visualizar el valor de k
Incrementar k en 1
Incrementar I en 1

3. Realice el DFD utilizando la estructura for y la respectiva codificacin del problema 03.


INICIO
N
i=1 -> N
k=1 -> i
k
FIN





a) Ejecute el programa y pruebe con los valores para N=10 y N=20

b) Mejore el programa Guia0504.cpp de tal manera que si el usuario ingresa un nmero
menor que 1 (N<1) el programa emita un mensaje de error, en caso contrario visualice los
resultados solicitados
#include <cstdlib>
#include <iostream>
using namespace std;
main()
{
inti,k,N;
cout<<" INGRESE EL NUMERO DE FILAS : ";
cin>>N;
for (i=1; i<=N; i++)
{
for (k=1;k<=i;k++)
{
cout<<k<<" ";
}
cout<<"\n";//cambio de fila
}
system("pause");
return 0;
}
Datos de Salida:
Visualizar la secuencia de nmeros
tal como se muestra en el problema
Este algoritmo contiene anidamiento
de bucles (sentencias for), el bucle
interior se repetir hasta que el valor
de k sea igual al valor de I.
Guia0504.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 69 de 122


PROBLEMAS DE APLICACIN

1. Crear una algoritmo que pida un numero de filas y respecto a estas, dibuje lo siguiente:
a) b) c) d)







Ejemplo para el grafico b):
Datos de entrada Salida
N=5



Solucin:

a)
















INICIO
Leer:
N
For i=1 -> N
Imprimir:
*
INICIO
*
***
*****
*******

*
***
*****
*******
...
*
**
***
****

*
*
*
*

*
**
***
****
*****
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i;
cout<<"Numero de filas para la figura:";
cin>>n;
for (i=1;i<=n;i++)
{
cout<<"*\n";
}
cout<<"\n";
system("pause");
return 0;
}
Guia05E01A.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 70 de 122


b)






c)










INICIO
Leer:
N
For i=1 N
Imprimir:
*
INICIO
For k=1 i
INICIO
Leer:
N
For i=1 N
Imprimir:
*
INICIO
For k=1 2*i -1
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i,k;
cout<<"Numero de filas para la figura:";
cin>>n;
for (i=1;i<=n;i++)
{
for(k=1;k<=i;k++)
cout<<"*";
cout<<endl;
}
cout<<"\n";
system("pause");
return 0;
}
Guia05E01B.cpp
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i,k;
cout<<"Numero de filas para la figura:";
cin>>n;
for (i=1;i<=n;i++)
{
for(k=1;k<=2*i-1;k++)
cout<<"*";
cout<<endl;
}
cout<<"\n";
system("pause");
return 0;
}
Guia05E01C.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 71 de 122


d)




























INICIO
Leer:
N
For i=1 N
Imprimir:

INICIO
For k=1 N + i - 1
k<=N-i
Imprimir:
*
F V
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i,k;
cout<<"Numero Filas para la figura:";
cin>>n;
for (i=1;i<=n;i++)
{
for(k=1;k<=n+i-1;k++)
{
if(k<=n-i)
cout<<" ";
else
cout<<"*";
}
cout<<endl;
}
cout<<"\n";
system("pause");
return 0;
}
Guia05E01D.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 72 de 122


2. Leer 6 nmeros e imprimir cuantos son positivos, cuantos negativos y cuantos neutros.

Ejemplo:
Datos de entrada
Numeros: 12 2 0 1 -4 5




Solucin:












INICIO
Leer:
N
FIN
e=0; p=0; t=0
Leer:
X
Imprimir:
Neutros, e
Positivos, p
Negativos, t
X=0
e=e+1
p=p+1
X>0
t=t+1
F
V
For i=1 N
Salida
Positivos=4
Negativos=1
Neutros=1

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i,e,p,t,x;
cout<<"Cuantos numeros ingresara?:";
cin>>n;
e=0; p=0; t=0;
for(i=1;i<=n;i++)
{
cout<<"Numero "<<i<<" :";
cin>>x;
if(x==0)
{e=e+1;}
else
{
if(x>0)
{p=p+1;}
else
{t=t+1;}
}
}
cout<<"Numeros positivos "<<p<<endl;
cout<<"Numeros neutros "<<e<<endl;
cout<<"Numeros negativos "<<t<<endl;
cout<<"\n";
system("pause");
return 0;
}
Guia05E02.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 73 de 122


3. Lea N nmeros e indique el mayor

Ejemplo:
Datos de entrada
N=7
Numeros: 7 4 2 4 9 10 5


















INICIO
Leer:
N, X
FIN
MAY=X
Leer:
X
Imprimir:
El mayor numero
es, MAY
MAY<X
MAY=X MAY=MAY
F
V
For i = 2 N
Salida
Mayor numero = 10
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i,x,may;
cout<<"Cuantos numeros ingresara?:";
cin>>n;
cout<<"Numero 1 :";cin>>x;
may=x;
for(i=2;i<=n;i++)
{
cout<<"Numero "<<i<<" :";
cin>>x;
if(may<x)
{may=x;}
else
{may=may;}
}
cout<<"El numero mayor es "<<may<<endl;
cout<<"\n";
system("pause");
return 0;
}
Guia05E03.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 74 de 122
4. Suponga que se tiene un conjunto de calificaciones de un grupo de 20 alumnos. Realizar un
algoritmo para calcular la calificacin media y la calificacin ms baja y la calificacin ms
alta de todo el grupo.

Ejemplo:
Datos de entrada (ingresar las veinte calificaciones)
Calificaciones: 11 10 13 05 07 12 16 15 12 15 20 19 09 14 15 16 10 12 19 16
Salida
Calificacion_media = 13.33
Calificacion_alta = 20
Calificacion_baja = 5

Solucin:






INICIO
Leer:
N, X
FIN
MAX=X
MIN=X
PROM=X / N
Leer:
X
Imprimir:
Calificacion maxima, MAX
Calificacion minima, MIN
Calificacion promedio, PROM
MAX<X
MAX=X MAX=MAX
F
V
For i = 2 N
MIN>X
MIN=X MIN=MIN
V
PROM=PROM+X / N
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i,x,max,min;
float prom;
cout<<"Cuantos notas ingresara?:";
cin>>n;
cout<<"Nota 1 :";cin>>x;
max=x; min=x; prom=x/n;
for(i=2;i<=n;i++)
{
cout<<"Nota "<<i<<" :";
cin>>x;
if(max<x)
{max=x;}
else
{max=max;}
if(min>x)
{min=x;}
else
{min=min;}
prom=prom+x/n;
}
cout<<"Calificacion maxima "<<max<<endl;
cout<<"Calificacion minima "<<min<<endl;
cout<<"Calificacion promedio "<<prom<<endl;
cout<<"\n";
system("pause");
return 0;
}
Guia05E04.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 75 de 122
5. Calcular: S = 1! + 3!+5! + 7!+ ... + N! N= nmero impar

Ejemplo:
Datos de entrada
N=7
Salida
S=5167

Solucin:



6. Calcular: S = 1/2! + 2
2
/4! + 3
3
/6!+ ... + N
N
/(2N)!

Ejemplo:
Datos de entrada
N=5
Salida
S=0.71
7. Calcule la suma de la siguiente serie:
Ejemplo:
Datos de entrada
X = 6
N = 5
Datos de salida
S = 178.8
INICIO
Leer:
N
For i=1 N (2)
Imprimir:
La sumatoria es, S
FIN
For k=1 i
S=0
F=1
F=F*k
S=S+F
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i,k;
float s,f;
cout<<"Ingrese numero impar:";
cin>>n;
s=0;
for(i=1;i<=n;i=i+2)
{
f=1;
for(k=1;k<=i;k++)
{f=f*k;}
s=s+f;
}
cout<<"La sumatoria es "<<s<<endl;
cout<<"\n";
system("pause");
return 0;
}
Guia05E05.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 76 de 122

8. De cuantas maneras podemos tomarrelementos de un total de n elementos? (n r).


9. Calcular X:





10. Muestre la tabla de multiplicar del 1 al 10
















11. Encuentre todos los nmeros primos de 3 dgitos

12. Visualizar en un solo programa cualquiera de los casos segn eleccin:

Caso A) Caso B) Caso C)

1 1 1 2 3 .. N
1 2 1 2 1 1 2 3
1 2 3 1 2 3 2 1 ...
.. .. ...
.. .. 1 2
1 2 ... N 1 2 .. N .. 2 1 1

Ejemplo:
Datos de entrada
N=5
Opcion=B
Salida




1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5
1 x 6 = 6
1 x 7 = 7
1 x 8 = 8
1 x 9 = 9
1 x 10 = 10
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20

TABLA DE MULTIPLICAR
1
121
12321
1234321
123454321

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 77 de 122

Procedimientos y Funciones

Objetivos
Solucionar problemas usando funciones y procedimientos
Codificar algoritmos que usan funciones y procedimientos

CONSIDERACIONES PREVIAS

Una funcin es una parte de cdigo independiente del programa principal y de otras funciones,
que puede ser llamada envindole unos datos o no, para que realice una determinada tarea y/o
proporcione unos resultados. Las funciones son una parte muy importante del lenguaje C++.

Utilidad de las funciones: Parte esencial del correcto diseo de un programa de ordenador es su
modularidad, esto es su divisin en partes ms pequeas de finalidad muy concreta, que en C++
reciben el nombre de funciones. Las funciones facilitan el desarrollo y mantenimiento de los
programas, evitan errores, y ahorran memoria y trabajo innecesario. Una misma funcin puede
ser utilizada por diferentes programas, y por tanto no es necesario reescribirla. Adems, una
funcin es una parte de cdigo independiente del programa principal y de otras funciones,
manteniendo una gran independencia entre las variables respectivas, y evitando errores y otros
efectos colaterales de las modificaciones que se introduzcan.

Mediante el uso de funciones se consigue un cdigo limpio, claro y elegante. La adecuada
divisin de un programa en funciones constituye un aspecto fundamental en el desarrollo de
programas de cualquier tipo.

Definicin de funcin:La definicin de una funcin consiste en la definicin del cdigo
necesario para que sta realice las tareas para las que ha sido prevista. La definicin de una
funcin se debe realizar en alguno de los ficheros que forman parte del programa. La forma
general de la definicin de una funcin es la siguiente:

tipo_valor_de_retorno nombre_funcion(lista de parmetros)
{
declaracin de variables y/o de otras funciones
codigo ejecutable
return (expresin); /* optativo */
}

La primera lnea recibe el nombre de encabezamiento (header) y el resto de la definicin
encerrado entre llaves es el cuerpo de la funcin. Cada funcin puede disponer de sus propias
variables, declaradas al comienzo de su cdigo. Estas variables, por defecto, son de tipo auto, es
decir, slo son visibles dentro del bloque en el que han sido definidas y permanecen ocultas para
el resto del programa. Tambin pueden hacerse visibles a la funcin variables globales definidas
en otro fichero (o en el mismo fichero, si la definicin est por debajo de donde se
utilizan), declarndolas con la palabra clave extern.

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 78 de 122

El cdigo ejecutable es el conjunto de instrucciones que deben ejecutarse cada vez que la funcin
es llamada. La lista de parmetros, tambin llamados argumentos formales, es una lista de
declaraciones de variables, precedidas por su tipo correspondiente y separadas por comas (,). Los
argumentos formales son la forma ms natural y directa para que la funcin reciba valores desde
el programa que la llama, correspondindose en nmero y tipo con otra lista de argumentos los
argumentos actuales- en el programa que realiza la llamada a la funcin. Los argumentos
formales son declarados en el encabezamiento de la funcin, pero no pueden ser inicializados en
l.

Cuando una funcin es ejecutada, puede devolver al programa que la ha llamado un valor (el
valor de retorno), cuyo tipo debe ser especificado en el encabezamiento de la funcin (si no se
especifica, se supone por defecto el tipo int). Si no se desea que la funcin devuelva ningn
valor, el tipo del valor de retorno deber ser void.

La sentencia return permite devolver el control al programa que llama. Puede haber varias
sentencias return en una misma funcin. Si no hay ningn return, el control se devuelve cuando
se llega al final del cuerpo de la funcin. Le palabra clave return puede ir seguida de una
expresin, en cuyo caso sta es evaluada y el valor resultante devuelto al programa que llama
como valor de retorno (si hace falta, con una conversin previa al tipo declarado en el
encabezamiento). Los parntesis que engloban a la expresin que sigue a return son optativos. El
valor de retorno es un valor nico: no puede ser un vector o una matriz, aunque s un puntero a
un vector o a una matriz. Sin embargo, el valor de retorno s puede ser una estructura, que a su
vez puede contener vectores y matrices como elementos miembros.

Como ejemplo supngase que se va a calcular a menudo el valor absoluto de variables de tipo
double. Una solucin es definir una funcin que reciba como argumento el valor de la variable y
devuelva ese valor absoluto como valor de retorno. La definicin de esta funcin podra ser
como sigue:

double valor_abs(double x)
{
if (x < 0.0)
return -x;
else
return x;
}

Declaracin de una funcin:
DelamismamaneraenC++esnecesariodeclarartodaslasvariables,tambintoda funcin
debeserdeclaradaantesdeserutilizadaenlafuncinoprogramaquerealizalallamada.Detodas formas,
ahora se ver que aqu hayuna mayor flexibilidad que en el caso de las variables.

La declaracin de una funcin se puede hacer de dos maneras:


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 79 de 122




a) Mediante unadefinicinpreviadelafuncin.Estaprcticaessegurasiladefinicinprecede a la
llamada,perotieneelinconveniente dequesiladefinicinsecambiadelugarel programa no
funcionar.

b) Mediante unadeclaracinexplcita,previaalallamada. Esta es la prctica ms segura y la que
hay que tratar de seguir siempre. La declaracin de la funcin se hace mediante el
prototipode la funcin, bien fuera de cualquier bloque, bien en la parte de declaraciones de
un bloque.

Laformageneraldelprototipode una funcin es la siguiente:

tipo_valor_de_retorno nombre_funcion(lista_de_tipos_de_parmetros);

Estaformageneralcoincidesustancialmenteconlaprimeralneadeladefinicin -el encabezamiento-, con
dos pequeas diferencias: en vez de la lista de argumentos formales o
parmetros,enelprototipobastaincluirlostiposdedichosargumentos.Sepuedenincluirtambin
identificadores a continuacin de los tipos, pero son ignorados por el compilador. Adems, una
segunda diferencia es que el prototipoterminaconuncarcter(;).Cuandonohayargumentos
formales,seponeentrelosparntesislapalabra void,yseponetambinvoid precediendoal nombre de la
funcin cuando no hay valor de retorno.

Losprototipospermiten que el compilador realice correctamente la conversin del tipo del
valorderetorno,ydelos argumentosactualesalostiposdelos argumentosformales.La
declaracindelasfuncionesmediantelosprototipos suele hacerse al comienzo del fichero, despus
delos#definee#include.Enmuchoscasosparticularmenteenprogramasgrandes,conmuchos
ficherosymuchasfunciones,sepuedecrearunfichero(conlaextensin.h) con todos los prototipos de las
funciones utilizadas en un programa, e incluirlo con un #include
nombre_del_fichero.hen todos los ficheros en que se utilicen dichas funciones.

Invocacin a una funcin:Lallamadaaunafuncinsehace incluyendo
sunombre,seguidodeunalistadeargumentos separados por comas y encerrados entre parntesis, en
una expresin o sentencia del programa
principalodeotrafuncin.Alosargumentosincluidosenlallamadaselesllama argumentos
actuales,ypuedensernoslovariablesy/oconstantes,sinotambin expresiones. Cuando el
programaquellamaencuentraelnombredelafuncin,evalalosargumentos actuales contenidos
enlallamada,losconviertesiesnecesarioaltipodelosargumentosformales,ypasacopiasde dichos valoresa
la funcin junto con el control de la ejecucin.

Engeneralelnmerodeargumentos actuales enlallamadaaunafuncindebecoincidircon
elnmerodeargumentosformalesen la definicin y en la declaracin, aunque hay dos excepciones:

a) Existe la posibilidad de definir funciones con un nmero variable o indeterminado de
argumentos.Paradefinirestasfuncionesseutilizanlospuntossuspensivos(...), que
representanlosargumentosdesconocidosquepuedehaber.Un ejemplo de funcin de este tipo es
el siguiente:

voidmi_funcion(inti,doublea,...);

dondelosargumentos iy atendranqueestarsiemprepresentes.Paraconocerconms

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 80 de 122




detallecmosecreanestasfuncionesserecomiendaacudiraalgunodelostextos de C++
recomendados en la Bibliografa.

b) EnC++sepuedendefinir valorespordefecto paratodosoalgunosdelosargumentos formales.
Despus, en la llamada, en el caso de que algn argumento est ausente de la lista de
argumentosactuales,setomael valor asignado por defecto a ese argumento. Por ejemplo, la
funcinmodulo()poda haberse declarado del siguiente modo:

doublemodulo(doublex[],intn=3);

Lafuncinmodulo()puede ser llamada en C++ de las formas siguientes:

v=modulo(x,n);

v=modulo(x);

En el segundo caso se utiliza el valor por defecton=3 incluido en la declaracin

EnC++seexigequetodoslosargumentosconvalorespordefectoestnal final de la lista de
argumentos.Enlallamadaalafuncinpuedenomitirsealgunooalgunosdelosltimos
argumentosdelalista.Siseomiteunargumentodebendeomitirsetodosaquellosqueseencuentren detrssuyo.

Cuando se llama a una funcin, despus de realizar la conversin de los argumentos actuales,
seejecutaelcdigocorrespondientealafuncinhastaquesellegaaunasentenciareturnoalfinal
delcuerpodelafuncin,yentoncessedevuelveelcontrolalprogramaquerealizlallamada,junto con el valor
de retorno siesqueexiste(convertidopreviamentealtipo especificadoenel prototipo, si es necesario).
Recurdese que el valor de retorno puede ser un valor numrico, una direccin (un puntero),o una
estructura, pero no una matrizo un vector.

Lallamadaaunafuncinpuedehacersedemuchasformas,dependiendodequ clase de
tarearealicelafuncin.Sisupapelfundamentalescalcularunvalorderetornoapartirdeunoo
msargumentos,lomsnormalesqueseallamadaincluyendosunombreseguidodelosargumentos
actualesenunaexpresinaritmticaodeotrotipo. En este caso, la llamada a la funcin hace el papel de
un operando ms de la expresin.

Enotroscasos,noexistirvalorderetornoylallamadaalafuncinseharincluyendoen el programa una
sentencia que contenga solamente el nombre de la funcin, siempre seguido por los argumentos
actuales entre parntesisy terminando con un carcter (;).

La declaracin y la llamada de la funcinvalor_abs()antesdefinida,sepodrarealizardela forma
siguiente:

doublevalor_abs(double); /*declaracin*/

voidmain(void)
{
doublez,y;

y=-30.8;
z=valor_abs(y)+y*y; /*llamadaenunaexpresion*/
}

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 81 de 122

Lafuncinvalor_abs()recibeunvalordetipodouble.Elvalorderetornodedichafuncin (el valor absoluto
dey), es introducido en la expresin aritmtica que calculaz.

Ladeclaracin (doublevalor_abs(double))noesestrictamentenecesariacuandola definicin de la
funcin est en el mismo archivo quemain()y est definida antes que la llamada


PROCEDIMIENTO GUIA

PROBLEMA 01
Calcular la suma de tres nmeros, cree un procedimiento para la lectura o ingreso de los nmeros
y otro procedimiento para que dibuje la lnea de separacin, de tal manera que la salida sea de la
siguiente manera:









1. En una ventana nueva escriba la codificacin en C++del problema 01, use procedimientos.


#include <cstdlib>
#include <iostream>"
using namespace std;
voi dingresar();
voi dlinea();
main()
{
int X,Y,Z,T;
linea();
ingresar();
cin>>X;
ingresar();
cin>>Y;
ingresar();
cin>>Z;
T=X+Y+Z;
linea();
cout<<"EL TOTAL ES: "<<T<<"\n";
linea();
system("pause");
return 0;
}



-----------------------
INGRESE UN NUMERO: 23
INGRESE UN NUMERO: 21
INGRESE UN NUMERO: 10
-----------------------
EL TOTAL ES: 54
-----------------------

Declaracin de los procedimientos
Llamada o invocacin al procedimiento
Guia0601.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 82 de 122
void ingresar()
{
cout<< "INGRESA UN NUMERO ENTERO : ";
}

voidlinea()
{
int i;
for(i=1;i<=30;i++)
cout<<"-";
cout<<"\n";
}


p) Analiza el cdigo y responda:cuantos procedimientos existen?, Cuntas llamadas a
procedimientos existen?
q) Modifique el cdigo para que el programa tenga la siguiente salida:











PROBLEMA 02
Visualice la tabla de multiplicar de un nmero dado, use un procedimiento que reciba dos
parmetros: el primer parmetro ser un nmero entero y el segundo indicara el nmero de
mltiplos que se debe visualizar.

2. Escriba el siguiente cdigo como solucin al problema 02, se usa un procedimiento con dos
parmetros, pero no se devuelve ningn valor.















/*Ejemplo de un procedimiento con parmetros y que no devuelve un valor*/
#include <iostream>
#include <cstdlib>
using namespace std;
voidtablamult(int, int);
main()
{
int n, m;
cout<<"Cual tabla desea?"; cin>>n;
cout<<"Cuantos multiplos desea?"; cin>>m;
tablamult(n,m);
system("pause");
} //fin de main()


Implementacin de los procedimientos

=======================
INGRESE UN NUMERO: 23
INGRESE UN NUMERO: 21
INGRESE UN NUMERO: 10
=======================
EL TOTAL ES: 54
=======================

Guia0602.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 83 de 122











r) Ejecute el programa con los valores 4 y 10; 0 y 11

s) Mejore el programa Guia0602.cpp de tal manera que si el usuario ingresa para la variable
m un nmero menor que 1 (m<1) el programa emita un mensaje de error, en caso contrario
visualice los resultados solicitados

PROBLEMA 03
Mediante el uso de funciones, calcule la suma de dos nmeros. Use dos parmetro y que la
funcin devuelva la suma de dichos nmeros ingresados.

3. Escriba el siguiente cdigo como solucin al problema 03, se usa una funcin que recibe dos
parmetros y devuelve la suma de los parmetros recibidos.



























#include <cstdlib>
#include <iostream>
using namespace std;
intoperacion(int,int);
main()
{
int X,Y,T;
cout<<"INGRESE UN NUMERO : "; cin>>X;
cout<<"INGRESE OTRO NUMERO : "; cin>>Y;
T=operacion(X,Y);
cout<<"LA SUMA DE LOS NUMEROS ES: "<<T<<endl;
system("pause");
return 0;
}

intoperacion(intA,int B)
{
return (A+B);
}

Guia0603.cpp
voidtablamult(int n, int m)
{
int i;
cout<<"\nTABLA DE MULTIPLICAR DEL "<<n<<"\n";
for (i=1;i<=m; i++)
cout<<i<<"x"<<n<<"="<<i*n<<endl;
}


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 84 de 122
PROBLEMA 04
Mediante el uso de funciones calcule el mayor de dos nmeros. Use una funcin que reciba dos
parmetros y que la funcin devuelva el mayor de dichos parmetros.

4. Escriba el siguiente cdigo como solucin al problema 04.




























PROBLEMA 05
Mediante funciones y procedimientos calcule el resultado de dos nmeros, de acuerdo al
operador ingresado ( + - * / ).

5. Como solucin al problema 05, escriba y analice el siguiente programa, este contiene la
funcin operacion() que recibe dos parametros y devuelven un valor, y la funcin titulo() sin
parmetros y que no devuelve un valor .










#include <iostream>
#include <cstdlib>
using namespace std;
floatMaximo(float x, float y);
main()
{
intx,y,M;
cout<<"Ingrese el primer numero: "; cin>>x;
cout<<"Ingrese el segundo numero: "; cin>>y;
M=Maximo(x,y);
cout<<"El numero mayor es "<<M<<endl;
system("pause");
}

floatMaximo( float x, float y )
{
float resultado;
if (x>y)
{resultado = x;}
else
{resultado = y;}
return resultado;
}
Guia0604.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 85 de 122












































t) Ejecute el programa Guia0605.cpp con los valores 10 y 2 operador /, ahora pruebe con los
valores 10 y 0 operador /.

u) Mejore el programa Guia0605.cpp, de tal manera que no permita una divisin por cero y
adems agregue el operador %.

/*Ejemplo de una funcin con parmetros y que devuelve un
valor. La funcin calcula el resultado de la operacin suma,
resta, multiplicacin odivisin de dos nmeros*/
#include<cstdlib>
#include<iostream>
using namespace std;

void titulo(void);
int operacion(int A,int B,char Op);
main()
{
int X,Y;
charOp;
titulo();
cout<<"INGRESE UN NUMERO : "; cin>>X;
cout<<"INGRESE OTRO NUMERO : "; cin>>Y;
cout<<"INGRESE EL OPERADOR (+, -, *, /) : ";
cin>>Op;
cout<<"EL RESULTADO ES: "<<operacion(X,Y,Op)<<"\n";
system("pause");
return 0;
}

voidtitulo(void)
{
cout<<" CALCULO DE OPERACIONES \n";
cout<<" ====================== \n";
}

int operacion(int A,int B,char Op)
{
if (Op=='+')
return (A+B);
if (Op=='-')
return (A-B);
if (Op=='*')
return (A*B);
if (Op=='/')
return (A/B);
}

Guia0605.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 86 de 122
PROBLEMA 06
Escriba y analice el siguiente cdigo



//Ejemplo de funcin con parmetros y que devuelve un valor
//Diseo de un men y para cada opcin se utiliza una funcin
#include <cstdlib>
#include <iostream>
using namespace std;

voidtitulo(void);
intoperacion(intA,intB,char Op);

main()
{
intX,Y,Eleccion,k;
k=1;
titulo();
cout<<" 1. SUMAR DATOS \n";
cout<<" 2. RESTAR DATOS \n";
cout<<" 3. MULTIPLICAR DATOS \n";
cout<<" 4. DIVIDIR DATOS \n";
cout<<" 5. SALIR \n";
k=1;
while (k==1)
{
cout<<"\n INGRESE SU OPCION : "; cin>>Eleccion;
if (Eleccion>0 &&Eleccion<5)
{
cout<<" INGRESE UN NUMERO : "; cin>>X;
cout<<" INGRESE OTRO NUMERO : "; cin>>Y;
cout<<"\n";
switch(Eleccion)
{
case 1:
cout<<" LA SUMA DE LOS NUMERO ES: ";
cout<<operacion(X,Y,'+')<<"\n";
break;
case 2:
cout<<" LA RESTA DE LOS NUMEROS ES : ";
cout<<operacion(X,Y,'-')<<"\n";
break;
case 3:
cout<<" LA MULTIPLICACION DE LOS NUMEROS ES : ";
cout<<operacion(X,Y,'*')<<"\n";
break;
case 4:
cout<<" LA DIVISION DE LOS NUMEROS ES : ";
cout<<operacion(X,Y,'/')<<"\n";
break;
Guia0606.cpp


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 87 de 122
}
}
else {k=0;}
}
return 0;
}


voidtitulo(void) //implementacion dela funcion
{
cout<<" CALCULO DE OPERACIONES \n";
cout<<" ====================== \n";
}

intoperacion(intA,intB,char Op) //implementacion
{
if (Op=='+')
return (A+B);
if (Op=='-')
return (A-B);
if (Op=='*')
return (A*B);
if (Op=='/')
return (A/B);
}


PROBLEMAS DE APLICACIN

1. Usando funciones escriba un algoritmo que diga si un nmero es primo o no.

Solucin:
N: Numero entero
Primo(): funcin que determina si
un numero entero es primo o no.

INICIO
Leer:
N
Primo(N)
Imprimir:
El numero es
primo
Imprimir:
El numero no es
primo
INICIO
#include <iostream>
#include <cstdlib>
using namespace std;
int primo(int x);
main()
{
int n,P;
cout<<"Ingrese un numero N:"; cin>>n;
//P=primo(n);
if (primo(n))
cout<<"El numero es primo";
else
cout<<"El numero no es primo";
system("pause");
} //fin de main()

int primo(int x)
{
int i;
bool l;
l=true;
for (i=2;i<=x-1; i++)
if (x%i==0)
l=false;
return l;
}
Guia06E01.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 88 de 122
2. Usando funciones encuentre los divisores comunes de dos nmeros.

Solucin:
A, B: Nmeros enteros
Comunes(): Funcin que
determina los divisores
de dos nmeros

































3. Use una funcin para convertir pulgadas a centmetros

4. El algoritmo de codificacin del Cesar codifica un texto sustituyendo cada letra por la letra
tres posiciones a su derecha en el alfabeto. Realizar un programa que codifique un texto
terminado en el carcter . Mediante el algoritmo del Cesar. Este programa deber incluir
una funcin para codificar una letra y hacer uso de esta funcin para codificar el texto.

A continuacin se facilita un posible esquema de la solucin


#include <iostream>
#include <cstdlib>
using namespace std;
void Comunes(int, int);

//Programa principal
main()
{
int a,b;
cout<<"Divisores comunes de dos numeros\n";
cout<<"Ingrese primer numero:";cin>>a;
cout<<"Ingrese segundo numero:";cin>>b;
cout<<"\nLos divisores comunes son:\n";
Comunes(a,b);
cout<<endl;
system("Pause"); //Hacer una pausa
return 0; //Valor de retorno al S.O.
}
//fin del prog principal

void Comunes(int a, int b) //inicio de funcion
{
int i=1;
while(i<=a && i<=b)
{
if(a%i==0 && b%i==0)
{cout<<i<<endl;}
i=i+1;
}
} //fin de la funcion
Guia06E02.cpp
Leer:
A,B
Comunes(A,B)
INICIO
FIN

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 89 de 122


/*****************************************
*Autor:
*Fecha: version:
******************************************/
#include<iostream>
#include<cstdlib>
using namespace std;

charcodifica(char letra);

int main()
{
char l, c;
cout<<"Introduzca texto terminado en punto:";
cin>>l;
while (l!='.')
{
c=codifica(l);

cout<<c;
cin>>l;
}
cout<<endl;
system("pause");
return 0;
}

char codifica(char letra)
{
/*Funcion que devuelve el valor de letra codificado por
elmtododel cesar */
/*Implementar*/
}


5. Realizar un procedimiento que reciba por parmetro un numero y un carcter. Este
procedimiento escribir tantas veces este carcter como indique el numero pasado por
parmetro. Utilizar este procedimiento para dibujar un triangulo por pantalla. El ancho
(numero de filas) del triangulo se leer por teclado al comenzar el programa.

Por ejemplo el procedimiento con los parmetros
Numero = 10
Carcter =*

Dara como resultado:

**********


Ejercicio06E04.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 90 de 122
Entonces con el procedimiento anterior dibujar el tringulo, que tomara el ancho 10:

*
**
***
****
*****
******
*******
********
*********
**********

Solucin:

















#include <iostream>
#include <cstdlib>
using namespace std;
void dibuja(int, char);

//Programa principal
main()
{
int n;
char a;
cout<<"Dibujando caracteres\n";
cout<<"Ingrese numero de veces:";cin>>n;
cout<<"Ingrese el caracter:";cin>>a;
cout<<"\n";
dibuja(n,a);
cout<<endl;
system("Pause"); //Hacer una pausa
return 0; //Valor de retorno al S.O.
}
//fin del prog principal

void dibuja(int n, char a) //inicio de funcion
{
int i,k;
for(i=1;i<=n;i++)
{
for(k=1;k<=i;k++)
{cout<<a;}
cout<<endl;
}
}
Guia06E05.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 91 de 122


Arrays Unidimensionales

Objetivos
Solucionar problemas creando algoritmos con arreglos unidimensionales
Codificar algoritmos usando arrays unidimensionales
Codificar algoritmos usando arrays unidimensionales anidadas

CONSIDERACIONES PREVIAS

Unarray(tambin conocido comoarreglo,vectoromatriz)esunmododemanejarunagran
cantidad de datos del mismo tipo bajo un mismo nombre o identificador.Porejemplo,
mediante la sentencia:

doublea[10];

sereservaespaciopara10variablesdetipodouble.Las10variablessellamana y se accedea una
uotrapormediodeunsubndice,queesunaexpresinentera escritaa continuacin del nombre entre
corchetes [...]. La forma general de la declaracin de un vector es la siguiente:

tiponombre[numero_elementos];

Loselementossenumerandesde0hasta(numero_elementos-1). El tamao de un vector
puededefinirseconcualquierexpresinconstanteentera.Paradefinirtamaossonparticularmente
tileslasconstantessimblicas.EnC++nosepuedeoperarcontodounvectorotodaunamatriz como
una nica entidad, sino que hay que tratar sus elementos uno a uno. Los vectores (mejor
dicho,loselementosdeunvector)seutilizanen las expresiones de C++ como cualquier otra variable.
Ejemplos de uso de vectores son los siguientes:

a[5]=0.8;
a[9]=30.*a[5];
a[0]=3.*a[9]-a[5]/a[9];
a[3]=(a[0]+a[9])/a[3];

Definicin del tipo array

Un Array es un conjunto finito de valores del mismo tipo.
Un Array es una estructura de datos que almacena bajo el mismo nombre (variable) a una
coleccin de datos del mismo tipo.
Un Array es un conjunto de variables del mismo tipo que tienen el mismo nombre y se
diferencian en el ndice.


Letras =


A cada dato almacenado se le denomina elemento del array o tem.
Cada elemento del array est numerado, y a ste nmero se le denomina ndice.

a z r j


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 92 de 122

Caracteristicas del tipo array

Los elementos del array se numeran consecutivamente comenzando con 0, 1, 2,





Letras =



Estos nmeros, los ndices, permiten localizar cada elemento del array.
Letras[0] es el elemento que est en la posicin 0,
Letras[1] es el elemento que est en la posicin 1, etc

Los elementos almacenados en el array pueden ser de cualquier tipo: tipos simples como: int,
char, bool, float tipos definidos por el programador como por ejemplo estructuras
(hablaremos de ellas mstarde).

Declaracin de un array

Se declara de forma similar a cualquier otro tipo de datos, solo que hay que indicarle al
compilador el nmero de elementos que forma el array: tamao longitud del array.
Sintaxis:

<tipo_de_dato><nombre_de_variable> [numero_de_elementos];

Ejemplos:

char letras[4]; // variable letras de tipo array de 4 elementos de tipo char
int edades[10]; // variable edades de tipo array de 10 elementos de tipo entero.

El compilador reserva espacio en memoria en posiciones contiguas

char letras[4];
int edades[10];







El array letras ocupa 4 bytesde memoria
a z r j
0 1 2 3


INDICE
ARRAY DE 4
ELEMENTOS

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 93 de 122
Cuando declaramos el array edades lo que hacemos es reservar un espacio dememoria para
10 variables de tipo int






El arrayedades ocupa20 bytesconsecutivos dememoria(2 bytes porelemento).

Si queremos saber el nmero de bytes que necesitamos paraalmacenar un array en memoria,
podemos utilizar la funcin sizeof().
En nuestro caso, sizeof (edades) = 20

int edades[10];






Acceso a elementos de un array

Para acceder a los elementos de un array hay que poner el nombre y elndice del elemento al que
queremos acceder referenciar.

Letras =



int primera = 1, k = 3;
char letras[4];

cout<< letras[0]; //visualiza la letra a
cout<< letras[2]; //visualiza la letra r

cin>> letras[0];
letras[2] = R;

letras[0] = letras[primera+2];
cout<< letras[k-2]; //visualiza la letra z



a z r j
0 1 2 3

Podemos visualizar el valor
de los elementos de un array
Modificar el valor de los elementos
de un array
Acceder a los elementos utilizando
frmulas

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 94 de 122

Si necesitamos acceder a todos los elementos, utilizaremos un bucle detipo for:

for ( int j = 0; j < num_elementos ; j++ )
procesar_elemento [j];

Ejemplo:


char letras[4];

for ( int j = 0 ; j < 4 ; j++ )
{
cout<<Introduzca el elemento : <<j+1;
cin>> letras[j];
cout<< endl;
}
...

Pasada j Salida por pantalla
1 0 Introdusca el elemento: 1
2 1 Introdusca el elemento: 2
3 2 Introdusca el elemento: 3
4 3 Introdusca el elemento: 4

C++ no comprueba que los ndices del array estn dentro del rango permitido.Si escribimos
cout <<letras[4]; no tendremos error de compilacin, pero elprograma no funcionar
correctamente.

Letras =



Inicializacin de un array

Antes de empezar a utilizar una variable de tipo array hay que asignarvalores a cada uno de sus
elementos. Tenemos varias formas de inicializarun array:

Variable de control j para
recorrer cada uno de
los elementos
a z r j
0 1 2 3


El cdigo ASCII del
carcter + es 43

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 95 de 122

Inicializacin en la declaracin

char letras[4] = { a, z, t, j };

int edades[] = { 10, 20, 30, 40, 50, 60 };
char saludo[] = { h, o, l, a };
char saludo[] = { hola };
...



Inicializacin elemento a elemento en el cuerpo del programa

letras[0] = a;
letras[1] = z;
letras[2] = r;
letras[3] = j;

Inicializacin mediante una sentencia FOR

int edades[ 6 ];
int valor = 10;
for (int i = 0; i<6 ; i++ )
{
edades[i] = 10;
valor = valor + 10 ;
}



int temperatura[ 10 ];
for (int i = 0; i<10; i++)
edades[i] = 0;










Los valores se encierran
entre llaves y se separan por
comas.
C++ permite omitir el
tamao del array cuando
se inicializa. El
compilador reserva
memoria para un array de
enteros de tamao 6.
Los array de caracteres se pueden inicializar de
stas dos formas.
Este mtodo no es muy prctico cuando tenemos
muchos elementos

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 96 de 122

PROCEDIMIENTO GUIA

PROBLEMA 01:
Leer y escribir una lista de elementos (Array unidimensional)

Datos de Entrada:
N : Tamao de la lista
A : Lista de elementos a leer

Datos de Salida:
A : Lista de elementosa visualizar

a) Digitar el siguiente programa Guia0701.cpp en las lneas que se indican




























b) Ejecute el programa y pruebe con los siguiente valores los dos programas realizados
i. N = 4
ii. Ingresar los valores 100 200 105 25

c) Ahora en el inicio de la lnea 12 digite lo siguiente y pulse Enter:

cout<<A[ <<I<<] = ;

d) Reemplace la lnea 16 (cout<<A[I]); por el siguiente cdigo:

Cout<<A[I]<< ;

e) Ejecute el programa y observe la diferencia.
Declaracin de la variable
que utilizaremos como
Lista (array)
Leer
INICIOINICIO
FINFIN
Escribir
A[ I ]
I = 1 N , 1
Leer
A[ I ]Escribir
I = 1 N , 1I = 2
11. #include<cstdlib>
12. #include<iostream>
13. usingnamespacestd;
14. main()
15. {
16. int N, I;
17. int A[100];
18. cout<<" INGRESE EL TAMAO DE LA LISTA (<100) : ";
19. cin>>N;
20. for(I=1;I<N;I=I+1)
21. {
22. cin>>A[I];
23. }
24. for(I=1;I<N;I=I+1)
25. {
26. cout<<A[I];
27. }
28. cout<<endl;
29. system(pause);
30. return 0;
31. }

DFD
Guia0701.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 97 de 122


PROBLEMA 02:
Leer las notas finales que obtuvieron los alumnos en el curso de programacin y calcular el
promedio de estas, la nota mayor y la nota menor.

Datos de Entrada:
N : Nmero alumnos
A :Lista de notas de alumnos

Datos de Salida:
PROM :Promedio de las notas finales.








a) Ejecute el programa Guia0701.cpp con los siguientes valores
i. N = 4
ii. Ingresar los valores 10 8 15 12


INICIO
Leer: N
For i=1 N
Leer: A[ i ]
S=0 ; MAY=A[1] ; MIN=A[1]
For i=1 N
S=S+A[ i ]
MAY<A[ i ]
MAY=A[ i ]
MEN>A[ i ]
MEN=A[ i ]
PROM=S/N
Promedio: PROM
Mayor nota: MAY
Menor nota: MEN
INICIO
V
F
V F
MAY: Mayor nota
MEN: Menor nota
DFD
1. #include<iostream>
2. #include<cstdlib>
3. usingnamespacestd;
4. main()
5. {
6. int nota[100];
7. inti,MAY,MEN,N;
8. floatS,PROM;
9. cout<<"Ingrese el numero de alumnos:";cin>>N;
10. for(i=1;i<=N;i++)
11. {
12. cout<<"Nota["<<i<<"]=";cin>>nota[i];
13. }
14. MAY=nota[1]; MEN=nota[1]; S=0;
15. for (i=1; i<=N; i++)
16. {
17. S=S+nota[i];
18. if(MAY<nota[i])
19. {MAY=nota[i]};
20. if(MEN>nota[i])
21. {MEN=nota[i]};
22. }
23. PROM=S/N;
24. cout<<"El promedio es: "<<PROM<<endl;
25. cout<<"La nota mas alta es:"<<MAY<<endl;
26. cout<<"La nota mas baja es: "<<MEN<<endl;
27. system("pause");
28. return 0;
29. }

Guia0702.cpp
Nota: El uso de las llaves { } en la estructura for
es necesaria cuando esta contiene ms de una
instruccin

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 98 de 122
b) Ahora mejoraremos el ingreso de datos de tal manera que solo permita el ingreso de notas que
estn entre 0 y 20; Para lograrlo reemplace las lneas 10, 11, 12 y 13 por el siguiente cdigo:



for(i=1;i<=N;i++)
{
cout<<"Nota["<<i<<"]=";cin>>nota[i];
while(nota[i]<0 || nota[i]>20)
{
cout<<"Error..! Buelva a ingresar la nota \n";
cout<<"Nota["<<i<<"]=";cin>>nota[i];
}
}

c) Ejecute el programa y pruebe con los valores:
N=4
Valores: 8 25 10 11

Le permite el ingreso del nmero 25?
Reemplcelo por -5

Le permite el ingreso del nmero -5?
Reemplcelo por 12 para que acepte el ingreso.


NOTA:
La lectura de un array A de N elementos, mediante diagramas de flujo se representa de las
siguientes formas:


Diagrama desarrollado Diagrama como proceso definido









For i=1 N
Leer:
A[i]
Leer: N
A[i]
i=1..N
Leer: N

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 99 de 122

PROBLEMAS DE APLIACACIN

1. Calcule la media armnica de un conjunto de datos

Ejemplo:
Datos de Entrada:
N=6
X=[2, 4, 9, 6, 5, 7]
Salida:
MediaArmonica=1/((1/2+1/4+1/9+1/6+1/5+1/7) / N )
MediaArmonica=4.37

Solucin:











INICIO
Leer:
N
For i=1 N
Imprimir:
La media
armonica es, MA
FIN
MA=1/(S/N)
Leer:
X[i]
S=0
For i=1 N
S=S+1/X[i]
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,i;
float x[100],s,ma;
cout<<"Ingrese numero de elementos:";
cin>>n;
cout<<"Ingrese los elementos:\n";
for(i=1;i<=n;i++)
{cout<<"X["<<i<<"]=";cin>>x[i];}
s=0;
for(i=1;i<=n;i++)
{s=s+1/x[i];}
ma=1/(s/n);
cout<<"La Media armonica es "<<ma<<endl;
cout<<"\n";
system("pause");
return 0;
}
Guia07E01.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 100 de 122
2. Formar un arreglo con los N primeros nmeros primos y mostrar los resultados en forma de
una tabla.
Ejemplo:
Datos de Entrada
N=6
Salida
Nmeros primos
---------------------
1
2
3
5
7
11



































INICIO
Leer:
N
k <= N
k=1; P=1;
Primo=1
M=P/2
M>1
P MOD M =0
Primo=1
XP[k]=P
k=k+1
P=P+1
Primo = 0
M=M-1
Primo=Primo
Primo=Primo
For k=1 N
Imprimir:
XP[k]
FIN
F
V
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,m,k,p,primo;
float xp[100];
cout<<"Ingrese numero de elementos:";
cin>>n;
k=1;
p=1;
while(k<=n)
{
primo=1;
m=p/2;
while(m>1)
{
if(p%m==0)
{primo=0;}
m=m-1;
}
if(primo==1)
{
xp[k]=p;
k=k+1;
}
p=p+1;
}
for(k=1;k<=n;k++)
{cout<<"XP["<<k<<"]="<<xp[k]<<endl;}
cout<<"\n";
system("pause");
return 0;
}
Guia07E02.cp
p

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 101 de 122
3. Diga si un elemento se encuentra en un array, utilice la bsqueda secuencial e indique el
ndice o posicin en el array.
Ejemplo:
Datos de entrada:
N=7
Arraydenumeros = [4, 6, 1, 9, 19, 10, 63]
Sea X = 10 el elemento a buscar

Salida
El elemento X=10 se encuentra en la posicin [6] del array.

Solucin:

N: numero de elementos
A[i]: array de elementos
X: elemento que se busca












INICIO
Leer: N
A[i]
Leer:
X
For i=1 N
A[i]=X
Imprimir:
El elemento se
encuntra en la
prosicion, [i]
INICIO
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
main()
{
int n,i,x;
int A[50];
//clrscr( );
cout<<"Ingrese el numero de elementos: ";
cin>>n;
cout<<"Ingrese los elementos:\n";
for(i=1;i<=n;i++)
{cout<<"A["<<i<<"]=";cin>>A[i];}
cout<<"Ingrese el elemento a buscar : ";
cin>>x;
for(i=1;i<=n;i++)
{
if (A[i]==x)
{
cout<<"El elemento X="<<x<<" se
encuentra";
cout<<"en la posicion ["<<i<<"] del
array\n";
}
}
cout<<"\n";
system("pause");
return 0;
}
Guia07E03.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 102 de 122
4. Disea un programa C++ que solicite las componentes de dos vectores geomtricos por
teclado y calcule su producto escalar.
Ejemplo:
Datos de entrada
N=7
Vector1=[51, 27, 4, 9, 20, 11, 10]
Vector2=[15, 17, 40, 9, 2, 1,4]
Salida
Producto escalar
Escalar = Vector1*Vector2=[51*15+27*17+4*40+9*9+20*2+11*1+10*4]
= 1556
Solucin: DFD
N : numero de elementos del array
A[i], B[i] : arrays de elementos
E : variable que acumula el producto escalar de los arrays








5. Disea un programa C++ para realizar la conversin de nmeros naturales en basedecimal
entre 0 y 65535 a base hexadecimal. Para ello el algoritmo tendr como:

Datos de entrada: Un nmero entero positivo entre 0 y 65535 cualquiera dado por
elusuario. El programa deber verificar que el nmero entrado cumple esascondiciones.
Datos de salida: Impresin en pantalla de un array de caracteres que contenga
elequivalente en base hexadecimal del nmero entrado. Este array deber estarformado por
un mximo de cuatro elementos (dgitos) que pueden ser cifras entre 0 y9 y letras entre A y
F.
INICIO
Leer: N
A[i], B[i]
For i=1 N
INICIO
E=E+A[i]*B[i]
E=0
Imprimir:
Producto escalar
es, E
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
main()
{
int n,i,e;
int a[50], b[50];
cout<<"Ingrese el numero de elementos: ";
cin>>n;
cout<<"Ingrese elementos de A[i]:\n";
for(i=1;i<=n;i++)
{cout<<"A["<<i<<"]=";cin>>a[i];}
cout<<"Ingrese elementos de B[i]:\n";
for(i=1;i<=n;i++)
{cout<<"B["<<i<<"]=";cin>>b[i];}
e=0;
for(i=1;i<=n;i++)
{
e=e+a[i]*b[i];
//cout<<e<<endl;
}
cout<<"Producto escalar es "<<e;
cout<<"\n";
system("pause");
return 0;
}
Guia07E04.
cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 103 de 122
Solucin:
N: numero natural
B: base a la que se desea cambiar

INICIO
Leer:
N, B
k=0
While
N>0
k=k+1
NA[ k ]=N%B
N=N/B
For i = k 1 (-1)
j=0
j=j+1
NB[ j ]=NA[ i ]
If
NB[j]<10
NB[ j ]
Switch
NB[ j ]
A
B
C
D
E
F
10
11
12
13
14
15
FIN
Declarar todas
las variables
como enteras
#include <cstdlib>
#include <iostream>
using namespace std;
main()
{
int N,k,i,b,j;
int NI[100],NB[100];
cout<<"Ingrese el nro.
decimal:";cin>>N;
cout<<"Ingrese la nueva
base:";cin>>b;
k=0;
while (N>0)
{
k=k+1;
NI[k]=N%b;//NS;
N=N/b;
}
/* for(i=1;i<=k;i++)
{cout<<NI[i];}
cout<<endl;*/
j=0;
for(i=k;i>0;i--)
{
j=j+1;
NB[j]=NI[i];
if(NB[j]<10)
{ cout<<NB[j];}
else
{
switch (NB[j])
{
case 10:
cout<<"A"; break;
case 11:
cout<<"B"; break;
case 12:
cout<<"C"; break;
case 13:
cout<<"D"; break;
case 14:
cout<<"E"; break;
case 15:
cout<<"F"; break;
}
}
}
cout<<endl;
system("pause");
return 0;
}
Guia07E01.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 104 de 122
6. Escribe un programa C++ que lea una sucesin de N nmeros naturales, encuentre elvalor
mximo y lo imprima junto con el nmero de veces que aparece, y las posiciones enque esto
ocurre.
Ejemplo:
Datos de entrada
N=10
A=[7, 10, 143, 10, 52, 143, 72, 10, 143, 7]
Salida generada:
143 aparece 3 veces, en posiciones 3 6 9

7. El siguiente cdigo en C++ calcula el resultado de la siguiente expresin:
Elabore el diagrama de flujo.










































#include <cstdlib>
#include <iostream>"
using namespace std;
main()
{
inti,j,n,m;
float S,s;
float y[100], x[100];
cout<<"Numero de Elementos del vector Y:";cin>>n;
cout<<"Numero de elementos del vector X:";cin>>m;
cout<<"Ingrese los elementos de Y \n";
for(i=1;i<=n;i++)
{cout<<"Y["<<i<<"]=";cin>>y[i];}
cout<<"Ingrese los elementos de X \n";
for(j=1;j<=m;j++)
{cout<<"X["<<j<<"]=";cin>>x[j];}
S=0;
for(i=1;i<=n;i++)
{
s=0;
for(j=1;j<=m;j++)
{s=s+x[j];}
S=S+s*y[i];
}
cout<<"El resultadoes: S = "<<S<<endl;
system("pause");
return 0;
}
Pruebe con los datos:
Y = [2, 5, 1]
X = [3, 4, 7, 8]
Resultado:
S=176
Ejercicio07E07.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 105 de 122
Arrays multidimensionales

Objetivos
Solucionar problemas creando algoritmos con arreglos multidimensionales
Codificar algoritmos usando arrays multidimensionales

CONSIDERACIONES PREVIAS

Los arrays que hemos visto anteriormente se conocen como arraysunidimensionales y se
caracterizan por tener un solo ndice. Tambinse conocen como listas de elementos y se
corresponden con elconcepto de vector.

Definicin de array multidimensional
Los arrays multidimensionales son aquellos que tienen ms de unadimensin y por tanto tienen
ms de un ndice. Los ms utilizados sonlos de dos dimensiones, conocidos con el nombre de
tablas. Secorresponden con el concepto de matriz.

C++ permite trabajar con arrays de tantas dimensiones comorequieran las aplicaciones ( 3, 4
ms dimensiones).

Array bidimensionales

Un array de dos dimensiones se corresponde con una tabla con varias filas y varias columnas

0 1 2 3
0 1 2 3 4
1 4 1 2 3
2 3 2 1 4

Cada elemento almacenado en el array est identificado por dos ndices,sus coordenadas, la
fila y la columna en la que se encuentra dichoelemento.

Ambos ndices se numeran consecutivamente comenzando con 0, 1, 2,

Ejemplo: el elemento resaltado (2) lo identificamos diciendo que se encuentra en la fila 1
columna 2 de la tabla.


0 1 2 3
0 1 2 3 4
1 4 1 2 3
2 3 2 1 4



Indice para las
columnas
Indice para las
filas

fila
columna

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 106 de 122
Declaracin de arrays bidimensionales

Se declara de forma similar al tipo de dato array de una dimensin, solo que hay que
indicarle al compilador el tamao de cada uno de los ndices, es decir, el nmero de filas y el
nmero de columnas.
Sintaxis:

<tipo_de_dato><nombre_de_variable> [num_filas][num_columnas];

Ejemplos:
char tablero[8][8]; // variable llamada tablero de tipo array de dos
dimensiones (8 filas y8 columnas). Alamacena 64
elementos de tipo char.
int matriz[3][4]; // variable llamada matriz de tipo array de dos dimensiones (3
filas y 4columnas). Almacena 12 elementos de tipo
entero.

Al igual que en los arrays de una dimensin, el compilador reservaespacio en memoria en
posiciones contiguas. Primero se almacenanlos datos de la primera fila, luego los de la
segunda, ...

int matriz[3][4];




El array matriz ocupa 24 bytes consecutivos de memoria.
Cuando declaramos el array matriz lo que hacemos es reservar un espacio dememoria para
12 variables de tipo int.





Acceso a elementos de una array bidimensional

Se puede acceder a los elementos de un array bidimensional de formasimilar a como lo hacamos
para arrays de una dimensin. Hay que ponerel nombre y los ndices (fila y columna) del
elemento al que queremosacceder referenciar.
0 1 2 3
0 1 2 3 4
1 4 1 2 3
2 3 2 1 4


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 107 de 122
Ejemplo:


int j = 0;
char valor ;
int matriz[3][4];
char cuadro[3][3];
cout<<matriz[0][3];

cin>> matriz[1][ j+1 ];
cuadro[2][2] = R;

valor = cuadro[2][1];
...


Si necesitamos acceder a todos los elementos de un array bidimensional,utilizaremos un doble
bucle for.
Sintaxis:

for (int i=0; i<num_filas; i++)
for ( int j=0; j<num_columnas; j++)
procesar_elemento[i][j];


Ejemplo:


int matriz[3][4];

for ( int i = 0 ; i < 3 ; i++ )
for ( int j = 0 ; j < 4 ; j++ )
{
cout<< El elemento << i+1 << j+1 << es: ;
cout<< matriz [i] [j] << endl;
}
...







Podemos visualizar el valor de los
elementos de un array
Modificar el valor de los elementos
de un array
Acceder a los elementos para
extraer valores
Variable de control i
pararecorrer las filas
Variable de control j
pararecorrer las columnas

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 108 de 122
Inicializacin en arrays bidimensionales
Al igual que los arrays de una dimensin, tenemos varias formas deinicializar un array:

Inicializacin en la declaracin:


int matriz[3][4] = {1,2,3,4,4,1,2,3,3,2,1,4}; // matriz
int valores[2][3] = { {10,20,30}, {0,1,2} }; // valores
char cuadro[3][3] = {
{ B, N, N },
{ N, N, N },
{ B, B, B }
};
//cuadro
...

Representacin de las matrices inicializadas:

matriz valores cuadro





Inicializacin elemento a elemento en el cuerpo del programa

matriz[0][0] = 1;
matriz[0][1] = 2;
matriz[0][2] = 3;
...
matriz[2][3] = 4;

Inicializacin mediante una doble sentencia FOR

int valores[2][3]
int dato = 10;
for (int i = 0; i<2 ; i++ )
for (int j = 0; j<3 ; j++ )
{
valores[i][j] = dato;
dato = dato + 10 ;
}


Los valores se encierran entre
llaves y se separan por comas.
0 1 2 3
0 1 2 3 4
1 4 1 2 3
2 3 2 1 4

0 1 2
0 10 20 30
1 0 1 2

0 1 2
0 B N N
1 N N N
2 B B B

Poco prctico como ocurra enarrays de
una dimensin
Variable de control i pararecorrer
las filas
Variable de control j pararecorrer
las columnas
0 1 2
0 10 20 30
1 40 50 60


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 109 de 122

Si un array se declara globalmente, y no se inicializa en dichadeclaracin, el compilador se
encarga de inicializarlo automticamente conun valor por defecto.

Si no declaran globalmente, pero se inicializan uno o ms elementos pero no todos, el
compilador inicializa automticamente el resto de elementos con un valor por defecto.

Si el array almacenaelementos de tipoentero o real:El valor por defecto es 0.
Si el array almacenaelementos de tipocarcter:El valor por defecto es elcarcter nulo \0.

Ejemplo:

#include <iostream.h>
int matriz[3][4];
char cuadro[3][3];
void main()
{
float ventas[4] = {3.2};
int otrocuadro[3][3] = { 7, 6 };
...
}

La representacin de las matrices inicializadas serian:














Un array bidimensional (tabla o matriz) es un array con dos ndices, al igual que los
vectores.Para localizar o almacenar un valor en el array se deben especificar dos posiciones
(dossubndices), uno para la fila y otro para la columna. Los elementos s referencian con el
formato:

T [3, 4] elemento de la fila 3 y la columna 4

matriz

0 1 2 3
0 0 0 0 0
1 0 0 0 0
2 0 0 0 0

cuadro

0 1 2
0 \0 \0 \0
1 \0 \0 \0
2 \0 \0 \0

ventas

0 1 2 3
3.2 0 0 0

otrocuadro

0 1 2
0 7 6 0
1 0 0 0
2 0 0 0


Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 110 de 122
Recorrido por filas/columnas de un array bidimensional

Los elementos de la primera fila/columna se procesan primero, a continuacin los de la
segundafila/columna, y as sucesivamente. Sea el array A de 3 filas y 4 columnas.



Sea i ndice para las filas y j ndice para las columnas, el recorrido seria:

//Por filas

for(i=1; i<=3; i++)
for(j=1; j<=4; j++)
cout<<A[i][j];



Tratamiento De Arrays Multidimensionales

C++ no limita el nmero de dimensiones de un array, pero si debe estar declarado el
tipo de cada subndice.


//Por columnas

for(j=1; j<=4; j++)
for(i=1; i<=3; i++)
cout<<A[i][j];




Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 111 de 122
PROCEDIMIENTO GUIA

PROBLEMA 01:
Leer y escribir una Matriz de elementos ingresados por teclado (Array bidimensional)

Datos de Entrada:
N : Nmero filas de la matriz
M : Nmero Columnas de la matriz
A[i][j]: Matriz de orden NxM

Datos de Salida:
A : Matriz de orden NxM
































a) Ejecute el programa Guia0801.cpp y pruebe con los siguientes valores
i. N = 2
ii. M = 2
iii. Ingresar los valores 10 20 15 25

b) Modifique el programa para darle una salida mostrando la matriz ingresada por fila y por
columna respectivamente, para ello, sustituya las filas de la 17 a la 21 por las siguientes
lneas de cdigo.



INICIO
Leer:
N, M
For i=1 N
For j=1 M
Leer:
A[i,j]
FIN
For i=1 N
For j=1 M
Imprimir:
A[i,j]
DFD
1. #include <iostream>
2. #include <cstdlib>
3. using namespace std;
4. main()
5. {
6. int N,M,i,j;
7. int A[50][50];
8. cout<<"NUMERO DE FILAS : ";
9. cin>>N;
10. cout<<"NUMERO DE COLUMNAS : ";
11. cin>>M;
12. for(i=1;i<=N;i++)
13. {
14. for(j=1;j<=M;j++)
15. {cin>>A[i][j];}
16. }
17. for(i=1;i<=N;i++)
18. {
19. for(j=1;j<=M;j++)
20. {cout<<A[i][j];}
21. }
22. system("pause");
23. return 0;
24. }

Guia0801.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 112 de 122
for(i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
{
cout<<"A["<<i<<","<<j<<"]=";
cout<<A[i][j]<<" ";
}
cout<<endl;
}

c) De similar manera modifique el programa para que la lectura sea indicando el elemento de
lectura, para ello sustituya las lneas 12 al 16 por las siguientes lneas de cdigo.

for(i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
{
cout<<"A["<<i<<","<<j<<"]=";
cin>>A[i][j];
}
cout<<endl;
}


PROBLEMA 02:
Lea una matriz por teclado y escriba solo una fila determinada.

Datos de Entrada:
N : Nmero filas de la matriz
M : Nmero Columnas de la matriz
A[i][j] : Matriz de orden NxM
f : fila de la matriz que se imprimir

Datos de Salida:
A[f,j] : Elementos de la
filaf de la Matriz

















INICIO
Leer: N, M
f
For i=1 N
For j=1 M
Leer:
A[i,j]
For j=1 M
Imprimir: A[f,j]
FIN
DFD
Nota: El uso de las llaves { }
en la estructura for es
necesario solo cuando
existen ms de dos
sentencias dentro de el.

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 113 de 122
a) Codificacin en C++



#include <iostream>
#include <cstdlib>
using namespace std;
main()
{
int N,M,i,j,f;
int A[50][50];
cout<<"NUMERO DE FILAS : ";
cin>>N;
cout<<"NUMERO DE COLUMNAS : ";
cin>>M;
cout<<"Ingrese la fila a imprimir: ";cin>>f;
for(i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
{
cout<<"A["<<i<<","<<j<<"]=";
cin>>A[i][j];
}
cout<<endl;
}
cout<<"Los elementos de la fila "<<f<<" son:\n";
for(j=1;j<=M;j++)
{
cout<<A[f][j]<<" ";
}
cout<<"\n\n";
system("pause");
return 0;
}


b) Mejore el programaGuia0802.cpp para que solo permita el ingreso de una fila ( f ) valida, es
decir f debe ser menor o igual a N.



PROBLEMAS DE APLICACIN

1. PROBLEMA: Disear un diagrama y programa que lea un matriz y determine el valor
mximo, mnimo de cada columna de la matriz.
Ejemplo:
Datos entrada
A
3x2
=




Guia0802.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 114 de 122
Salida:
Valor mximo de la columna 1: 8
Valor minimo de la columna 1: 3
Valor mximo de la columna 2: 9
Valor minimo de la columna 2: 2
Solucin:



#include <iostream>
#include <cstdlib>
using namespace std;
main()
{
int N,M,i,j,f,MAX,MIN;
int A[50][50];
cout<<"NUMERO DE FILAS : ";
cin>>N;
cout<<"NUMERO DE COLUMNAS : ";
cin>>M;
for(i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
{
cout<<"A["<<i<<","<<j<<"]=";
cin>>A[i][j];
}
cout<<endl;
}
for(j=1;j<=M;j++)
{
MAX=A[1][j]; MIN=A[1][j];
for(i=2; i<=N; i++)
{
if(MAX<A[i][j])
MAX=A[i][j];
if(MIN>A[i][j])
MIN=A[i][j];
}
cout<<"Columna "<<j<<endl;
cout<<"Maximo: "<<MAX<<endl;
cout<<"Manimo: "<<MIN<<endl<<endl;
}
cout<<"\n\n";
system("pause");
return 0;
}




Guia08E01.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 115 de 122
2. PROBLEMA: Una empresa tiene un inventario de artculos segn la siguiente tabla:

Tipo 1 Tipo 2 Tipo 3 Tipo 4
Almacn 1 10 200 500 300
Almacn 2 470 98 600 60
Almacn 3 80 40 2 40

a) Se pide disear el diagrama de flujo para calcular la cantidad de artculos que existen por
tipo, se debe disear para un caso general de M almacn y N tipos de artculo.

b) Si el stock mnimo por almacn debe ser de 50 unidades, disear el diagrama de flujo
para que determine que almacenes tienen menos de 50 artculos y que artculos son estos,
expresar claramente el formato de salida.

Ejemplo:
Datos de entrada
Matris del problema: A
3x4
=

Salida
a) Total de artculos por tipo:
Tipo 1: 560
Tipo 2: 338
Tipo 3: 1102
Tipo 4: 400
b) Almacenes con menos de 50 articulos:
Almacen 1, Articulo tipo 1
Almacen 3, Articulo tipo 2
Almacen 3, Articulo tipo 3
Almacen 3, Articulo tipo 4

Solucin:



#include <iostream>
#include <cstdlib>
using namespace std;
main()
{
int N,M,i,j,S;
int A[50][50];
cout<<"NUMERO DE FILAS : ";
cin>>N;
cout<<"NUMERO DE COLUMNAS : ";
cin>>M;
for(i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
Guia08E02.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 116 de 122
{
cout<<"A["<<i<<","<<j<<"]=";
cin>>A[i][j];
}
cout<<endl;
}
cout<<"Total de articulos por Tipo:\n";
for(j=1;j<=M;j++)
{
S=0;
for(i=1; i<=N; i++)
{S=S+A[i][j];}
cout<<"Tipo "<<j<<" : "<<S<<endl;
}
cout<<"\nAlmacenes con menos de 50 articulos: \n";
for(i=1; i<=N; i++)
for(j=1;j<=M;j++)
{
if(A[i][j]<50)
{cout<<"Almacen "<<i<<" Articulo Tipo "<<j<<endl;}
}
cout<<"\n";
system("pause");
return 0;
}


3. PROBLEMA: Se tiene la siguiente tabla que muestra los resultados de una eleccin entre 3
candidatos en 3 ciudades.

CANDIDATOS
A B C
Ciudad 1 2,000 3,000 4,000
Ciudad 2 8,000 6,000 7,000
Ciudad 3 10,000 11,000 8,000

Se pide calcular los porcentajes que obtuvieron cada candidato en cada ciudad y que imprima
esos porcentajes
Ejemplo Para la Ciudad 1 :
- Candidato A = 22 %
- Candidato B = 33 %
- Candidato C..= 44 %
a) Disear el diagrama de flujo para un caso general Ejemplo. Para M ciudades y N
candidatos.
b)Se pide disear el diagrama de flujo para determinar el total de votantes por cada ciudad
y el total de votos que obtuvo cada candidato.






Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 117 de 122
Solucin:



#include <iostream>
#include <cstdlib>
using namespace std;
main()
{
int N,M,i,j,S;
float P;
int A[50][50];
cout<<"NUMERO DE FILAS : ";
cin>>N;
cout<<"NUMERO DE COLUMNAS : ";
cin>>M;
for(i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
{
cout<<"A["<<i<<","<<j<<"]=";
cin>>A[i][j];
}
cout<<endl;
}
cout<<"Porcentaje de votos por candidatos:\n";
for(i=1; i<=N; i++)
{
cout<<"Para la ciudad "<<i<<endl;
S=0;
for(j=1;j<=M;j++)
{S=S+A[i][j];}
for(j=1;j<=M;j++)
{
P=A[i][j]*100.00/S;
cout<<"Candidato "<<j<<" = "<<P<<"%\n";
}
}
cout<<"\nTotal de votantes por cada ciudad:\n";
for(i=1; i<=N; i++)
{
S=0;
for(j=1;j<=M;j++)
{S=S+A[i][j];}
cout<<"Ciudad "<<i<<" = "<<S<<" votantes\n";
}
cout<<"\nTotal de votos por candidato:\n";
for(j=1;j<=M;j++)
{
S=0;
for(i=1; i<=N; i++)
Guia08E03.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 118 de 122
INICIO
Leer: N
A[i,j]
L=1; i=1
i<=N AND L=1
j=i+1
j<=N AND L=1
A[i,j]=A[j,i]
j=j+1 L=0
i=i+1
L=1
Simetrica No Simetrica
FIN
V F
{S=S+A[i][j];}
cout<<"Candidato "<<j<<" = "<<S<<" votos\n";
}
cout<<"\n";
system("pause");
return 0;
}




4. PROBLEMA: Disear un programa que ingrese una matriz de NxN y visualice si es una
matriz SIMTRICA o no.

Ejemplo: Se dice que una matriz es simtrica si se cumple A[i][j]=A[j][i]
Datos de entrada
A
3x3
=
Salida
La matriz A es simtrica

Solucin:

































#include <iostream>
#include <cstdlib>
using namespace std;
main()
{
int N,i,j,l;
int A[50][50];
cout<<"NUMERO DE FILAS : ";
cin>>N;
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
cout<<"A["<<i<<","<<j<<"]=";
cin>>A[i][j];
}
cout<<endl;
}
l=1; i=1;
while(i<=N && l==1)
{
j=i+1;
while(j<=N && l==1)
{
if(A[i][j]==A[j][i])
{j=j+1;}
else
{l=0;}
}
i=i+1;
}
if(l==1)
{cout<<"Simetrica";}
else
{cout<<"No simetrica";}
cout<<"\n";
system("pause");
return 0;
}
DFD
Guia08E04.cpp

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 119 de 122
5. PROBLEMA: Disear un programa que calcule la suma de matrices

Ejemplo:

Datos de entrada
A
3x3
= B
3x3
=

Salida
C
3x3
=

Solucin:






For i=1 N
For j=1 M
FIN
For i=1 N
For j=1 M
Imprimir:
C[i,j]
C[i,j]=A[i,j]+B[i,j]
Leer: N, M
A[i,j] B[i,j]
INICIO

"Estudia y practica! No para saber una cosa ms, sino para saberla
mejor."

Estudia y practica! No para saber una cosa ms, sino
para saberla mejor
DFD

Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 120 de 122

Bibliografa

Algoritmos y diagramas de flujo aplicados en PHP, Joel de la Cruz Villar, Grupo editorial
Megabbyte. Octubre del 2010

Visual Basic.net, Erika Alarcn Herrera Christian Crovetto Huerta, Grupo editorial Megabyte.
Octubre 2010.










































Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 121 de 122










Algoritmos y su codificacin en C++ - Gua para el docente
Pagina 122 de 122

Vous aimerez peut-être aussi