Está en la página 1de 64

Universidad Nacional

Federico Villarreal

GUA ACADMICA

ALGORITMOS

INGENIERIA DE SISTEMAS I CICLO

MAURICE FRAYSSINET DELGADO

E
Escuela Universitaria

uded
Educacin a distancia
3

Tutoras

Las tutoras se desarrollaran mediante la programacin de un calendario de tutoras. La tutora


ser presencial y virtual.

Cronograma

Cantidad de horas acadmicas


Tutoras presenciales
y virtuales Horas Horas Horas
presenciales virtuales vdeoconferencia
semana 1 2 2.5 3
UNIDAD I semana 2 2 2.5 3

semana 3 2 2.5 3
UNIDAD II
semana 4 2 2.5 3

EVALUACIN PARCIAL VIRTUAL UNIDADES I II

semana 5 2 2.5 3
UNIDAD III
semana 6 2 2.5 3

semana 7 2 2.5 3
UNIDAD IV
semana 8 2 2.5 3

EVALUACIN FINAL UNIDADES III IV

16 20 24
TOTAL
60 HORAS ACADEMICAS

Evaluacin

El promedio final de la asignatura en la Modalidad Presencial Virtual se obtiene aplicando los


siguientes pasos porcentuales:
Evaluacin de trabajos interactivos (TI): (40%)
Evaluacin parcial (IV): (20%).
Evaluacin final (EF): (40%).

PF = TI (0,4) + IV (0,2) + EF (0,4)

El Examen parcial ser virtual y se realizar al final de la 4 semana; el examen final ser
presencial y se realizar en la 8 semana y la presentacin de un trabajo monogrfico en la 8
semana del ciclo.

Medios y recursos didcticos

Deitel, P.J. y Deitel, H.M.: Cmo programar en c++ y hava


(7 edicin), Prentice Hall, 2008.

Metodologa de Programacin a travs de Pseudocdigo,


1era Edicin (McGraw Hill)

Aho, Alfred V. Hopcroft, John E. Ullman, Jeffrey D.


Estructuras de datos y algoritmos. 1ed. U. E. A. Addison
Wesley
Joyanes Aguilar, Luis. Estructura de Datos. 1ra. ed. Espaa:
McGraw-Hill; 2000.
Liza Avila, Csar. Algoritmos y su codificacin en c++. 1ed.
Textos Per: Editorial Imprenta.
complementarios Raffo Lecca, Eduardo. Turbo C++. 1 ed. Lima: Mundigraph;
2000.
Hernndez, Z.J. y otros: Fundamentos de Estructuras de
Datos. Soluciones en Ada, Java y C++, Thomson, 2005.
Weiss, M.A.: Estructuras de datos en Java, Pearson/Addison
Wesley, 2000.
Ejemplos de pseint
http://pseint.sourceforge.net/ejemplos.php

Plataforma virtual Herramientas a emplearse en plataforma virtual:


Foros, tareas, enlaces, examen, videoconferencias, pginas,
web, entre otros.

Contenido
TemaN1:Algoritmo.....................................................................................................................................7
1.1DefinicindeAlgoritmo........................................................................................................................7
1.2Caractersticasdeunalgoritmo............................................................................................................8
1.3InstruccionesAlgortmicasBsicas........................................................................................................8
1.4RepresentacindelAlgoritmo...............................................................................................................9
Actividades...............................................................................................................................................10
TemaN2:ProgramacinEstructurada......................................................................................................11
2.1Programa............................................................................................................................................11
2.2LenguajedeProgramacin.................................................................................................................11
2.3 Programas Traductores.................................................................................................................11
2.5ResolucindeunProblema................................................................................................................13
TemaN3:SentenciasBsicasdeProgramacin........................................................................................14
3.1EstructuraBsicaSimpleoSecuencial..............................................................................................14
3.2EstructuraBsicaSelectiva................................................................................................................16
3.3EstructuraBsicaRepetitiva...............................................................................................................25
Actividades...............................................................................................................................................32
TemaN4:ModularizacindeProgramas..................................................................................................33
4.1PasodeParmetros...........................................................................................................................33
4.2Procedimientos..................................................................................................................................34
4.3Funciones..........................................................................................................................................34
Actividades...............................................................................................................................................39
TemaN5:LibrerasdeProgramacincreadasporelusuario....................................................................40
Actividades...............................................................................................................................................42
TemaN6:FuncionesRecursivas................................................................................................................43
Actividades...............................................................................................................................................44
TemaN7:EstructurasdeDatos.................................................................................................................45
7.1DefinicindeEstructuradeDatos......................................................................................................45
7.2ClasificacindeEstructuradeDatos..................................................................................................45
Actividades...............................................................................................................................................45
TemaN8:ArreglosUnidimensionales.......................................................................................................46
8.1ActualizacindeArreglosUnidimensionales.....................................................................................47

8.2BsquedadeArreglosUnidimensionales...........................................................................................50
8.3OrdenacindeArreglosUnidimensionales........................................................................................52
Actividades...............................................................................................................................................55
8.4ArreglosBidimensionales...................................................................................................................56
8.5ActualizacindeArreglosBidimensionales........................................................................................59
8.6AplicacindeArreglosBidimensionales............................................................................................61
Actividades...............................................................................................................................................64

Unidad N 1: Algoritmo

1.1 Definicin de Algoritmo


La palabra algoritmo se dio en honor del matemtico persa del siglo IX, Khowrizm.
Un algoritmo es un conjunto ordenado y finito de instrucciones que conducen a la solucin de un
problema.
Por ejemplo:
- Al instalar un equipo de sonido ejecutamos las instrucciones (algoritmo) contenidas en el manual del
equipo.
- Algoritmo matemtico de Euclides para la obtencin del mximo comn divisor de dos nmeros.
Si un algoritmo puede ser ejecutado por una computadora, se dice que es un algoritmo computacional;
en caso contrario, se dice que es un algoritmo no computacional.
Para que un algoritmo sea computacional se debe expresar en instrucciones a travs de un lenguaje de
programacin, teniendo como resultado un programa.

Todo algoritmo puede ser descompuesto en tres partes:

Entrada de datos.
E PROCESO S
Proceso.
Salida de resultados.

En cada uno de ellos se necesita el uso de variables:

Variable:
Es una localizacin o casillero en la memoria principal que almacena un valor que puede cambiar en el
transcurso de la ejecucin del programa. Tiene un nombre, un tipo de dato y un valor. Antes de poder
utilizar una variable es necesario declararla especificando su nombre y su tipo de dato.
Ejemplo 1:
Entero edad

Ejemplo 2:
Real peso, talla

1.2 Caractersticas de un algoritmo


Ser preciso: los pasos del algoritmo deben desarrollarse en un orden estricto, ya que el
desarrollo de cada paso debe obedecer a un orden lgico.

Ser definido. en el rea de programacin, el algoritmo se desarrolla como paso fundamental


para desarrollar un programa. El computador solo desarrollar las tareas programadas y con los
datos suministrados; no puede improvisar el dato que necesite para realizar un proceso.

Ser finito: implica que el nmero de pasos de un algoritmo, por grande y complicado que sea el
problema que soluciona, debe ser limitado, es decir debe llegar a un final.

Presentacin formal: para que el algoritmo sea entendido por cualquier persona interesada es
necesario que se exprese en alguna de las formas comnmente aceptadas; si no puede no ser
muy til ya que solo lo entender quien lo dise. Las formas de presentacin de algoritmos
son: el pseudocdigo, diagrama de flujo y diagramas de Nassi/Schneiderman, entre otras.

Correccin: el algoritmo debe ser correcto, debe solucionar el problema para el cual fue
diseado. Para garantizar que el algoritmo logre el objetivo, es necesario ponerlo a prueba:
verificacin o prueba de escritorio.

Eficiencia: es evaluar los recursos que requiere para almacenar datos y para ejecutar
operaciones frente al beneficio que ofrece. En cuanto menos recursos requiere ser ms
eficiente el algoritmo.

1.3 Instrucciones Algortmicas Bsicas

a. Entrada: Consiste en obtener un dato de un dispositivo de entrada, como el teclado, y


almacenarlo en una variable. En general, la accin de ingresar un dato a una variable se expresa
en el pseudocdigo mediante la palabra LEER, de la siguiente forma:
LEER variable
Ejemplo: LEER edad

b. Salida: Consiste en mostrar el valor de una variable en un dispositivo de salida, como la


pantalla. En general, la accin de mostrar el valor de una variable se expresa en el pseudocdigo
mediante la palabra IMPRIMIR (ESCRIBIR) de la siguiente forma:
IMPRIMIR variable
Ejemplo: IMPRIMIR TotalCompra

c. Asignacin: Consiste en dar a una variable el valor de una expresin. La asignacin se


expresa en el pseudocdigo de la siguiente forma:
variable = expresin o variable expresin
Donde variable y el valor de expresin deben tener el mismo tipo de dato.
Ejemplo:
resultado numero1 + numero 2

1.4 Representacin del Algoritmo

a. Pseudocdigo: Es la representacin del algoritmo en lenguaje natural. Ejemplo: sumar dos


nmeros enteros.

INICIO
entero numero1, numero2, resultado
Leer numero1
Leer numero2
resultado numero1 + numero 2
Escribir El resultado de la suma es:
Escribir resultado
FIN

b. Diagrama de Flujo Estructurado: Representacin con flujos entre los procesos a realizar. Los
principales smbolos de representacin para este diagrama son.
Inicio/Fin del algoritmo

Procesos del algoritmo

Entada/Salida Estndar de Datos del algoritmo

Flujo de recorrido entre Procesos del algoritmo

Punto de Decisin del algoritmo

Subrutinas en el algoritmo

Conector del algoritmo en la misma hoja

Conector del algoritmo en otra hoja

c. Diagrama Nassi/Schneiderman (N-S)


Representacin en bloques, es decir cada uno de los procesos como ingreso/salida de datos,
decisiones, acciones, repeticiones; estn representados en bloques de tareas consecutivos.

INICIO
Declaracin de variables
Lectura de Datos
Accin 1
Accin 2
Accin n
Reporte de Datos
FIN

Actividades
Elaborar el algoritmo y su respectiva representacin, identificando los elementos de entrada y los
elementos de salida, para los siguientes casos:
a. El proceso de asistir a clases a un centro de estudios.
b. El proceso de solicitar un libro en la biblioteca de una universidad.
c. El proceso de un punto de ventas de un supermercado.
d. El proceso de intercambiar dos valores numricos.
e. El proceso de calcular la regla de tres simple.
f. El proceso de matrcula para elaborar una lista de contactos digital.
g. El proceso de Matrcula en una universidad.

10

Unidad N 2: Programacin Estructurada

2.1 Programa
Secuencia de instrucciones que especifican las operaciones que debe realizar la computadora, en la
cual cada paso del algoritmo est expresado por medio de una instruccin.

2.2 Lenguaje de Programacin

Conjunto de sentencias utilizadas para escribir secuencias de instrucciones que para que ejecute un
programa en una computadora.
a. Lenguaje Mquina: Lenguaje de programacin que la computadora interpreta y ejecuta
directamente, y est compuesto de instrucciones codificadas en binario (0, 1).
b. Lenguaje de Bajo Nivel: tambin llamados lenguajes ensambladores, permiten al programador
escribir instrucciones de un programa usando abreviaturas del lenguaje natural (ingls), tambin
llamadas palabras nemotcnicas (ADD, DIV, SUB, etc).

c. Lenguaje de Alto Nivel: permite al programador escribir las instrucciones de un programa


utilizando palabras o expresiones sintcticas muy similares al lenguaje natural (ingls).

2.3 Programas Traductores


Traducen los programas fuente de a cdigo mquina. Pueden ser:
a. Intrpretes: es un traductor que toma un programa fuente, lo traduce y a continuacin lo
ejecuta.
PROGRAMA
FUENTE

INTERPRETE

PROGRAMA
EJECUTABLE

11

b. Compilador: es un traductor que toma un programa fuente, y lo traduce sentencia por


sentencia.
PROGRAMA
FUENTE

COMPILADOR

PROGRAMA
OBJETO

La compilacin es el proceso de traduccin del programa fuente a programa objeto (traducido a


cdigo mquina), a travs de un programa enlazador, para conducir al programa ejecutable.

COMPILADOR

PROGRAMA
FUENTE

PROGRAMA
OBJETO

PROGRAMA
ENLAZADOR

PROGRAMA
EJECUTABLE

2.4 Definicin Programacin Estructurada


Conjunto de tcnicas para escribir, verificar, depurar, y mantener los programas, es una metodologa
de desarrollo de programas llamada refinamientos sucesivos: se plantea una operacin como un todo
y se divide en segmentos ms sencillos o de menor complejidad. Una vez terminado todos los
segmentos del programa, se procede a unificar las aplicaciones, esta integracin debe ser sencilla.

La representacin grafica de la programacin estructurada se realiza a travs de diagramas de flujo o


flow chart, Diagramas N-S, el cual representa el programa con sus entradas, procesos y salidas.
El conjunto de tcnicas para este enfoque son:
a. Recursos Abstractos
Descomponer una determinada accin compleja en acciones ms simples, para ser
ejecutadas y que sern instrucciones.
b. Diseo Descendente
El problema se descompone en niveles o pasos sucesivos: que hace? como lo hace?

Que hace ?
Como hace?
12

c. Estructuras bsicas
Son estructuras de control para el programa:

Secuenciales

Selectivas

Repetitivas

ste conjunto de tcnicas permite elaborar programas en cualquier lenguaje de programacin.


Las estructuras bsicas mencionadas sern desarrolladas mas adelante en otras sesiones de clase.

2.5 Resolucin de un Problema


Los siguientes pasos propuestos para la resolucin de problemas estn basados en el Ciclo de Vida
Clsico en la Construccin de un Software.

1. Anlisis del Problema


2. Diseo del Algoritmo
3. Expresar el algoritmo en un programa.
4. Ejecucin y Validacin del programa.

13

Unidad N 3: Sentencias Bsicas de Programacin

Las sentencias de programacin a utilizar es una las tcnicas de programacin del enfoque
estructurado: Estructuras Bsicas.

3.1 Estructura Bsica Simple o Secuencial


Es una estructura paso a paso, sin bifurcaciones ni repeticiones; donde la salida de un proceso es
entrada para otro.
Diagrama de Flujo:
INICIO

Declaracin de Variables

Lectura de Datos

Accin 1

Accin 2

Accin n

Reporte de Datos

FIN

Diagrama N-S:

INICIO
Declaracin de variables
Lectura de Datos
Accin 1
Accin 2
Accin n
Reporte de Datos
FIN
Ejemplo
Calcular el rea de un tringulo. Area = (base * altura) / 2

Solucin
Leyenda de Datos
base: valor de la base del tringulo
altura: valor de la altura del triangulo
Area: valor del resultado del clculo del rea del tringulo

14

Diagrama de Flujo:
INICIO

real base, altura, Area

Leer base

Leer altura

Area (base * altura)

Escribir El valor del rea


para el tringulo es:

Escribir Area

FIN

Diagrama N-S:
INICIO
real base, altura, Area
Leer base
Leer altura
Area (base * altura) / 2;
Escribir El valor del rea para el tringulo es:
Escribir Area
FIN

Cdigo en C:

#include<iostream>
using namespace std;
void main( )
{ float base, altura, Area; cout<<Ingrese
valor de la base: ; cin>>base;
cout<<\n; //Salto de lnea
cout<<Ingrese valor de la altura: ;
cin>>altura;
cout<<\n;

Area = (base * altura) / 2;

cout<<El valor del rea para el tringulo es: ;


cout<<Area;
cout<<\n;
}

15

3.2 Estructura Bsica Selectiva


Es una estructura que tiene un punto de decisin para realizar un conjunto de acciones. Pueden ser:

E. B. Selectiva Simple

E. B. Selectiva Compuesta

E. B. Selectiva Anidada

E. B. Selectiva Mltiple

a. Estructura Bsica Selectiva Simple:


Se tiene un punto de decisin que evala una condicin y si es Verdadero, ejecuta un conjunto
de Acciones.
Diagrama de Flujo:
INICIO

Declaracin de Variables

Lectura de Datos

F V
Cond 1

Accin 1

Accin n

Reporte de Datos

FIN

Diagrama N-S:
INICIO
Declaracin de variables
Lectura de Datos

V Cond 1 F
Accin 1
Accin 2
Accin n
Reporte de Datos
FIN

16

Ejemplo

Sumar dos nmeros enteros positivos c = a + b

Solucin Leyenda de Datos

a: valor del primer nmero entero positivo


b: valor del segundo nmero entero positivo
c: valor del resultado la suma de dos nmeros a y b

Diagrama de Flujo:
INICIO

entero a, b, c

Leer a , b

F a >0 && b>0 V

c a+b

Escribir El valor de la suma es,c

FIN
Diagrama N-S:

INICIO
entero a, b, c

Leer a , b
a >0 && b>0
V F
c a+b

Escribir El valor la suma es: , c


FIN

Cdigo C:

17

#include<iostream> using
namespace std; int main(
)
{ float a, b, c;
cout<<Ingrese primer nmero: ;
cin>>a; cout<<\n; cout<<Ingrese
segundo nmero: ; cin>>b; cout<<\n;
if (a>0 && b>0)
{ c = a + b;
cout<<El valor la suma es: ;
cout<<c;
cout<<\n;
}
return 0;
}

b. Estructura Bsica Selectiva Compuesta: se tiene un punto de decisin que evala una condicin y si
es Verdadero, ejecuta un conjunto de Acciones, y si es Falsa ejecuta otro conjunto de acciones.
Diagrama de Flujo
INICIO

Declaracin de Variables

Lectura de
Datos

F V
Cond 1

Accin 2 Accin 1

Accin m Accin n

Reporte de
Datos

FIN

18

Diagrama N-S

INICIO
Declaracin de variables
Lectura de Datos

Cond 1
V F
Accin 1 Accin 2
.
Accin n Accin m
Reporte de Datos
FIN

Ejemplo:
Sumar dos nmeros enteros si son positivos, sino multiplicarlos.
Solucin:

Leyenda de Datos
a: valor del primer nmero entero positivo
b: valor del segundo nmero entero positivo
c: valor del resultado la suma o multiplicacin de dos nmeros a y b

Diagrama de Flujo

INICIO

entero a, b, c

Leer a , b

F V
a >0 && b>0

c a*b c a+b

Escribir El valor de la Escribir El valor de la


multiplicacion es , c suma es , c

FIN

19

Diagrama N-S

INICIO
entero a, b, c
Leer a , b
a >0 && b>0
V F
c a+b c a*b

Escribir El valor la suma es: , c Escribir El valor la multiplicacin es: , c


FIN

Cdigo C:
#include<iostream> using
namespace std; void main(
)
{ int a, b, c;
cout<<Ingrese primer nmero: ;
cin>>a;
cout<<\n;
cout<<Ingrese segundo nmero: ;
cin>>b;
cout<<\n;
if(a>0 && b> 0)
{ c = a + b;
cout<<El valor la suma es:
; cout<<c; cout<<\n;
}
else
{ c = a * b;
cout<<El valor la multiplicacion es: ;
cout<<c; cout<<\n;
}
}

20

c. Estructura Bsica Selectiva Anidada: se evala una condicin y si es Verdadero, ejecuta


un nuevo punto de decisin y as sucesivamente, y si es Falsa ejecuta otro conjunto de
acciones.
Diagrama de Flujo
INICIO

Declaracin de Variables

Lectura de Datos

F V
Cond 1

F V
Accin 2 Cond 2

Accin 1
Accin m

Accin n

Reporte de Datos

FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos

F Cond 1 V
Accin 2 Cond 2
V F
Accin 1
.
Accin m Accin n
Reporte de Datos
FIN

21

Ejemplo:
Ingresar un nmero entero y si es positivo y diferente de cero, reportar si se encuentra entre los
diez primeros nmeros.
Solucin: Leyenda de Datos
a: valor del numero entero

Diagrama de Flujo
INICIO

Entero a

Leer a

F V
a>0
F V
a>=1 && a>10

Escribir No es un Escribir Son mas de Escribir Primeros 10


nmero mayor los primeros 10
que cero

FIN
Diagrama N-S
INICIO
entero a
Leer a
a>0
F V
a>=1 && a>10
Escribir No es un nmero mayor F V
que cero
Escribir Son mas de los primeros 10 Escribir Primeros 10
FIN

Cdigo C:
#include<iostream>
using namespace
std; void main( )
{ int a;
cout<<Ingrese nmero:
; cin>>a;
if(a>0)
if(a>=1 && a<10)
cout<<Primeros 10;
else
cout<<Son ms de los primeros 10;
else
cout<<No es un nmero mayor que cero;
}

22

d. Estructura Bsica Selectiva Mltiple: se tiene un punto de decisin que evala ms de


dos alternativas para realizar un conjunto de acciones.
Diagrama de Flujo
INICIO

Declaracin de Variables

Lectura de Datos

1
default
Cond 1
2 3

Accin 1 Accin 2 Accin 3 Accin 4

Accin n Accin m Accin m Accin m

Accin 4

Reporte de Datos

FIN

Diagrama N-S

INICIO
Declaracin de variables
Lectura de Datos

Cond 1
1 2 3 default
Accin 1 Accin 2 Accin 3 Accin 4

Accin n Accin m Accin m Accin m
Reporte de Datos
FIN

Ejemplo
Ingresa cinco nmeros e imprime que vocal es.
Solucin:
Leyenda de Datos

num: valor del numero entero positivo

23

Diagrama de Flujo

INICIO

entero num

Leer num

1 default
num
2 4 5
3

Escribir Escribir Escribir Escribir Escribir Escribir


Vocal A Vocal E Vocal I Vocal O Vocal U No es

FIN

Diagrama N-S

INICIO
entero num
Leer num
num

1 2 3 4 5 default
Escribir Escribir Escribir Escribir Escribir Escribir No
Vocal A Vocal E Vocal I Vocal O Vocal U es Vocal
FIN

Cdigo C:
#include<iostream
> using namespace
std; void main( )
{ int num;
cout<<Ingrese nmero:
; cin>>num;

switch(num)
{ case 1: cout<<Vocal A; break;
case 2: cout<<Vocal E;
break; case 3: cout<<Vocal
I; break; case 4:
cout<<Vocal O; break; case
5: cout<<Vocal U; break;
default: cout<<No es numero para una vocal;
}
}

24

3.3 Estructura Bsica Repetitiva


Es una estructura permite iterar o repetir un conjunto de acciones dada una condicin.
Pueden ser:

E. B. Repetitiva Mientras

E. B. Repetitiva Hacer-Mientras

E. B. Repetitiva Para

a. Estructura Bsica Repetitiva Mientras: primero evala una expresin condicional y si es


verdadera permite realizar el conjunto de acciones y regresa evaluar nuevamente la
expresin condicional, hasta que deje de cumplir (Falso).
Diagrama de Flujo
INICIO

Declaracin de Variables

Lectura de Datos
F
Cond 1
V
Accin 1

Accin n

Accin 2

FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
Cond 1

Accin 1
.
Accin n
Accin 2
Reporte de Datos
FIN

Ejemplo
Imprimir la serie Fibonacci, menor a un lmite dado: 0,1,1,2,3,5,8,13,.

25

Diagrama de Flujo

INICIO

entero lim, a=0, b=1, c

Leer lim

Escribir a

F
b<=lim
V

Escribir b

c a+b

a b

b c

FIN

Diagrama N-S
INICIO
entero lim, a=0, b=1, c

Leer lim
Escribir a
b <= lim
Escribir c
c a +b
a b
b c
FIN
Cdigo C:
#include<iostream>
using nameaspace
std; void main( )
{ int lim, a=0, b=1,c;

cout<<Ingrese lmite:
; cin>>lim;

cout<<a;

26

while(b<=lim)
{
cout<<b;
c=a+b;
a=b;
b=c;
}
}

b. Estructura Bsica Repetitiva Hacer - Mientras: realiza al menos una vez un conjunto de acciones, y
luego evala una expresin condicional, si es Verdadero regresa a repetir el conjunto de acciones, si
no cumple, sale del bucle.

Diagrama de Flujo
INICIO

Declaracin de Variables

Lectura de
Datos

Accin 1

Accin n

V
Cond 1
F
Accin 2

Reporte de
Datos

FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
Accin 1
.
Accin n
Cond 1
Accin 2
Reporte de Datos
FIN

27

Ejemplo
Leer un nmero entero mayor que cero, sino es as, volver a solicitar el nmero con esas
condiciones.
Diagrama de Flujo INICIO

entero num

Leer num

Vnum <= 0

F
FIN
Diagrama N-S
INICIO
entero num

Leer num
num <= 0
FIN
Cdigo C:

#include<iostream>
using namespace
std; void main()
{ int num;

do{ cout<<" Ingrese un numero entero mayor a cero: ";


cin>>num;
}while(num <= 0);
}
Ejemplo en Cdigo C:
Se tiene un Stock inicial, del cual se realizan ventas a n clientes, si la venta supera al stock, contar
a los clientes insatisfechos. Mostrar la cantidad de clientes satisfechos, cantidad de clientes
insatisfechos, Total de ventas, y lo que queda en stock. El usuario indica si desea continuar o no.

#include<iostream>
using namespace
std; int main()
{ int n,m, cs=0,ci=0, venta=0; char ops,op; cout<<"--

---Venta de Producto------"; cout<<"\n\n";

do{
do{
cout<<"Ingrese valor de stock inicial: ";
cin>>n;
}while(n<=0);

28

do{
do{ cout<<"Ingrese venta: ";
cin>>m;
}while(m<=0);

if(n>=m && m>0)


{ n=n-m;
venta=venta+m;
cs++;
if(n>0)
{ cout<<"\n"; cout<<"Desea Continuar?";
cin>>ops; cout<<"\n";
}
else
break;
}
else
{ ci++;
cout<<"\n"; cout<<"Es mayor q el stock actual
\n"; cout<<"Clientes Satisfechos: ";
cout<<cs; cout<<"\n";
cout<<"Clientes Insatisfechos: ";
cout<<ci; cout<<"\n";
cout<<"Total de Ventas: ";
cout<<venta; cout<<"\n";
cout<<"Queda de Stock: ";
cout<<n; cout<<"\n";
cout<<"---------------------------"; cout<<"\n\n";
cout<<"Desea Continuar?";
cin>>ops; cout<<"\n\n";
}
}while(ops=='S' || ops=='s');
cout<<"------ REPORTE FINAL------ "; cout<<"\n";
cout<<"Clientes Satisfechos: ";
cout<<cs; cout<<"\n";
cout<<"Clientes Insatisfechos: ";
cout<<ci; cout<<"\n";
cout<<"Total de Ventas: ";
cout<<venta; cout<<"\n";
cout<<"Queda de Stock: ";
cout<<n; cout<<"\n";
cout<<"-------------------------- "; cout<<"\n\n";
if(n==0)
{ cout<<"Se completo ultimo pedido, su stock actual es CERO \n";
cs=0;
ci=0;
venta=0;
cout<<"Desea Otro Stock Inicial?
(s)"; cin>>op;
}
else
break;
}while(op=='S' ||
op=='s'); return 0;
}

29

c. Estructura Bsica Repetitiva Para: permite repetir un conjunto de acciones,


secuencialmente hasta llegar a un lmite dado.
Diagrama de Flujo

INICIO

Declaracin de

Lectura de Datos

Definir variable de recorrido y lmite

Inicializar la variable de recorrido

F
Variable recorrido es
menor a lmite

Accin 1

Accin n

Incrementar Variable de

Accin 2

Reporte de Datos

FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
i = 0 ; i <= limite ; i++
Accin 1
.
Accin n
Accin 2
Reporte de Datos
FIN

30

Ejemplo:
Calcular el Factorial de un nmero.
Diagrama de Flujo
INICIO

entero , num, p = 1

Escribir Ingrese numero para factorial

Leer num

i 1

F
i < = num

p p*i

i ++

Escribir El factorial es , p

FIN

Diagrama N-S
INICIO
entero num, i , p =1

Leer num
i = 1 ; i <= num ; i++
p p * i
Escribir el factorial es:
Escribir p
FIN
Cdigo C:
#include<iostream>
using namespace std;

void main( )
{ int num, i, p=1;
cout<<Ingrese numero para factorial:
; cin>>num;

for(i=1;i<=num; i++)
{ p = p * i;
}
cout<<El factorial de <<n<<es: <<p;
}

31

Actividades
Elaborar el Pseudo cdigo, Diagrama de Flujo y Diagrama N-S, y Cdigo en C respectivo para:
1. La presin, el volumen y la temperatura de una masa de aire se relacionan por la
formula: Masa = (presin * volumen)/(0.37 * (temperatura + 460))
Calcular la masa respectiva.
2. En un hospital existen tres reas: Ginecologa, Pediatra, Traumatologa. El presupuesto anual
del hospital se reparte conforme a la siguiente tabla:
rea Porcentaje del presupuesto
i. Ginecologa 40%
ii. Traumatologa 30%
iii. Pediatra 30%
Obtener la cantidad de dinero que recibir cada rea, para cualquier monto presupuestal.
3. Encuentre el menor de tres nmeros dados.
4. Una fbrica de TV necesita que le ayuden a controlar el manejo de sus inventarios y pedidos
de venta.
Cuando llega un pedido, un programa debe verificar si existe suficiente cantidad de TV en
inventario. Si es as, debe reportar un mensaje PEDIDO COMPLETO y se debe dar la
disminucin del inventario.
Adems se necesita reportar:
El nmero de TV que quedan en el inventario
final. El nmero de pedidos completos.
El nmero de pedidos incompletos.
El nmero de TV vendidos.
El nmero de TV que faltan para completar los pedidos incompletos.
5. Lea un nmero entero e indique cual es su dgito mayor.
6. Suponga que tiene la calificacin final de un grupo de 40 alumnos, calcular la calificacin
promedio y la calificacin mas baja de todo el grupo.
7. Cuantos dgitos pares y cuantos dgitos impares tiene un nmero entero.
8. En una universidad se pueden llevar hasta 22 crditos en un ciclo. Elabora el cdigo que
permita a un alumno matricularse sin pasarse del lmite.
9. Una vendedora de pan tiene n unidades de pan al comenzar el da. Si cada cliente le pide m
panes, cuantos clientes son atendidos completamente, cuantos panes quedan para el ultimo
cliente?
10. Elabore el cdigo para una tienda para leer por cada cliente el monto total de su compra; Al
final del da reportar la cantidad total de ventas y el nmero de clientes atendidos.
11. Un censador recopila datos del ltimo censo nacional, al final de un da desea conocer de las
persona encuestadas el porcentaje que tiene estudios de primaria, el porcentaje que tiene
estudios de secundaria, porcentaje de carrera tcnica, porcentaje de estudios profesionales, y
porcentaje con estudios de post grado.

32

Unidad N 4: Modularizacin de Programas

4.1 Paso de Parmetros


Para llamar un bloque de cdigo ms de una vez, es tener las instrucciones en subprogramas que
se invocan cada vez que se necesiten. Los subprogramas son partes separadas de cdigo que
ejecutan tareas pequeas de un programa principal.
Parmetros de entrada (valor)
Guarda en memoria una copia temporal de la variable, dentro del procedimiento solo se utiliza la
copia, cuando se modifica el valor del parmetro solo afecta al almacenamiento temporal, la
variable actual fuera del procedimiento nunca se toca.
Parmetros de entrada/salida (referencia)
Los cambios que se efecten sobre dicha variable dentro del procedimiento se mantienen incluso
despus de que este haya terminado, es decir los cambios afectan al programa principal.
Ejemplo:

33

4.2 Procedimientos
Se utilizan para imprimir valores a ser utilizados en el programa.
Declaracin:
void NombreProcedimiento( )
void NombreProcedimiento (argumentos)

4.3 Funciones
Se utilizan para retornar un valor a ser utilizado en el programa.
Declaracin:
Tipo_dato NombreFuncin( )
Tipo_dato NombreFuncin(argumentos)

Si se tiene el siguiente programa simple para sumar dos nmeros:

//Programa Simple

#include<iostream>
using namespace std;

void main()
{ int a,b,c;

cout<<"Ingrese valor de a:
\t"; cin>>a;

cout<<"Ingrese valor de b:
\t"; cin>>b;

c=a+b;
cout<<c; cout<<"\n";
}

34

Con Procedimientos:
//Procedimientos con Argumentos: Ejemplo1

#include<iostream>
using namespace std;
void sumar(int a, int b)
{ int c;
c=a+b;
cout<<c; cout<<"\n";
}
void main()
{ int a,b;

cout<<"Ingrese valor de a:
\t"; cin>>a;

cout<<"Ingrese valor de b:
\t"; cin>>b;
sumar(a,b);
}
//Procedimientos sin Argumentos: Ejemplo2
#include<iostream>
using namespace std;
void sumar()
{ int a,b,c;

cout<<"Ingrese valor de a:
\t"; cin>>a;

cout<<"Ingrese valor de b:
\t"; cin>>b;
c=a+b;
cout<<c;
}
void main()
{ sumar( );
}

35

Con Funciones:
//Funciones con Argumentos: Ejemplo1

#include<iostream> using
namespace std; int
sumar(int a, int b)

{ int c;
c=a+b;
return c;
}
void main()
{ int sum,a,b;

cout<<"Ingrese valor de a:
\t"; cin>>a;

cout<<"Ingrese valor de b:
\t"; cin>>b;
sum=sumar(a,b);

cout<<"Valor de la suma de a y b: "<<sum;


cout<<"\n";
}
//Funciones sin Argumentos: Ejemplo2

#include<iostream>
using namespace
std; int sumar()
{ int a,b,c;

cout<<"Ingrese valor de a:
\t"; cin>>a;

cout<<"Ingrese valor de b:
\t"; cin>>b;
c=a+b;
return c;
}
void main()
{ int sum;
sum=sumar();
cout<<"Valor de la suma de a y b: "<<sum;
cout<<"\n";
}

36

Otra Manera de definir un Procedimiento y una Funcin:

//Procedimientos con Argumentos

#include<iostream>
using namespace std;
void sumar(int a, int b);

int main()
{ int a,b;
cout<<"Ingrese valor de a: \t"; cin>>a;
cout<<"Ingrese valor de b: \t"; cin>>b;

sumar(a,b);
return 0;
}
void sumar(int a, int b)
{ int c;
c=a+b;
cout<<c;
cout<<"\n";
}
//Funciones con Argumentos

#include<iostream>
using namespace std;
int sumar(int a, int b);

void main()
{ int sum,a,b;

cout<<"Ingrese valor de a: \t";


cin>>a; cout<<"Ingrese valor de b:
\t"; cin>>b; sum=sumar(a,b);
cout<<"Valor de la suma de a y b: "<<sum;
cout<<"\n";
}
int sumar(int a, int b)
{ int c;
c=a+b;
return c;
}

37

Ejemplos:
1. Elaborar un programa para calcular a la funcin de acuerdo a lo sgte.:

y = x2 + 5 si x <= 0
y = 3x - 1 si 0 < x < 2

y =x2 - 4x + 5 si x >= 2
#include<iostream>
using namespace std;
float ecuaciones()
{ float x,y;
cout<<"Ingresar valor de x para calcular funcion f(y)=x <<\t";
cin>>x; if(x<=0)
{ cout<<"Ecuacion a usar es
y=(x^2)+5\n"; y=(x*x)+5;
}
else
if(x>0&&x<2)
{ cout<<"Ecuacion a usar es
y=3x+1\n"; y=(3*x)-1;
}
else
if(x>=2)
{ cout<<"Ecuacion a usar es y=(x^2)-
4x+5\n"; y=(x*x)-(4*x)+5;
}
return y;
}
void main()
{ float res;
res=ecuaciones();
cout<<"Resultado de la funcion es f(y)=\t"<<res; cout<<"\n";
}

2. Para repartir una herencia se tiene en cuenta: Si la cantidad de hijos es menor a 4, se repartir
exactamente entre el nmero de hijos; si son cuatro o ms hijos, la mitad le tocar al hermano mayor
y el resto se dividir entre los dems hermanos.
#include<iostream>
using namespace std;

//procedimientos sin
argumentos void herencia()
{ float her,may;
int num;
cout<<"Ingresar importe de herencia \n"; cin>>her;
cout<<"Ingresar cantidad de hijos \n"; cin>>num;
if(num<4)
{ her=her/num;
cout<<"Herencia a cada hijo es "<<her; }
else
{ may=her/2;
her=may/(num-1);

cout<<"\nHerencia de hermano mayor es"<<may;


cout<<"\nHerencia de cada hijo es "<<her; }
}
void main( )
{ herencia( ); }

38

Actividades
Construir los programas usando funciones y procedimientos en Cdigo en C respectivo para:
1. Realizar un programa que tenga un mdulo reciba dos argumentos a, b (enteros) y
que intercambie los valores de dichas variables.
-> Elaborar un mdulo para leer a y b.
2. En un banco, a los clientes que de tipo 1, 2, 3, que aperturan cuentas de Ahorro(A), Corriente
(C), o Valores (V), todos en nuevos soles, se les otorga un bono (dlares), de acuerdo a la sgte.
Tabla:

Cuenta: A C V
Tipo cliente
1 $ 500 $ 400 $ 300
2 $ 400 $ 300 $ 200
3 $ 300 $ 200 $ 100

Reportar el Tipo de Cliente, la Cuenta que apertura, el monto total de la cuenta.


Considere el ingreso del tipo de cambio de moneda al da.
3. En un colegio, a la pensin de sus alumnos de tipo A, B, C, de acuerdo al promedio obtenido, le
asignan becas:

Promedio 0 10 11 - 16 17 -20
Alumno
A A ++ A+ A-
B B ++ B+ B-
C C ++ C+ C-

De acuerdo a la beca obtenida, se le descuenta al pago de su pensin:

A ++ = 5 % A + = 7% A - = 10 %
B ++ = 3 % B+=5% B-=7%
C ++ = 1 % C+ = 3% C-=5%

Mostrar el tipo de alumno, la beca obtenida, y el monto total de pago de pensin,


4. Elaborar los mdulos de programa adecuados que permita leer las edades de n personas y
reporte el mayor, el menor y el promedio de edades.

39

Unidad N 5: Libreras de Programacin creadas por el usuario

Las libreras estndar del procesador del lenguaje C: iostream.h, math.h, conio.h, stdio.h, etc.,
existen liberas de cabecera (header, de alli la extensin .h) que pueden ser creadas por el
programador, y ser invocadas en diferentes programas fuente (el programa con extensin .cpp)
como parte de la reutilizacin de cdigo.

40

Ejemplo 1:

Leer un nmero entero diferente a cero, y si es positivo, reportar El numero es positivo, caso
contrario es negativo.
Solucin:
- Crear la librera con extensin .h para la funcin de lectura de datos enteros, llamado lecturadato.h.
#include<iostream>
using namespace
std; int leedatoe()
{ int
dato; do{
cout<<Ingrese valor del
dato; cin>>dato;
}while(dato==0);
return dato;
}

- Crear el programa .cpp que invoca a la librera .h , lecturadato.h, creada por el programador.
#include<iostream>
#include c:\programas\lecturadato.h
using namespace std;
void main()
{ int num;
num=leedatoe();
if(num>0)
cout<<El numero es
positivo; else
cout<<El numero es negativo;
}
Ejemplo 2:

Desarrollar la sgte. Ecuacin solo si son nmeros positivos y diferentes a


cero. y = x * (2x - a)
Solucin:
- La funcin para la lectura de datos enteros y diferentes a cero ya fue creada para el programa
del ejemplo 1.
- Solo se crear el programa fuente con extensin .cpp para desarrollar la ecuacin.
#include<iostream>
#include c:\programas\lecturadato.h
using namespace std;
void main()
{ int x,a,y;

x=leedatoe();
a=leedatoe();
if(x>0 && a>0)
{ y=x*((2*x)-a);
cout<<El resultado es:<<y;
}
else
cout<<Con estos valores no se puede calcular;
}

41

Actividades
Construir los programas usando funciones y procedimientos y libreras de programacin:
1. Una empresa categoriza a sus artculos como A, B y C, adems a sus clientes como
Excelente(E), Bueno(B), Regular(R) y Malo(M), estableciendo polticas de descuento (en %)
de acuerdo a la sgte. tabla:
Tipo Artculo
A B C
Tipo Cliente
Excelente (E) 40 30 20
Bueno (B) 30 20 10
Regular (R) 20 10 0
Malo (M) 0 0 0
El cliente Excelente y Bueno puede pagar en Efectivo, Cheque o crdito, el cliente Regular
puede pagar en Efectivo o Cheque y el cliente Malo solo paga en efectivo.
2. En un cajero se puede realizar las operaciones de depsito, saldo, y retiro. Elabore un
programa permitir a un cliente realizar estas operaciones las veces que lo requiera.

42

Unidad N 6: Funciones Recursivas

Se denominan funciones recursivas a aquellas que se invocan a s mismas en un programa.


Hay que tener algunas cosas en cuenta en las funciones recursivas:
- Toda funcin recursiva debe tener algn punto de finalizacin.
- La funcin debe tender a ese punto de finalizacin.

La funcin factorial:
n! 4! = 4 * 3 * 2 * 1

4! = 4 * 3 * 2 * 1 4 * 3!

4 * 3! Es decir n*(n-1)! 3! = 3 * 2 * 1

3! = 3 * 2 * 1 3 * 2!

3 * 2! Es decir n*(n-1)! 2! = 2 * 1

2! = 2 * 1 2 * 1!

2 * 1! Es decir n*(n-1)! 1! = 1 * 0!

1! = 1 * 0! 0! = 1
0! = 1
int factorial(int n) 1 * 1 * 2 * 3 * 4 = 24
{ if (n == 0)
return 1;
else
return n*factorial(n-1);
}

a*b 3*4=3+3+3+3
3*4=3+3+3+3 3 + (3 * 3)
3 + (3 * 3) 3*3=3+3+3
3*3=3+3+3 3 + (3 * 2)
3 + (3 * 2) 3*2=3+3
3*2=3+3 3 + (3 *1)
3 + (3 *1) 3*1 =3

3 * 1 = 3 3 + 3 + 3 + 3 = 12
int multiplica(int a, int b)
{ if (a == 0 || b == 0)
return 0;
else
if (b == 1)
return a;
else
return a+multiplica(a,b-1);
}

43

Actividades

Investigar y Exponer las funciones recursivas de:


1. Serie Fibonacci
2. Mximo Comn Divisor
3. Torres de Hanoi.

44

Unidad N 7: Estructuras de Datos

7.1 Definicin de Estructura de Datos


Una estructura de datos es una coleccin de datos que se caracteriza por su organizacin y por el
conjunto de operaciones que se definen para su manipulacin.

7.2 Clasificacin de Estructura de Datos - Enteros


- Reales
- Caracter
Estructuras de Datos Estndar
Estructura de Datos
Estructuras de Datos No Estndar
Simples (Definidos por el programador)

- Arreglos
Estructuras de Datos Estticos - Registros
- Archivos
- Cadenas
- Listas
Estructuras de Datos Lineales - Pilas
- Colas
Compuestos Estructuras de Datos Dinmicos

- Arboles
No Lineales - Grafos

Estructuras de Datos Estticos: Son aquellas en las que la cantidad de memoria que ocupan se
define antes de ejecutar el programa. Durante la ejecucin del mismo este tamao asignado no puede
alterarse.

Estructuras de Datos Dinmicos: Son aquellas en las que no es necesario reservar espacio de
memoria antes de ejecutar el programa, ya que este espacio se puede asignar durante su ejecucin
segn se necesite. As mismo dicho espacio puede ser liberado para poder ser utilizado por otros
datos.

Actividades
Investigar y Exponer cuales son las estructuras de datos:
1. Estndar.
2. Creadas por el Programador.

45

Unidad N 8: Arreglos Unidimensionales

Tambin llamado vectores, es un conjunto finito y ordenado de elementos de un mismo tipo de dato.
La definicin de un arreglo es como sigue:
TipoDato NombreArreglo[tamao]
Ejm. Entero M[10]

Acceso a los elementos de un arreglo unidimensional


Nombre del arreglo [posicin del elemento];

//Programa para promediar las alturas de los alumnos

#include<iostream>
#define N 5
using namespace std;

void leerarre(double array[ ])


{ int i; for(i=0;i<=N-1;i++)
{ cout<<"Ingrese altura alumno"<<"["<<i<<"]"<<":\t";
cin>>array[i];
}
}

double suma(double array[ ])


{ int i; double suma=0;
for(i=0;i<=N-1;i++)
{ suma=suma+array[i];
}
return suma;
}

double promedio(double sum)


{ double prom;
prom=sum/N;
return prom;
}

void main()
{ double A[N],sum,promed;

leerarre(A); sum=suma(A);

promed=promedio(sum);

cout<<"\t\tLa suma es "<<sum; cout<<"\n\n";


cout<<"\t\tEl promedio es "<<promed; cout<<"\n\n";
}

46

El siguiente programa lee un arreglo de nmeros enteros y encuentra el mayor y menor


elemento. El mx de elementos es 100 pero solo ingresa n elementos.
//Programa para hallar el mayor y menor elemento de un
arreglo #include<iostream>
#define MAXIMO 100
using namespace std;
int leenumelem()
{ int n;
do{ cout<<"\n";
cout<<"Ingrese cantidad de elementos (>= a CERO y <= que 100): ";cin>>n;
}while(n<=0 || n>MAXIMO);
return n;
}
void leerarre(int N, int array[])
{ int i; for(i=0;i<=N-
1;i++)
{ cout<<"Ingrese altura alumno A"<<"["<<i<<"]"<<":\t";
cin>>array[i]; cout<<"\n"; }
}
void comparar(int N, int
array[]) { int i, mayor, menor;
mayor=array[0];
menor=array[0];
for(i=0;i<=N-1;i++)
{ if (array[i]>mayor)
mayor=array[i];
if
(array[i]<menor
)
menor=array[i];
}
cout<<"El mayor es :"<<mayor<<"\n";
cout<<"El menor es :"<<menor<<"\n";
}
void main()
{ int
A[MAXIMO];
int n;
n=leenumelem();
leerarre(n,A);
comparar(n,A);
}

8.1 Actualizacin de Arreglos Unidimensionales


Los Arreglos necesitan actualizarse mientras se efecta algn proceso con ellos. La
actualizacin de arreglos consiste en tres operaciones: Aadir elementos al final del arreglo
(siempre y cuando exista espacio en el arreglo), Insertar elementos en cualquier posicin del
arreglo y Eliminar elementos.

Aadir
//Aadir un valor en la ltima posicin
#include<iostream>
#define MAX 100
using namespace
std; int leenum()
{ int num;
do{ cout<<"Ingrese numero de elementos para el arreglo:
"; cin>>num; cout<<"\n";
}while(num<=0 ||
num>MAX); return num;
}

47

void ingresadatos(int V[MAX], int n)


{ int i;
cout<<"Ingrese elementos para el arreglo ";
cout<<"\n"; for(i=0;i<=n-1;i++)
{ cout<<"Elemento ["<<i<<"]"<<":";
cin>>V[i];
}
}
void mostrar(int V[MAX], int n)
{ int i;
cout<<"Los elementos del arreglo son"; cout<<"\n";
for(i=0;i<=n-1;i++)
{ cout<<"Elemento"<<"["<<i<<"]"<<":\t";
cout<<V[i]; cout<<"\n";
}
}
int ultimoelemento(int a[MAX], int n)
{ int i,p = n;
if (p<MAX)
{ for(i=p;i<=n;i++) //ingresa nuevo elemento
{cout<<"\n Ingrese nuevo elemento de arreglo
"<<":\t"; cin>>a[i];
}
n=n+1;
return n;
}
}
void main()
{ int A[MAX]; int
num,elem;
num=leenum();
ingresadatos(A,num); cout<<"\n";
mostrar(A,num); cout<<"\n";
elem=ultimoelemento(A,
num); mostrar(A,elem);
}

Insertar
//Insertar un valor en cualquier posicin

#include<iostream>
#define MAX 100
using namespace
std; int leenum()
{ int num;
do{cout<<"Ingrese numero de elementos para el arreglo:
"; cin>>num; cout<<"\n";
}while(num<=0 ||
num>MAX); return num;
}
void ingresadatos(int V[MAX], int n)
{ int i;
cout<<"Ingrese elementos para el arreglo ";
cout<<"\n"; for(i=0;i<=n-1;i++)
{ cout<<"Elemento
["<<i<<"]"<<":"; cin>>V[i];
}
}

48

void mostrar(int V[MAX], int n)


{ int i;
cout<<"Los elementos del arreglo son";
cout<<"\n"; for(i=0;i<=n-1;i++)
{ cout<<"Elemento"<<"["<<i<<"]"<<":\t";
cout<<V[i]; cout<<"\n";
}
}
int posicion(int a[MAX], int
n) {int i,p;
cout<<"\n Ingrese posicion a insertar un elemento"<<":\t"; cin>>p;
i=n-1;
while (i>=p)
{ a[i+1]=a[i];
i=i-1;
}
return p;
}
int nuevoelemento(int a[MAX],int p, int n)
{ int elem;
cout<<"\n Ingrese nuevo elemento de arreglo
a"<<":\t"; cin>>elem;
a[p]=elem;
n=n+1;
return n;
}
void main()
{ int A[MAX];
int num,pos,elem;
num=leenum();
ingresadatos(A,num);
cout<<"\n";
mostrar(A,num);
cout<<"\n";
pos=posicion(A,num);
elem=nuevoelemento(A,pos,
num); mostrar(A,elem);
}

Eliminar
//Eliminar un valor en cualquier posicin

#include<iostream>
#define MAX 100
using namespace
std; int leenum()
{ int num;
do{ cout<<"Ingrese numero de elementos para el arreglo: ";
cin>>num; cout<<"\n";
}while(num<=0 ||
num>MAX); return num;
}
void ingresadatos(int V[MAX], int n)
{ int i;
cout<<"Ingrese elementos para el arreglo ";
cout<<"\n"; for(i=0;i<n;i++)
{ cout<<"Elemento
["<<i<<"]"<<":"; cin>>V[i];
}
}

49

void mostrar(int V[MAX], int n)


{ int i;
cout<<"Los elementos del arreglo son";
cout<<"\n"; for(i=0;i<n;i++)
{ cout<<"Elemento"<<"["<<i<<"]"<<":\t";
cout<<V[i]; cout<<"\n";
}
}

int elimina(int a[MAX], int


n) {int i,p;
cout<<"\n Ingrese posicion a eliminar elemento de arreglo
"<<":\t"; cin>>p;
i=p;
while (i<n)
{ a[i]=a[i+1];
i++;
}
return n-1;
}

void main()
{ int A[MAX]; int
num,el;
num=leenum();
ingresadatos(A,num); cout<<"\n";
mostrar(A,num); cout<<"\n";
el=elimina(A,num);
mostrar(A,el);
}

8.2 Bsqueda de Arreglos Unidimensionales


La bsqueda es la recuperacin de la informacin de los elementos de un arreglo. Para ello se
necesita recorrer el arreglo y hacer uso de uno de los mtodos de bsqueda de un elemento
tales como: Bsqueda Secuencial Bsqueda Binaria.

B. Secuencial
//Bsqueda Secuencial 1

#include<iostream>
#define MAX 100 using
namespace std;
//Se entiende que se realizan los procedimientos de lectura de datos
void bsecuencial(int a[MAX], int n)
{ int elem,i;
cout<<"\n Ingrese elemento a buscar en el arreglo "<<":\t";
cin>>elem; for(i=1;i<=n;i++)
if(a[i]==elem)
{ cout<<"\n Encontrado\t Posicion :\t"<<i<<"\t"; cout<<"\n\n";

}
}
void main()
{int A[MAX];
int num;
num=leenum();

50

ingresadatos(A,num);
cout<<"\n"; mostrar(A,num);
cout<<"\n"; bsecuencial(A,num);
}

//Busqueda Secuencial 2

#include<iostream>
#define MAX 100 using
namespace std;
//Se entiende que se realizan los procedimientos de lectura de datos

void bsecuencial(int a[MAX], int n)


{ int elem,i; bool Encontrado = false;
cout<<"\n Ingrese elemento a buscar en el arreglo "<<":\t";
cin>>elem; for(i=1;i<=n;i++)
{ if(a[i]==elem)
{ Encontrado=true;
cout<<"\n Encontrado\t Posicion :\t"<<i<<"\t\n";
}
}
if(Encontrado==false)
{ cout<<"\n No Encontrado\t "; cout<<"\n\n";
}
}
void main()
{int A[MAX]; int num;
num=leenum();
ingresadatos(A,num);
cout<<"\n"; mostrar(A,num);
cout<<"\n"; bsecuencial(A,num);
}

B. Bsqueda Binaria

#include<iostream>
#define MAX 100
using namespace
std; int leenum()
{ int num;
do{ cout<<"Ingrese numero de elementos para el arreglo: ";
cin>>num; cout<<"\n";
}while(num<=0 ||
num>MAX); return num;
}
void ingresadatos(int V[MAX], int n)
{ int i;
cout<<"Ingrese elementos para el arreglo ";cout<<"\n";
for(i=1;i<=n;i++)
{ cout<<"Elemento ["<<i<<"]"<<":";cin>>V[i]; }
}
void mostrar(int V[MAX], int n)
{ int i;
cout<<"Los elementos del arreglo son";
cout<<"\n"; for(i=1;i<=n;i++)
{ cout<<"Elemento"<<"["<<i<<"]"<<":\t";cout<<V[i]; }
}

51

void bbinaria(int a[MAX], int n)


{ int elem; int BAJO, ALTO, CENTRAL; BAJO=1; ALTO=n;
cout<<"\n Ingrese elemento a buscar"<<":\t";
cin>>elem; CENTRAL=((BAJO+ALTO)/2);
while ((BAJO<=ALTO) && (a[CENTRAL]!=elem))
{ if(elem<a[CENTRAL])
{ALTO=CENTRAL-1;
CENTRAL=(BAJO+ALTO)/2;
}
else{
BAJO=CENTRAL+1;
CENTRAL=(BAJO+ALTO)/2;
}
}

if(elem==a[CENTRAL])
{ cout<<"\n ENCONTRADO \n";
cout<<"\n a["<<CENTRAL<<"] = "<<a[CENTRAL]; cout<<"\n";
}
else
cout<<"\n NO ENCONTRADO \n ";
}
void main()
{int A[MAX]; int num;
num=leenum();
ingresadatos(A,num);
cout<<"\n"; mostrar(A,num);
cout<<"\n"; bbinaria(A,num);
}

8.3 Ordenacin de Arreglos Unidimensionales


Permite comparar elementos e intercambiar posiciones, ya sea en forma ascendente o
descendente.

//Ordenacion por Burbuja


#include<iostream>
#define MAX 100 using
namespace std;
//Se entiende que se realizan los procedimientos de lectura de datos
void burbuja(int a[MAX], int n)
{ int i,j,temp;
for(i=0;i<n-1;i++)
for(j=n-1;j>=i+1;j--)
if (a[j]<a[j-1])
{ temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
void main()
{int A[MAX];
int num;
num=leenum();
ingresadatos(A,num);
cout<<"\n\n"; burbuja(A,num);
mostrar(A,num);
}

52

Ejemplos:
1. Elaborar un programa que dado dos arreglos numricos A y B de n1 y n2 elementos
respectivamente, guarde en un tercer arreglo C los elementos que estn en A pero no estn
en B. Ejemplo:
A B C

5 15 5
8 9 12
12 8 2
6 6
9 45
2 22
7

n1=6 n2=7 elem=3

Solucin:

#include<iostream>
#define MAX 100 using
namespace std;
void ingresadatos(int V[MAX], int n,char
titu[20]) { int i;
cout<<"Ingrese elementos para el arreglo "<<titu;cout<<"\n";
for(i=0;i<=n-1;i++)
{ cout<<"Elemento ["<<i<<"]"<<":";
cin>>V[i];
}
}

int separacion(int VA[MAX],int na,int VB[MAX],int nb,int VC[MAX])


{ int i,j;
int k=0, ban=0;
//busqueda de arreglos
for(i=0;i<na;i++)
{for(j=0;j<nb;j++)
if(VA[i]==VB[j])
{ ban=1;
break;
}

if(ban==0)
{ VC[k]=VA[i];
k++;
}
else
ban=0;
}
return k;
}
void mostrar(int V[MAX], int n, char titu[20])
{ int i;
cout<<"Los elementos del arreglo
"<<titu; cout<<" son:"; cout<<"\n";

53

for(i=0;i<=n-1;i++)
{ cout<<"Elemento"<<"["<<i<<"]"<<":\t";
cout<<V[i]; cout<<"\n";
}
}
void main()
{ int A[MAX],B[MAX],C[MAX];
int na,nb,elem;
na=leenum();
ingresadatos(A,na,"Arreglo
A"); nb=leenum();
ingresadatos(B,nb,"Arreglo B");
cout<<"\n"; mostrar(A,na,"Arreglo A");
cout<<"\n"; mostrar(B,nb,"Arreglo B");
cout<<"\n"; elem=separacion(A,na,B,nb,C);
mostrar(C,elem,"Arreglo C");
}

2. Elaborar un programa que dado dos arreglos numricos A y B de n1 y n2 elementos


respectivamente, guarde en un tercer arreglo C los elementos que estn en A y en B.
Ejemplo:
A B C

5 15 8
8 9 6
12 8 9
6 6
9 45
2 22
7

n1=6 n2=7 elem=3


Solucin:
#include<iostream>
#define MAX 100 using
namespace std;

void ingresadatos(int V[MAX], int n,char titu[20])


{ int i;
cout<<"Ingrese elementos para el arreglo
"<<titu;cout<<"\n"; for(i=0;i<=n-1;i++)
{ cout<<"Elemento ["<<i<<"]"<<":"; cin>>V[i]; }
}
int interseccion(int VA[MAX],int na,int VB[MAX],int nb,int VC[MAX])
{ int i,j; int
k=0;
//busqueda de arreglos
for(i=0;i<na;i++)
{ for(j=0;j<nb;j++)
if(VA[i]==VB[j])
{ VC[k]=VA[i];
k++;
}
}
return k;
}

54

void mostrar(int V[MAX], int n, char titu[20])


{ int i;
cout<<"Los elementos del arreglo "<<titu;cout<<" son:";
cout<<"\n"; for(i=0;i<=n-1;i++)
{ cout<<"Elemento"<<"["<<i<<"]"<<":\t";
cout<<V[i]; cout<<"\n";
}
}
void main()
{ int A[MAX],B[MAX],C[MAX];
int na,nb,elem;
na=leenum();
ingresadatos(A,na,"Arreglo
A"); nb=leenum();
ingresadatos(B,nb,"Arreglo B"); cout<<"\n";
mostrar(A,na,"Arreglo A"); cout<<"\n";
mostrar(B,nb,"Arreglo B"); cout<<"\n";
elem=interseccion(A,na,B,nb,C);
mostrar(C,elem,"Arreglo C");
}

Actividades
1. Elaborar un programa dado las notas de 35 alumnos, se debe reportar la nota mas alta,
la nota mas baja y el promedio de notas ingresadas.
2. Elaborar un programa para que se ingresen los sgtes. valores del arreglo mostrado, sume
el valor en la posicin 0 con el valor en la posicin 3 y luego multiplicar por el valor en la
posicin 5.
Posicion 0 1 2 3 4 5
ARRAY 10.6 3.4 9 2.3 5 4.5

3. Leer las edades de n personas y reportar:


a. Cuantas edades son menores a 10.
b. Cuantas edades son mayores iguales a 10 y menores a 20.
c. Cuantas edades son mayores iguales a 20 y menores a 30.
d. Cuantas edades son mayores iguales a 30 y menores a 40.
e. Cuantas edades son mayores iguales a 40 y menores a 50.
4. Ingresar n pesos (kg.) de personas a un arreglo, insertar un nuevo peso de una persona
en la posicin 4.
5. Aadir dos elementos al final del arreglo, modificando el algoritmo de aadir un elemento
al final.
6. Dado un arreglo de tamao 100, y de n= 10 elementos, eliminar el elemento de la posicin
6 e insertar el valor de 50 en una posicin cualquiera.
7. Dado un arreglo de n elementos, aadir un elemento al final y luego eliminar el segundo
elemento de todo el arreglo.
8. Dado un arreglo de n elementos, buscar un elemento y solo si se encontr, indicar la
posicin encontrada y aadir el valor encontrado al final del arreglo, y mostrar.
9. Crear un mdulo de programa donde se ingrese como algunos de sus argumentos dos
Arreglos A y B, con n y m elementos respectivamente, y sumar los valores de las
posiciones impares de A con los valores de las posiciones pares de B.

55

10. Crear un mdulo de programa donde se eliminen los elementos repetidos en un Arreglo
de n elementos.
11. Buscar un elemento en un arreglo de n elementos, utilizando bsqueda binaria
(previamente ordenado con el mtodo de la burbuja y sin que exista elementos repetidos),
y eliminarlo.

8.4 Arreglos Bidimensionales

Tambin llamado matrices, es un conjunto finito y ordenado de elementos de un mismo tipo de


dato. La definicin de un arreglo es como sigue:
TipoDato NombreMatriz[nfilas][ncolumnas]
Ejm. Entero M[4][5]
columnas

0 1 2 3 4
Filas 0
1
2
3

Para declarar un arreglo bidimensional en lenguaje C++ se sigue la siguiente sintaxis:


Tipo de Dato Nombre del arreglo [# filas] [# columnas];

Lectura y Presentacin de Datos en una Matriz:


#include<iostream>
#define MAX 100
using namespace
std; int leenum()
{int num;
do{ cin>>num; cout<<"\n";
}while(num<=0 || num>MAX);
return num;
}
void ingresadatos(int M[MAX][MAX], int nf,int
nc) {int i,j;
cout<<"Ingrese elementos para la matriz "; cout<<"\n";
for(i=0;i<=nf-1;i++)
for(j=0;j<=nc-1;j++)
{ cout<<"Elemento ["<<i<<"]"<<"["<<j<<"]"<<":";
cin>>M[i][j];
}
}
void mostrar(int M[MAX][MAX], int nf, int
nc) {int i,j;
cout<<"Los elementos de la matriz son";
cout<<"\n"; for(i=0;i<=nf-1;i++)
{for(j=0;j<=nc-1;j++)
{ cout<<M[i][j]; cout<<"\t";
}
cout<<"\n";
}
}

56

void main()
{ int B[MAX][MAX]; int nf,nc;
cout<<"Ingrese numero de filas ";
nf=leenum();
cout<<"Ingrese numero de columnas ";
nc=leenum();
ingresadatos(B,nf,nc); cout<<"\n";
mostrar(B,nf,nc); cout<<"\n";
}

//El mayor elemento de una matriz


.. //Se entiende que se realizan los procedimientos de lectura de datos

void mayor(int M[MAX][MAX], int nf, int nc)


{ int i,j,mayor;
mayor =M[0][0];
for(i=0;i<=nf-1;i++)
for(j=0;j<=nc-1;j++)
if (M[i][j]>mayor)
mayor=M[i][j];
cout<<"\n"; cout<<"El nmero mayor es: "<<mayor; cout<<"\n";
}
void main()
{ int B[MAX][MAX];
int nf,nc;
cout<<"Ingrese numero de filas ";
nf=leenum();
cout<<"Ingrese numero de columnas ";
nc=leenum();
ingresadatos(B,nf,nc);
cout<<"\n"; mostrar(B,nf,nc);
cout<<"\n"; mayor(B,nf,nc);
}

//Diagonal Principal y Diagonales de una matriz


.. //Se entiende que se realizan los procedimientos de lectura de datos

void diagonal_principal(int M[MAX][MAX], int nf, int


nc) {int i,j;
if(nf==nc)
{ for(i=0;i<=nf-1;i++)
{ for(j=0;j<=nc-
1;j++) if(i==j)
{ cout<<"\n"; cout<<M[i][j]<<"\n";
}
else
cout<<" ";
cout<<"\n";
}
}
else
{cout<<"Columnas y filas deben ser iguales"; cout<<"\n\n"; }
}

57

void diagonalsecundaria(int M[MAX][MAX], int nf, int


nc) { int i,j,k;
k=nc-1;
if(nf==nc)
{ for(i=0;i<nf;i++)
{for(j=0;j<nc;j++)
if(j == k)
{ cout<<M[i][j]; }
else
cout<<"\t";
k--;
cout<<"\n";
}
}
else
{ cout<<"Para la Diagonales: columnas y filas deben ser
iguales"; cout<<"\n\n";
}
}
void diagonales(int M[MAX][MAX], int nf, int nc)
{ int i,j,k;
k=nc-1;
if(nf==nc)
{for(i=0;i<=nf-1;i++)
{ for(j=0;j<=nc-1;j++)
if(i==j || j==k)
{ cout<<"\n"; cout<<M[i][j]<<"\n"; }
else
{cout<<" ";}
k--;
cout<<"\n";
}
}
else
{ cout<<"Columnas y filas deben ser iguales"; cout<<"\n\n"; }
}

void main()
{ int B[MAX][MAX]; int nf,nc;

cout<<"Ingrese numero de filas ";


nf=leenum();

cout<<"Ingrese numero de columnas ";


nc=leenum();

ingresadatos(B,nf,nc); cout<<"\n";
mostrar(B,nf,nc); cout<<"\n";

cout<<"Los elementos de la diagonal Principal:


"<<"\n"; diagonal_principal(B,nf,nc); cout<<"\n";

cout<<"Los elementos de las diagonales :


"<<"\n"; diagonales(B,nf,nc); cout<<"\n";
}

58

8.5 Actualizacin de Arreglos Bidimensionales

//Insertar fila y columna de una matriz


//Se entiende que se realizan los procedimientos de lectura de datos

int insertar_fila(int M[MAX][MAX], int nf, int


nc) { int i,j,pos;
do{ cout<<"Ingrese posicion para insertar fila: ";
cin>>pos;
}while(pos<0 || pos>nf);
for(i=nf-1;i>=pos;i--)
for(j=0;j<=nc-1;j++)
M[i+1][j]=M[i][j];
for(j=0;j<=nc-1;j++)
{ cout<<"M["<<pos<<"]"<<"["<<j<<"] : ";
cin>>M[pos][j];
}
nf++;
return nf;
}
int insertar_columna(int M[MAX][MAX], int nf, int
nc) {int i,j,pos;
do{ cout<<"Ingrese posicion para insertar columna: ";
cin>>pos;
}while(pos<0 || pos>nc);
for(i=0;i<=nf-1;i++)
for(j=nc-1;j>=pos;j--)
M[i][j+1]=M[i][j];
for(i=0;i<=nf-1;i++)
{ cout<<"M["<<i<<"]"<<"["<<pos<<"] : ";
cin>>M[i][pos];
}
nc++;
return nc;
}
void main()
{ int B[MAX][MAX];
int nf,nc,fil,col;

cout<<"Ingrese numero de filas ";


nf=leenum();
cout<<"Ingrese numero de columnas ";
nc=leenum();
ingresadatos(B,nf,nc); cout<<"\n";

mostrar(B,nf,nc); cout<<"\n";

cout<<"Inserta fila: "<<"\n";


fil=insertar_fila(B,nf,nc); cout<<"\n";

cout<<"Matriz Inicial con fila insertada";


mostrar(B,fil,nc); cout<<"\n";

cout<<"Inserta columna: "<<"\n";


col=insertar_columna(B,nf,nc); cout<<"\n";

cout<<"Matriz Inicial con columna


insertada"; mostrar(B,nf,col); cout<<"\n";
}

59

//Borrar fila y columna de una matriz


.. //Se entiende que se realizan los procedimientos de lectura de datos

int borrar_fila(int M[MAX][MAX], int nf, int


nc) { int i,j,pos;
do{ cout<<"Ingrese posicion para borrar fila:
"; cin>>pos;
}while(pos<0 || pos>=nf);

for(i=pos;i<=nf-1;i++)
for(j=0;j<=nc-1;j++)
M[i][j]=M[i+1][j];
nf--;
return nf;
}

int borrar_columna(int M[MAX][MAX], int nf, int


nc) { int i,j,pos;
do{ cout<<"Ingrese posicion para insertar columna:
"; cin>>pos;
}while(pos<0 || pos>=nc);

for(i=0;i<=nf-1;i++)
for(j=pos;j<=nc-1;j++)
M[i][j]=M[i][j+1];
nc--;
return nc;
}

void main()
{
int B[MAX][MAX] nf,nc,fil,col;

cout<<"Ingrese numero de filas ";


nf=leenum();

cout<<"Ingrese numero de columnas ";


nc=leenum();
ingresadatos(B,nf,nc); cout<<"\n";

mostrar(B,nf,nc); cout<<"\n";

cout<<"Elimina fila: "<<"\n";


fil=borrar_fila(B,nf,nc); cout<<"\n";

cout<<"Matriz Inicial con fila eliminada";


mostrar(B,fil,nc); cout<<"\n";

cout<<"Elimina columna: "<<"\n";


col=borrar_columna(B,nf,nc); cout<<"\n";

cout<<"Matriz Inicial con columna


eliminada"; mostrar(B,nf,col); cout<<"\n";
}

60

8.6 Aplicacin de Arreglos Bidimensionales

1. Imprimir lo nmeros que rodean a un nmero X, la primera vez que se encuentra en la Matriz
incluido el nmero X:

4 3 7 9 3 7 9
M 1 4 5 8 4 5 8
2 5 4 1 5 4 1
7 -6 3 4

Solucin:
.. //Se entiende que se realizan los procedimientos de lectura de datos

void rodean(int M[MAX][MAX], int nf, int nc,int


n) {int i,j;
int f,c;
int ban=0;
for(i=0;i<=nf-1;i++)
for(j=0;j<=nc-1;j++)
if( M[i][j]==n && ban==0)
{ f=i; c=j;
ban=1;
}
if (ban==1)
{cout<<"Los Numeros que rodean son:
\n"; for(i=0;i<=nf-1;i++)
{for(j=0;j<=nc-1;j++)
if((i>=f-1 && i<=f+1) && (j>=c-1 &&
j<=c+1)) cout<<M[i][j]<<"\t";
else
cout<<" ";

cout<<"\n";
}
}
else
cout<<"El numero ingresado no existe";
}
void main()
{int B[MAX][MAX];
int nf,nc,num;

cout<<"Ingrese numero de filas ";


nf=leenum();

cout<<"Ingrese numero de columnas ";


nc=leenum();

ingresadatos(B,nf,nc); cout<<"\n";

cout<<"Ingrese el numero a buscar ";


cin>>num;
rodean(B,nf,nc,num); cout<<"\n";
}

61

2. Ingresa un Numero N y luego imprime fila y columna N de la matriz, si solo existe la fila N, solo
se imprime dicha fila.

0 1 2 3 0 1 2 3

0 3 5 2 1 0 1
6 -5 7 9 1 9
1
8 1 4 -3 N=3,se -3
2 imprimela 2
columna3
0 1 2 3 0 1 2 3

0 3 5 2 1 0 2
6 -5 7 9 1 7
1
8 1 4 -3 N=2,se 8 1 4 -3
2 imprimelafila2 2
ylacolumna2

Solucin:
.. //Se entiende que se realizan los procedimientos de lectura de datos

void seleccion(int M[MAX][MAX], int nf, int nc)


{ int i,j,n;
do{ cout<<"Ingrese valor de N: ";
cin>>n;
}while(n<0 || (n>=nf && n>=nc));

cout<<"\n\n\n";
for(i=0;i<=nf-1;i++)
{ for(j=0;j<=nc-1;j++)
{
if(i==n || j==n)
cout<<M[i][j]<<"\t";
else
cout<<" ";
}
cout<<"\n";
}
}
void main()
{int B[MAX][MAX];
int nf,nc;

cout<<"Ingrese N filas ";


nf=leenum();

cout<<"Ingrese N columnas ";


nc=leenum();

ingresadatos(B,nf,nc);cout<<"\n";

seleccion(B,nf,nc);cout<<"\n";
}

62

3. Invertir Diagonal Principal de una Matriz:

6 8 1 4 8 1
M7 2 5 M7 2 5
1 5 4 1 5 6

.. //Se entiende que se realizan los procedimientos de lectura de datos

void mostrar(int M[MAX][MAX], int nf, int nc)


{ int i,j;
cout<<"Los elementos de la Matriz
son"; cout<<"\n";
for(i=0;i<=nf-1;i++)
{ for(j=0;j<=nc-1;j++)
{ cout<<M[i][j];cout<<"\t";
}
cout<<"\n";
}
}

void invierte_principal(int M[MAX][MAX], int nf, int nc)


{ int i,k,temp;
if( nf==nc )
{ k=nf-1;
for(i=0;i<nf/2;i++)
{ temp=M[i][i];
M[i][i]=M[k][k];
M[k][k]=temp;
k--;
}
}
else cout<<"No es Posible";
}
void main()
{ int B[MAX][MAX];
int nf,nc;
cout<<"Ingrese numero de filas ";
nf=leenum();
cout<<"Ingrese numero de columnas ";
nc=leenum();
ingresadatos(B,nf,nc); cout<<"\n";
mostrar(B,nf,nc); cout<<"\n";
cout<<"Diagonal Principal Invertida";
invierte_principal(B,nf,nc);
mostrar(B,nf,nc); cout<<"\n";
}

4. Intercambiar Filas por Columnas (Matriz Transpuesta)

6 8 4 6 7 1 9
M 7 2 5 M 8 2 5 7
1 5 3 4 5 3 -1
9 7 -1

63

//Se entiende que se realizan los procedimientos de lectura de datos

void mostrar(int M[MAX][MAX], int nf, int nc)


{
int i,j;
cout<<"Los elementos de la Matriz
son"; cout<<"\n";
for(i=0;i<=nf-1;i++)
{ for(j=0;j<=nc-1;j++)
{ cout<<M[i][j];cout<<"\t";
}
cout<<"\n";
}
}
void transpuesta(int M[MAX][MAX], int nf, int nc,int T[MAX][MAX])
{ int i,j; for(i=0;i<=nf-
1;i++)
for(j=0;j<=nc-1;j++)
{ T[j][i]=M[i][j];
}
}
void main()
{ int B[MAX][MAX],T[MAX][MAX];
int nf,nc,ft,ct,temp;

cout<<"Ingrese numero de filas ";


nf=leenum();
cout<<"Ingrese numero de columnas ";
nc=leenum();

ingresadatos(B,nf,nc); cout<<"\n";
mostrar(B,nf,nc); cout<<"\n";

cout<<"Matriz Transpuesta";
transpuesta(B,nf,nc,T);
ft=nf;
ct=nc;
temp=ft;
ft=ct;
ct=temp;
mostrar(T,ft,ct);
cout<<"\n";
}

Actividades
Elaborar el programa en C ++ para:

1. Dada una matriz de n filas y m columnas, elaborar los mdulos de programa para: indicar
el menor elemento y la(s) posicin(es) en que se encuentra y para hacer rotar a la matriz
3 veces (intercambiar filas y columnas).
2. Realizar el ordenamiento descendente de una fila en un arreglo bidimensional.
3. Realizar el ordenamiento descendente de una columna en un arreglo bidimensional.

4. Escriba el mdulo de programa para invertir la diagonal secundaria en un arreglo


bidimensional.

64

También podría gustarte