Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructuradedatos
Estructuradedatos
ALGORITMOS Y ESTRUCTURA
DE DATOS I
TINS
INGENIERA INDUSTRIAL, INGENIERA DE SISTEMAS
Lima - Per
Vicerrectorado de Investigacin
Diseo y Diagramacin:
Soporte acadmico:
Instituto de Investigacin
Produccin:
PRESENTACIN
El presente texto elaborado en el marco de desarrollo de la Ingeniera, es
un material de ayuda instruccional, para las carreras de Ingeniera de: Sistemas,
Industrial, Electrnica, Mecatrnica y Telecomunicaciones, para la Asignatura de
Algoritmos y Estructura de Datos.
Plasma la iniciativa institucional de innovacin de la
enseanza-aprendizaje educativo universitario, que en acelerada continuidad
promueve la produccin de materiales educativos, actualizados en concordancia a
las exigencias de estos tiempos.
Esta primera edicin apropiadamente recopilada, de diversas fuentes
bibliogrficas, de uso frecuente en la enseanza de Algoritmos, est ordenada en
funcin del syllabus de la Asignatura, arriba mencionada.
La conformacin del texto ha sido posible gracias al esfuerzo y dedicacin
acadmica del Profesor Ing. Carlos Parra Terrazos; contiene seis captulos, cuyas
descripciones genricas son como sigue:
Captulo 1: Conceptos fundamentales. Antes de introducirnos en el
contenido de este manual ser necesario conocer los conceptos bsicos que nos
ayudaran a tener un panorama general y entender con mayor facilidad los
siguientes captulos. Aprenderemos a diferenciar un algoritmo de un programa y
de un lenguaje de programacin, as como conocer la importancia de los tipos de
datos y los datos para la programacin.
Captulo 2: Estructura general de un programa. En este captulo
encontraremos el concepto de Programa, las partes que lo conforman e
introduciremos al estudiante en el proceso de la programacin a partir de la
presentacin de programas en lenguaje C. Tambin se detallarn las instrucciones
y sus tipos.
Captulo 3: Estructuras de control. Durante un programa existen
acciones que cambian el flujo de control de un programa estas estructuras bsicas
de acuerdo a la programacin estructurada son: La estructura secuencial, la
estructura selectiva o condicional y la estructura repetitiva o de iteracin;
necesarias para poder disear algoritmos de cualquier grado de dificultad.
Vicerrectorado de Investigacin
NDICE
CAPTULO V: RECURSIVIDAD
5.1 RECURSIVIDAD............................................................................... 103
5.2 CARACTERSTICAS........................................................................ 103
5.3 VENTAJAS Y DESVENTAJAS ....................................................... 104
5.4 PELIGROS EN LA RECURSIVIDAD.............................................. 104
5.5 TIPOS DE ALGORITMOS RECURSIVOS...................................... 105
5.6 VERIFICACIN DE FUNCIONES RECURSIVAS ........................ 107
5.7 LA PILA DE RECURSIN ............................................................... 108
5.8 LLAMADA A UNA FUNCIN RECURSIVA ................................ 108
5.9 PARTE PRCTICA........................................................................... 109
PROBLEMAS PROPUESTOS .......................................................... 109
LABORATORIO N 5........................................................................ 110
CAPTULO VI: DATOS ESTRUCTURADOS
6.1 TIPOS ................................................................................................. 113
6.2 ARREGLOS UNIDIMENSIONALES, DECLARACION Y
ACCESO............................................................................................. 114
6.3 ARREGLOS BIDIMENSIONALES, DECLARACION Y ACCESO117
6.4 REGISTROS....................................................................................... 122
6.4.1 CONCEPTO ......................................................................... 122
6.4.2 DECLARACION Y ACCESO ............................................. 122
6.4.3 ARREGLO DE REGISTROS .............................................. 124
6.5 CADENAS DE CARACTRES ........................................................ 125
6.6 PARTE PRCTICA........................................................................... 129
PROBLEMAS PROPUESTOS: ......................................................... 129
LABORATORIO N 6........................................................................ 130
BIBLIOGRAFA .......................................................................................... 1389
DISTRIBUCIN TEMTICA
Clase
N
TEMA
SEMANA
Conceptos Fundamentales
Tipo de datos
Estructuras de control
Revisin Nivelacin
10
EXAMEN
PARCIAL
10
11
Subprogramacin
11
12
12
13
Recursividad
13
14
Datos Estructurados
14
Clase
N
TEMA
SEMANA
15
15
16
Registros
16
17
Cadena de caracteres
17
18
ndices
18
19
Nivelacin Recuperacin
19
20
EXAMEN FINAL
20
21
EXAMEN SUSTITUTORIO
21
10
1.1
CONCEPTOS DE ALGORITMO
COMPONENTES DE UN ALGORITMO
Entrada
:
Salida
:
Procesos :
CARACTERSTICAS DE UN ALGORITMO
PRECISIN
EFICIENCIA
Tiempo de ejecucin.
Requerimiento de memoria.
EJEMPLO N 1
Un cliente efecta un pedido a una compaa, La compaa
verifica en su banco de datos la ficha del cliente, si el cliente
es solvente entonces la compaa acepta el pedido; en caso
11
EJEMPLO N 2
1.
2.
3.
4.
b)
CONCEPTO DE SOFTWARE
c)
LENGUAJES DE PROGRAMACIN
Son aquellos lenguajes que se utilizan para realizar
algoritmos interpretables por la computadora.
Caractersticas imprescindibles Estructura de Control.
Programacin Modular
(funciones).
Los principales tipos de lenguajes utilizados antes y en la
actualidad son tres:
12
1.2
Lenguaje mquina.
Lenguaje de bajo nivel (ensamblador).
Lenguajes de alto nivel: C, C++, Visual Basic, Java,
Pascal, Prolog.
13
EJEMPLO N 3
Imprimir la hipotenusa, teniendo los lados de un triangulo
rectngulo.
14
EJEMPLO N 4
Determine a los nmeros menores que 90 y mltiplos de 9, as
como su sumatoria.
Definicin del
Definicindel
problema
Problem
a
Especificacione
s de entrada
Especificacione
s de salida
Im prim ir
m ltiplos de 9
y su sum a
siem pre y
cuando sea
m enor que 90
TO TAL = 0
NUM = 9
LIM ITE = 90
NUM , TO TAL
15
Documentacin externa:
Manuales, estructura y especificaciones del programa, historia de
las modificaciones, etc.
FASE N 06: MANTENIMIENTO
1.3
HERRAMIENTAS DE PROGRAMACIN
Son aquellas que permiten realizar aplicativos, programas, rutinas,
utilitarios y sistemas para que la parte fsica del computador u
ordenador, funcione y pueda producir resultados.
16
Lenguaje natural.
Organigramas.
Diagramas Nassi Shneiderman (N - S).
Pseudocdigo.
Otros
LENGUAJE NATURAL:
Es un lenguaje utilizado para describir los pasos de cmo
realizamos algo, de una forma sencilla.
EJEMPLO N 5
El algoritmo para encontrar las races de una ecuacin de
segundo grado podra describirse as:
x = (-b + b2 4ac) / (2a)
1. Definir los coeficientes de la ecuacin de segundo grado: a,
b y c.
2. Determinar el valor del discriminante: b2 4ac.
3. Si el discriminante es cero slo hay una solucin: -b/ (2a).
ORGANIGRAMAS:
Los organigramas o diagramas de flujo permiten describir los
algoritmos de forma grafica.
17
18
Entrada y salida de
Datos
Sentencia
Secuencia de
sentencias
Seleccin
Repeticin
Fin
Pseudocdigo
Begin
Diagrama de flujo
Begin
Read
Read x
Write x
Calcular x = y+3
Se escribe en lneas
separadas
Calcular x = y+3
Calcular z = 2*x
IF condicin entonces
Accin 1
ELSE
Accin 2
DO WHILE
Accin 1
End
19
Codificacin del
programa
Programa
fuente
Programa
Objeto
Programa
ejecutable
Montador
(Linker)
Compilador
(Compiler)
1.4
Comprobacin del
programa
Ejecucin del
programa
TIPOS DE DATOS
Un dato es la expresin general que describe los objetos con
los cuales opera la computadora.
Todos los datos tienen un tipo asociado con ellos.
Un dato puede ser un simple carcter, tal como b, un valor
entero tal como 35.
El tipo de dato determina la naturaleza del conjunto de valores
que puede tomar una variable.
DATOS VS INFORMACIN
DATOS
VS
Medidas objetivas de atributos
de entidades.
Cifras/hechos crudos (en
bruto) sin interpretar o analizar.
No son estmulos de accin.
INFORMACIN
- Resultado de haber organizado
o analizado los datos de alguna
manera lgica.
- Reduce la incertidumbre.
- Impulsa a la accin.
20
EJEMPLO N 6
DATOS
35.000 So les
1250 unidades
Jos Perez
Lim a
83.000 D lares.
3800 unidades
.......
P R O C E SA M IE N T O
DE DATOS
IN F O R M A C I N
C lie nte : Jos Perez
Sucursal: Lim a
C o m pras de l m es:
1250 unidades=35.000
So les. ......
CLASIFICACIN
REAL
NUMERICO
ESTANDAR
CHARACTER
LOGICO (BOOLEAN)
DATOS SIMPLES
DEFINIDOS X
EL PROGRAMADOR
TIPO
DE
DATO
ENTERO
ESTATICOS
DATOS
ESTRUCTURADOS
ENUMERATIVO
SUBRANGO
ARRAYS
REGISTRO
ARCHIVO (FICHERO)
CONJUNTO)
CADENA (STRING)
LISTA (PILA/COLA)
DINAMICOS
LISTA ENLAZADA
ARBOL
GRAFO
21
DATOS LGICOS
Permiten
representar
valores
escalares
de
forma numrica, esto
incluye a los nmeros
enteros y los reales.
DATOS ALFANUMRICOS
Es una secuencia de caracteres alfanumricos que permiten
representar valores identificables de forma descriptiva, esto
incluye nombres de personas, direcciones, etc.
Es posible representar nmeros como alfanumricos, pero estos
pierden su propiedad matemtica, es decir no es posible hacer
operaciones con ellos.
Este tipo de datos se representan encerrados entre comillas.
Representacin
Carcter
Enteros
Reales
Tipo
Char
Unsigned
char
Int
Short int
Unsigned int
Long
Unsigned
long
Float
Double
Long double
Longitud
Rango
de byte
1
-128 a 127
1
2
2
2
4
4
4
8
10
22
-32768 a 32767
-32768 a 32767
0 a 65535
-2147483648 a
2147483647
0 a 4294967295
3.4E38
1.7E308
3.4E-4932 a 1.1E+4932
DATOS DE
ENTRADA
DATOS DE
SALIDA
ALGORITMO
NIKLAUS WIRTH
1.5
CONSTANTES
Constantes: Valores que durante la ejecucin de un programa
no cambian su valor.
Ejemplo:
pi = 3.1416
VARIABLES
Definicin 1: Valores que cambiarn durante la ejecucin del
programa.
23
POR SU USO
DE TRABAJO
Variables que recibe el resultado de una operacin
matemtica completa y que se usan normalmente dentro
de un programa.
Ejemplo:
CONTADORES
Se utilizan para llevar el control del nmero de ocasiones
en que se realiza una operacin o se cumple una
condicin. Con los incrementos generalmente de uno en
uno.
Ejemplo:
Suma a + b /c
Cont Cont + 1
Num Num + 2
ACUMULADORES
Forma que toma una variable y que sirve para llevar la
suma acumulativa de una serie de valores que se van
leyendo o calculando progresivamente.
Ejemplo:
IDENTIFICADORES
Para poder reconocer una variable o una constante en la memoria
de la computadora, es necesario darle un nombre con el cual
24
rea pi * radio ^ 2
Los identificadores son: el radio, el rea y la constante es pi.
EXPRESIONES
Se definen como una combinacin de constantes, variables,
smbolos de operacin, parntesis, y nombres de funciones
especiales.
x + (y+10)+ z/2
Significado
Tipo de operandos
Tipo resultado
**
Exponenciacin
Entero o real
Entero o real
Suma
Entero o real
Entero o real
Resta
Entero o real
Entero o real
Multiplicacin
Entero o real
Entero o real
Divisin
Real
Real
Div
Divisin entera
Entero
Entero
Mod
mdulo
Entero
Entero
25
Reglas de prioridad
Operadores de relacin
Significado
Operador
<
>
=
<=
Menor
Mayor
Igual
Menor o igual
>=
<>,!=
Mayor o igual
Distinto
Operadores lgicos
Operador lgico
Expresin lgica
Significado
Not
Not p
Negacin
And
PyQ
Conjuncin
Or
PoQ
disyuncin
Ejemplo:
Not 4 > 5 produce un error ya que el operador no se aplica a 4
Not (4 > 5) produce un valor verdadero.
Ejemplo:
P and Q.
P or Q.
26
FUNCIONES
Las funciones pueden tener cualquier nmero de variables, incluso
cero. Para evaluar una funcin sin variables se debe escribir un par
de parntesis despus de su nombre (por ejemplo fun()). Las
funciones sin variables pueden servir como algoritmos de clculo
que devuelven un valor real.
FUNCIONES MATEMTICAS
1.6
Funcin
Abs(x)
Arctan(x)
Cos(x)
Descripcin
Absoluto
Tangente inversa
Coseno
Exp(x)
Ln(x)
Exponencial
Log neperiano
Log10(x)
Round(x)
Log decimal
Redondeo
Sin(x)
Sqr(x)
Sqrt(x)
Trunc(x)
Seno
Cuadrado
Raz cuadrada
Truncamiento
PARTE PRCTICA
PROBLEMAS PROPUESTOS
1.
2.
3.
4.
5.
6.
7.
8.
9.
28
12 pulgadas
1 yarda
3 pies
1 pulgada =
2.54 centmetros
1 metro
100 centmetros
29
edadPmontoT
edadT
30
LABORATORIO N 1
31
32
#include <iostream.h>
#include <conio.h>
Int main( )
{
float base, altura, area, permetro;
cout<<"Base: "; cin>>base;
cout<<"Altura: "; cin>>altura;
rea = base * altura ;
permetro = 2 * (base + altura) ;
cout<<"El Area es :" << area << endl ;
cout<<"El permetro es : " << permetro << endl;
getch();
return 0;
}
33
34
35
36
CONCEPTO DE PROGRAMA
3.
4.
5.
6.
ENTRADA
PROGRAMA
Algoritmo de resolucin
SALIDA
37
TIPOS DE INSTRUCCIN
1.
2.
3.
4.
5.
6.
Instrucciones de asignacin
38
A 12
A contiene 12
BA
B contiene 12
CB
C contiene 12
A 10
2.
B 20
3.
AUX 10
4.
AB
5.
B AUX;
a)
b)
Read A, B, C
Esta instruccin
lee datos de
un
dispositivos
de entrada
A100
B200
C300
Esta instruccin
se escribe en
un
dispositivo
de salida
Write A, B, C
39
2.1
ESTRUCTURA DE UN PROGRAMA EN C.
40
EJEMPLO N 7
/* Comentarios de un prrafo completo comprendidos entre
/*.....*/,
Sirven para aclarar el programa o una parte del programa */
// Comentarios de 1 sola lnea.
// Zona de ficheros de cabecera de las libreras.
Ejemplo:
/* El primer programa en C */
#include <stdio.h>
int main( void )
{ printf(Bienvenido a C!" );
return 0;
EJEMPLO N 8
/* Programa de suma */
#include <stdio.h>
int main()
{
int entero1;
int entero2;
int suma;
/* indicador */
/* lee un entero */
/* indicador */
/* lee un entero */
41
io s t r e a m .h
F lu jo d e e n t r a d a /s a lid a
lim its .h
L im it e s e n te r o s d e f in id o s e im p la n t a d o s
m a t h .h
F u n c io n e s m a te m tic a s
s t d io .h
E n t r a d a /S a lid a
s t d lib .h
F u n c io n e s d e u tile r a
VARIABLE GLOBAL
BUCLES
BUCLE INFINITO
INICIO
Suma = 0
Leer N
Suma
Suma + N
Es un segmento de un
algoritmo o programa, cuyas
instrucciones se repiten un
Escribir suma
nmero determinado de veces
mientras se cumple una
determinada condicin (existe o es verdadera la condicin)
42
Decisin
Cuerpo de bucle
Salida de bucle.
TIPOS BUCLES
Bucles Independientes
in ic io
IN IC IO
B u c le A
B u c le B
B u c le C
F IN
fin
Bucles Cruzados
inicio
fin
43
2.2
ESTRUCTURA DE ALGORITMO
2.3
CONTADORES, ACUMULADORES.
CONTADORES
DEFINICIN 1: Se utilizan para llevar el control del nmero de
ocasiones en que se realiza una operacin o se cumple una
condicin. Con los incrementos generalmente de uno en uno.
DEFINICIN 2: Un contador es una variable cuyo valor se
incrementa o decrementa en una cantidad constante cada vez
que se produce un determinado suceso o accin. Los
contadores se utilizan con la finalidad de contar sucesos o
acciones internas de un bucle; deben realizar una operacin
de inicializacin y posteriormente las sucesivas de incremento
o decremento del mismo.
44
EJEMPLO N 9
BEGIN
eCon0
DO WHILE eCon <10
READ eR, eT
eSuneR+eT
eConeCon+1
END DO
END
ACUMULADORES
DEFINICIN 1: Forma que toma una variable y que sirve para
llevar la suma acumulativa de una serie de valores que se van
leyendo o calculando progresivamente
o
o
Ejemplos:
45
EJEMPLO N10:
BEGIN
eCon0,eAcu0
DO WHILE eCon<=10
READ eNume
eAcueAcu+eNume
eConeCon+1
ENDDO
WRITE eAcum
END
46
2.4
PARTE PRCTICA
PROBLEMAS PROPUESTOS
1.-
2.-
3.-
4.-
5.-
8+7*3+4*6
-2^3
(33 + 3 * 4) / 5
2^2 *3
3+2 * (18-4^2)
16*6-3*2
47
6.-
B toma el valor de A
C toma el valor de B
A toma el valor de C
8.-
9.-
10.-
11.
12.
14.
15.
16.
17.
18.
49
#include <nombre_archivo_cabecera>
50
1.
2.
3.
4.
5.
6.
7.
8.
//Programa 01
//propsito: Estructura Secuencial
#include <iostream.h>
#include <conio.h>
int main()
{
// muestra mensaje endl permite un salto de lnea
cout <<"Bienvenidos al primer programa " <<endl;
9.
10.
11.
12.
51
VARIABLES
Es un espacio en la memoria de la computadora que permite
almacenar temporalmente un dato durante la ejecucin de un
proceso, su contenido puede cambiar durante la ejecucin del
programa.
Un nombre.
Un tipo de dato asociado.
Un valor inicial.
Una direccin de memoria.
CONSTANTES
Una constante es un dato numrico o alfanumrico que no cambia
durante la ejecucin del programa.
52
LOS COMENTARIOS
Con fines de documentacin se pueden aadir comentarios a un
programa. Los comentarios no generan cdigo mquina sino que
son ignorados por el compilador.
53
Donde:
Pantall
Cout
<<
Variable
Teclad
Cin
>>
Variable
Salida de constantes:
Cout << constantes;
Salida de variables:
Cout << variable;
Notas:
La salida de cout se puede concatenar para hacer la salida de
55
SECUENCIA DE ESCAPE
Las secuencias de escape proporcionan un determinado
significado al enviar ciertos caracteres especiales a la pantalla, a un
archivo de disco o a la impresora. Todas las secuencias de escape
comienzan con la barra invertida \.
Secuencia de
escape
\n
\r
\t
\a
\`
\
\\
Descripcin
56
Notas:
La entrada con cin se puede concatenar para poder hacer la
57
++
--
Accin
Suma 1 a su operando
Resta 1 a su operando
Forma equivalente 1
Forma equivalente 2
n = n + 1;
n = n 1;
n ++;
n --;
++ n;
-- n;
58
3.1
PROGRAMACIN ESTRUCTURADA
DEFINICIN
La programacin estructurada es una forma de programar de
forma clara, para ello utiliza nicamente tres estructuras:
secuencial, selectiva simple e iterativa; siendo innecesario y
no permitindose el uso de la instruccin o instrucciones de
transferencia incondicional (GOTO).
DESVENTAJAS DE LA PROGRAMACIN
ESTRUCTURADA
-
3.2
TIPOS
SECUENCIAL
SELECTIVA SIMPLE
ITERACIN
3.2.1 SECUENCIAL
La estructura secuencial se refiere a la ejecucin de una
secuencia de instrucciones en el orden en que aparecen, de
forma que cada instruccin se ejecuta exactamente una vez.
EJEMPLO N 11
BEGIN
REAL base, altura, rea, permetro
READ base, altura
rea base*altura
permetro 2*(base+altura)
WRITE rea, permetro
END
Esta secuencia de instrucciones permuta los valores de x e y, con
ayuda de una variable auxiliar, intermedia.
1
2
3
60
ESTRUCTURA
DE
SELECCION
ESTRUCTURA
SELECTIVA DOBLE
ESTRUCTURA
SELECTIVA MULTIPLE
DIAGRAMA DE FLUJO:
condicin
falsa
verdadera
accion S1
61
SINTAXIS:
SINTAXIS EN ESPAOL
SI <condicin>
<accin S1>
FIN _ SI
SINTAXIS EN INGLES
IF <condicin>
<accin S1>
ENDIF
EJEMPLO N 12:
PSEUDOCDIGO:
62
EN C++:
Segn una calificacin imprimir si es aprobada
#include <stdio.h>
#include <conio.h>
int main ()
{
float Cal;
clrscr();
printf ("Introduzca la calificacin: ");
scanf ("%f", &Cal);
if ( Cal >= 11 )
printf("Aprob.");
return 0;
}
3.2.3 SELECTIVA DOBLE ( SI - SINO)
La estructura de seleccin doble permite seleccionar una
ruta de dos rutas posibles en base a la verdad o falsedad de
una condicin.
DIAGRAMA DE FLUJO
si
Condicin?
accin S11
no
accin S21
63
SINTAXIS:
PSEUDOCODIGO EN
ESPAOL
PSEUDOCODIGO EN
INGLES
SI
<condicion>
<accion S11>
<accion S12>
<accion S2n>
SI_NO
<accin 21>
<accin 22>
<accin S1n>
FIN_SI
IF <condicin>
<accin S11>
<accin S12>
<accin S2n>
ELSE
<accin 21>
<accin 22>
<accin S1n>
ENDIF
EJEMPLO N 13
#include <stdio.h>
#include <conio.h>
int main()
64
{
int num;
clrscr();
printf("Introducir un nmero:\n");
scanf("%d",&num);
if ( num % 2 == 0 )
printf("%d es par.",num);
else
printf("%d es impar.",num);
return 0;
}
65
EJEMPLO N 15
#include<iostream.h>
int main ( )
{
char codigo;
cout << "Introduzca un cdigo especificado: ";
cin >> codigo;
if (codigo == 'S' )
cout << "El componente tiene calificacin de exploracin
espacial . ";
else if (codigo == M)
cout << "El componente tiene calificacin de militar. ";
else if (codigo == C)
cout << "El componente tiene calificacin de comercial. ";
else if (codigo == 'J' )
cout << "El componente tiene calificacin de juguete. ";
else
cout << "Se insert un cdigo invalido. ";
cout << endl;
getch();
return 0;
}
66
Accin
S1
Accin
S2
Condicin
3
Accin
S3
Accin
S4
Accin
Sn
La sintaxis es la siguiente:
Segn sea (selector) hacer
caso1, caso2, ..: sentencia 1
.... : .....
caso1n, caso2n, ..: sentencia n
sino
sentencia opcional
fin_segn
PSEUDOCDIGO EN
INGLES
CASE EXPRESION OF
c1: accin S1
[c1]: accin S1
c2: accin S2
[c2]: accin S2
de otra forma:
otherwise
accin Sx
accin Sx
fin_caso
ENDCASE
67
EJEMPLO N 16
EN C++:
Imprimir a que da de la semana corresponde un nmero.
#include <stdio.h>
#include <conio.h>
int main()
{
int Dia;
clrscr();
printf("Escriba el nmero de da: \n");
scanf("%d",&Dia);
switch(Dia)
{
case 1: printf("El %d corresponde a Lunes.",Dia);
break;
case 2: printf("El %d corresponde a Martes.",Dia);
break;
case 3: printf("El %d corresponde a
Mircoles.",Dia);break;
case 4: printf("El %d corresponde a Jueves.",Dia);
break;
case 5: printf("El %d corresponde a Viernes.",Dia);
break;
case 6: printf("El %d corresponde a Sbado.",Dia);
break;
case 7: printf("El %d corresponde a
Domingo",Dia);break;
default: printf ("El %d da no existe en la
semana.",Dia);
getch();
}
return 0;
}
68
69
SINTAXIS:
PSEUDOCDIGO
EN ESPAOL
PSEUDOCDIGO
EN INGLES
Repetir
Repeat
<acciones>
<acciones>
...
<acciones n>
<acciones n>
Hasta <condicion>
Until <condicion>
DIAGRAMA DE FLUJO
CARACTERSTICAS
o
70
ciclos
ERRORES COMUNES
9 Realizar ciclos infinitos.
9 Como se evitan? Modificando dentro del cuerpo la
variables que lo controlan.
9 Pensar que puede no ejecutarse ninguna vez.
9 Todas las operaciones durante la primera ejecucin del
cuerpo son vlidas.
9 La primera ejecucin del cuerpo modifica las variables
de la condicin.
EJEMPLO N 17
71
SINTAXIS
SINTAXIS EN INGLS
SINTAXIS EN ESPAOL
DO WHILE
Condicin
HACER MIENTRAS
Condicin
<Accin>
<Accin>
FIN HACER
ENDDO
DIAGRAMA DE FLUJO
72
EJEMPLO N 18
Desarrollar el algoritmo necesario para calcular el factorial de un
numero N que responda a la formula
EN C++
EJEMPLO N 19
// Algoritmo que calcula el factorial de un numero.
#include "conio.h"
#include <stdio.h>
#include <dos.h>
int main()
{
int i, total,contador;
contador=1;
total = 1;
clrscr();
printf ("Factorial numero\n\n Dame el numero para el
factorial: ");
scanf ("%d",&i);
73
while (contador<=i)
{
total = total * contador;
contador++;
}
printf("El factorial de %d es: %d",i,total);
getch();
return 0;
}
3.3
PARTE PRCTICA
PROBLEMAS PROPUESTOS
1.
2.
3.
4.
5.
6.
7.
8.
9.
74
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
23.
24.
25.
76
26.
Escribir un programa que lea un valor entero que ser la base para
un sistema numrico (binario, octal o decimal), despus que lea un
entero positivo en esa base y que imprima su valor en base 10. Se
debe validar que el nmero pertenezca a esa base. La base ser
menor que o igual a 10. El programa podra tener la siguiente
salida:
Entrada
Base Nmero
==============
10
1234
8
77
2
1111
Salida
=========
1234
63
15
27.
28.
6
7
8
9
10
7883.89
8869.38
9978.05
11225.31
12628.47
70955.03
79824.41
89802.45
101027.76
113656.23
LABORATORIO N 3
1.
BEGIN
DO
Ingresar el dato nmero
WHILE numero <= 0
WRITE el nmero validado
END
Cdigo:
#include<iostream.h>
#include<conio.h>
int main ()
{
float numero;
clrscr ();
cout << "VALIDACIN DE LA ENTRADA DE UN NUMERO
POSITIVO" << endl;
do
{
cout<< "Ingrese el numero positivo:";
cin>>numero;
}while(numero <= 0 );
cout<< "\n El numero es " ;
cin>>numero;
getch ();
}
78
2.
# include<iostream.h>
# include<conio.h>
int main ()
{
int N, numero, cont = 0, suma = 0;
clrscr ();
cout << SUMA DE NMEROS ENTEROS << endl;
cout << Cuntos nmeros desea sumar? ;
cin >> N;
do
{
cout << Ingrese nmero << cont << : ;
cin >> numero;
suma += numero;
cont++;
}
while ( cont < N ) ;
cout << \ nLa suma es << suma;
getch ();
}
3.
79
// Ingreso de datos
cout<<"Base: "; cin>>base;
cout<<"Altura: "; cin>>altura;
area = base * altura;
perimetro = 2 * (base * altura);
//Salida de datos
cout << "El area es :" <<area<<endl;
cout << "El perimetro es :" << perimetro<<endl;
getch();
return 0;
}
4.
#include <iostream.h>
#include <conio.h>
80
int main()
{
int numero=0;
do
{
numero= numero+1;
cout << \t <<numero<<endl;
} while (numero <10);
cout <<"\n\t Fin de programa ";
getch() ;
return(numero) ;
}
81
82
PROGRAMACIN MODULAR
83
VENTAJAS
EJEMPLO N 20
Se desea disear un algoritmo que realice las siguientes tareas:
Impresin.
Lectura de datos.
Ejecutar clculos.
Imprimir lneas detalladas de informacin.
Imprimir totales.
Submdulo Impresion:
Lectura de datos.
Ejecucin de clculos.
Impresin detallada de lneas de informacin.
Retorno al mdulo principal.
84
4.2
SUBPROGRAMAS TIPOS
Tipos de Subprogramas:
Procedimientos
Funciones
PROCEDIMIENTOS
o
o
o
o
<declaracin de constantes>
VAR
<declaracin de variables>
BEGIN
...
< acciones>
END_PROCEDIMIENTO
85
EJEMPLO N 21
FUNCIONES
o
DECLARACIN DE LA FUNCIONES
<declaracin de constantes>
VAR
<declaracin de variables>
BEGIN
...
devolver <resultado>
END
86
EJEMPLO N 22
Variables Locales:
Una variable local es una variable que esta declarada
dentro de un subprograma y se dice que es local al
subprograma.
Una variable local solo est disponible durante el
funcionamiento del subprograma, al terminar su funcin
el subprograma y regresar al programa llamador, se
pierde el valor que se encontraba guardado en la
variable local.
87
EJEMPLO N 23
Variables Globales:
EJEMPLO N 24
Algoritmo global var x entero
BEGIN
x 0
cambiar
write (x)
END
88
Mdulo cambiar
BEGIN
x1
END
La variable x esta definida como global, por lo tanto la salida
ser 1.
4.2.2 FUNCIONES, PASO DE PARMETROS.
PASO DE PARMETROS
o
o
89
EJEMPLO N 25
1)
90
EJEMPLO N 26
A 5
B 7
Llamar_a
PROC1
( A,
procedimiento
PROC1
18,
18
(E entero) X,
B
3 ** 33
25
Y,
Z)
EJEMPLO N 27
91
+ 4)
2)
EJEMPLO N 28
ALGORITMO PARMETRO
var x: entero
BEGIN
x 0
CAMBIAR (x)
WRITE (x)
END
Mdulo cambiar (var y: entero)
BEGIN
y 1
END
SALIDA: x 1
3)
92
4)
POR RESULTADO
Nos interesa el valor del parmetro real solamente a la
EJEMPLO N 29
93
EJEMPLO N 30
4.3
PARTE PRCTICA
PROBLEMAS PROPUESTOS
1.
2.
3.
94
5.
6.
7.
LABORATORIO N 4
1.
95
Solucin:
#include <iostream.h>
#include <conio.h>
// Prototipo de la funcin cuadrado
// Sera suficiente escribir: int cuadrado (int);
int cuadrado (int n);
// El programa comienza aqu
int main ( )
{
int N, resp;
clrscr ( );
cout << Ingrese un nmero entero N : ;
cin >> N;
// Aqu usamos el retorno de la funcin, directamente en una
// Sentencia de salida,
cout << \nForma 1: El cuadrado de N es ...: << cuadrado (N);
// Tambin puede crearse una variable para recibir el retorno de
// La funcin y luego imprimimos el valor de la variable. As:
int retorno = cuadrado (N);
cout << \nForm 2: El cuadrado de N es ..: << retorno;
// Aqu usamos el retorno de una funcin directamente en una
// expresin.
resp = 5*cuadrado (N) + 3*N 5;
cout << \nEl valor de 5N2 + 3N 5 es.. ....: << resp;
getch ( );
}
// Definicin de la funcin cuadrado
int cuadrado (int)
{
// Esto muestra que una sentencia return se puede incluir el
clculo
// De una expresin. Entonces primero se efecta en calculo
de la
// Expresin y luego se retorna su valor.
Return n*n;
}
96
2.
#include <iostream.h>
#include <conio.h>
// Prototipo de la funcin mnimo
int mnimo (int a, int b, int c);
// Funcin principal
int main ( )
{
int A, B, C;
clrscr ( );
cout << Determinacin del menor de tres nmeros <<
end1;
cout << Ingrese tres nmeros enteros .: ;
cin >> A >> B >> C;
cout << El menor de los tres nmeros es .: << mnimo (A,
B, C);
getch ( );
}
/ Definicin de la funcin mnimo
int mnimo (int a, int b, int c)
{
// Observe que la variable menor es una variable local y ser
// Destruida al salir de la funcin (luego del retorno).
Int menor = a;
If (b < menor)
Menor = b;
If (c < menor)
Menor = c;
Return menor;
}
97
3.
}
98
4.
#include <iostream.h>
#include <conio.h>
// Prototipo de la funcin coutxy
void coutxy (int x, int y, char texto [ ] ) ;
// Funcin principal
int main ( )
{
clrscr ( ) ;
coutxy (8, 2, Esto comienza en la coordenada (8, 2)) ;
coutxy (5, 5, Esto comienza en la coordenada (5, 5));
coutxy (1, 8, Esto comienza en la coordenada (1, 8));
coutxy (26, 25, Pulse una tecla para terminar);
getch ( );
}
// Definicin de la funcin coutxy.
// Note que la funcin no necesita retornar nada (todo lo que hace lo
// Deja impreso en la pantalla) por lo que su tipo de retorno es void.
void coutxy (int x, int y, char texto [ ])
gotoxy (x, y);
// Poner el cursor en la coordenada (x,
y)
cout << texto;
// Imprimir el texto desde la posicin del
cursor
}
5.
99
Solucin:
#include <stdio.h>
#include <string.h>
#include <iostream.h>
#include <conio.h>
6.
100
Solucin:
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
// Prototipo de funcin
void mirandom (int& num, int min, int max);
// Funcin principal
int main ( )
{
int numero;
clrscr ( );
cout << GENERACIN DE 20 NMEROS ALEATORIOS
ENTRE 50 Y 200 \n\n;
randomize();
for ( int i = 0; i < 20; i ++)
{
/*Como se esta pasando la variable nmero mediante un
parmetro por referencia, entonces la funcin mirandom esta
trabajando sobre la variable original nmero*/
}
mirandom (numero, 50, 200);
cout << numero << end1;
}
getch ( );
}
101
102
CAPTULO V: RECURSIVIDAD
5.1
RECURSIVIDAD
-
EJEMPLO N 31
Funcin factorial
factorial(n: natural) dev f: natural
IF n = 0 entonces
terminacin
f 1
ELSE
f n * factorial(n 1)
ENDIF
5.2
// Condicin de
// Caso base
// Caso recursivo
CARACTERSTICAS
o
o
103
5.3
VENTAJAS Y DESVENTAJAS
Ventajas de la Recursin ya conocidas
9 Soluciones simples, claras.
9 Soluciones elegantes.
9 Soluciones a problemas complejos.
Desventajas de la Recursin: INEFICIENCIA
9 Sobrecarga asociada con las llamadas a subalgoritmos.
La claridad compensa la sobrecarga?
9 Una simple llamada puede generar un gran nmero de
llamadas recursivas. (Fact(n) genera n llamadas
recursivas).
9 El valor de la recursividad reside en el hecho de que se
puede usar para resolver problemas sin fcil solucin
iterativa.
9 La ineficiencia
recursivos.
5.4
inherente
de
algunos
algoritmos
PELIGROS EN LA RECURSIVIDAD
EL PASO BASE:
Esta es la clave para terminar la recursin, es cuando deja de
hacer llamadas a la funcin recursiva y hace evaluaciones
devolviendo los resultados. Adems se debe asegurar de que
es posible entrar a este paso.
EL PASO RECURSIVO:
Es la parte de la definicin que hace llamadas a esa misma
funcin y que es la causante de las inserciones en la pila,
almacenando en cada una de las llamadas, informacin del
programa, del estado de sus variables locales y globales.
104
5.5
-Final
- Lineal
- Mltiple
- Anidada
REC. INDIRECTA
A.
RECURSIN LINEAL
Esquema general de una funcin recursiva lineal:
A.1.2
A.2
RECURSIN MLTIPLE
EJEMPLO N 33
Fib(n: N) dev f: N
IF n <= 1 entonces
fn
ELSE
f Fib(n 1) + Fib(n 2)
ENDIF
A.3
RECURSIN ANIDADA
106
B.
EJEMPLO N 35
Funciones Par/Impar
5.6
107
5.7
LA PILA DE RECURSIN
dinmicas.
5.8
108
5.9
PARTE PRCTICA
PROBLEMAS PROPUESTOS
1.
2.
3.
4.
109
LABORATORIO N 5
1.
/* prototipo de la funcin */
int main()
{
int i; /* contador */
/* repite 11 veces; durante cada iteracin, calcula el factorial( i ) y
despliega el resultado */
for ( i = 0; i <= 10; i++ )
{
printf( "%2d! = %ld\n", i, factorial( i ) );
} /* fin de for */
return 0;
}
/* definicin recursiva de la funcin factorial */
long factorial( long numero )
{
if ( numero <= 1 ) {
return 1;
}
else {
/* paso recursivo */
return ( numero * factorial( numero - 1 ) );
}
} /* fin de la funcin factorial */
110
SERIE DE FIBONACCI
/* Funcin recursiva de fibonacci */
#include <stdio.h>
long fibonacci( long n );
int main()
{
long resultado;
long numero;
/* prototipo de la funcin */
/* valor fibonacci */
/* numero a introducir por el usuario */
111
112
6.1
TIPOS
Los tipos de datos estructurados ms comunes son: vectores y
matrices (array), registros, cadenas de caracteres (string).
ARRAY (ARREGLO)
Es una estructura de datos en la cual se almacena una coleccin de
datos del mismo tipo a este se le llama tipo base del arreglo,
mientras que los datos individuales se llaman elementos del
arreglo.
113
La declaracin:
int Array[10];
-
6.2
In d ic e
E le m e n to
ed ad [0 ]
ed ad [1 ]
ed ad [2 ]
ed ad [3 ]
ed ad [4 ]
.
.
.
47
48
49
.
.
.
.
ed ad [4 7 ]
ed ad [4 8 ]
ed ad [4 9 ]
114
Elemento
1.65
estatura [0]
1.57
estatura [1]
1.72
estatura [2]
1.80
estatura [3]
1.65
estatura [4]
EJEMPLO N 36
115
int main()
{
int a[20];
int x = 0;
// ADICIONO VALORES
while (x < 20)
{
cout <<"Ingreso vector ["<< x+1 << "]: ";
cin >> a[x];
x = x + 1;
}
x = 1;
// MUESTRO ELEMENTOS
while (x < 20){
if (a[x]%5 ==0)
cout << "\n" << a[x];
x = x + 1;
}
cout << "\n";
getch();
}
EJEMPLO N37
6.3
EJEMPLO N 38
Disear un programa que permita ingresar valores en una matriz de 3 x 4
(lectura por columna)
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
int main()
{
int num[4][3];
for (int a=0; a<4; a++){
for (int b=0; b<3; b++){
cout << "Nmero [" << b+1 << "], [" << a+1 << "] : "; cin >>
num[a][b];
}
117
}
cout << "\n\n";
for(int c=0; c<3; c++){
for(int d=0; d<4; d++)
cout<< setw(5)<<num[d][c] << " ";
cout << endl;
}
getch();
return 0;
}
ARREGLO MULTIDIMENSIONAL
2.
EJEMPLO N 39
#include <stdio.h>
void imprimeArreglo( const int a[][ 3 ] ); /* prototipo de la funcin */
/* la funcin main comienza la ejecucin del programa */
int main()
{
/* inicializa arreglo1, arreglo2, arreglo3 */
int arreglo1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } };
int arreglo2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 };
int arreglo3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } };
printf( "Los valores en el arreglo1 por linea son:n" );
imprimeArreglo( arreglo1 );
118
119
indicebuscado =-1
PARA i=0 MIENTRAS i < N CON INCREMENTO 1
SI elemento buscado es igual arreg[1] ENTONCES
indicebuscado = i;
salir del bucle
FIN_SI
FIN_PARA
ORDENAMIENTO UNIDIMENSIONAL
Existen diversas formas de ordenar un arreglo. En el curso se ver uno de
los ms simples y populares: Ordenamiento Burbuja o Bubble Sort.
PARA i=0
MIENTRAS i<N-1
INCREMENTO 1
PARA j=0 MIENTRAS j<N-1 INCREMENTO 1
SI arreg[j] es mayor que arreg[j+1]
ENTONCES intercambiar arreg[j] con arreg[j+1]
FIN_SI
FIN_PARA
FIN_PARA
EJEMPLO N 41
Supngase que desean ordenar las siguientes claves del arreglo A,
transportando en cada pasada el menor elemento hacia la parte izquierda
del
arreglo. A: 15, 67, 08, 16, 44, 27, 12, 35
120
PRIMERA PASADA
a[7]>a[8] (12>35) no hay intercambio
a[6]>a[7] (27>12) si hay intercambio
a[5]>a[6] (44>12) si hay intercambio
a[4]>a[5] (16>12) si hay intercambio
a[3]>a[4] (08>12) no hay intercambio
a[2]>a[3] (67>08) si hay intercambio
a[1]>a[2] (15>08) si hay intercambio
6.4
REGISTROS
6.4.1 CONCEPTO
Un registro es una coleccin de campos lgicamente
relacionados, que pueden ser tratados como una unidad por
algn programa.
// tipo enumerado
enum Meses {
enero, febrero, marzo, abril, mayo, junio, Julio,
agosto, septiembre, octubre, noviembre, diciembre
};
// tipo registro
struct Fecha {
int dia;
Meses mes;
int anno;
};
// variables
Fecha f_nac ;
Fecha f_ant;
123
{
struct Registro arrReg[20];
arrReg[10].unElemento=10.0;
arrReg[10].unArreglo[5]=5;
struct Registro
{
int primerElem;
float segundoElem;
};
void fn()
{
struct Registro simple = {1, 2.0};
struct Registro array[2] = { {1, 2.0}, /* array[0] */
{2,4.4}}; /* array[1] */
}
124
EJEMPLO N 43
En el ejemplo la estructura es Registro y el objeto es reg.
struct Registro
{
int primerElem;
float segundoElem;
}
void fn()
{
struct Registo reg;
reg.primerElem=0; /* se refiere al miembro entero */
reg.segundoElem=1.0; /* se refiere al miembro real */
6.5
CADENAS DE CARACTERES
Una cadena (string) de caracteres es un conjunto de caracteres
(incluido el blanco), que se almacenan en un rea contigua de la
memoria. Pueden ser entradas o salidas desde una computadora.
12 de
como ests
10
11
12
13
14
15
16
17
///
///
18
19
20
21
22
23
24
125
///
///
Donde:
20 = Longitud mxima
17 = Longitud actual
Instrucciones Bsicas con Cadenas
Asignacin
Entrada/Salida
Las instrucciones:
READ A,B
WRITE C,D
126
///
1.
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
//definicin de variables
char cadena[100];
int cont,contp=1;
clrscr();
printf("Cadena: ");gets(cadena);
//limpia la pantalla
//obtiene la cadena
for(cont=0;cont<=(strlen(cadena)-1);cont++)
{
if(cadena[cont]==' ')
contp++;
palabras
//recorre la cadena
//busca espacios
//incrementa el conteo de
}
printf("palabras: %d",contp);//salida en pantalla del resultado
getch();
}
127
EJEMPLO N 45
Programa que cambia todas las minsculas por maysculas
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char cadena[100];
int lon,car,cont;
clrscr();
printf("Cadena: ");
gets(cadena);
lon=strlen(cadena);
//obtenemos cadena
//obtenemos longitud
for(cont=0;cont<=lon-1;cont++)
{
car=cadena[cont];
//obtenemos el carcter en la posicin cont
if((car>=65)&&(car<=90))
{
//entonces es mayscula
cadena[cont]=tolower(cadena[cont]); //convertimos a
minsculas
}
}
printf("%s",cadena);//salida en pantalla de la cadena
getch();
}
128
EJEMPLO N 46
6.6
PARTE PRCTICA
PROBLEMAS PROPUESTOS:
1.
2.
3.
4.
5.
6.
7.
LABORATORIO N 6
1.
Solucin:
#include <conio.h>
#include <iostream.h>
int main ( )
{
// Declaracin de constantes y variables
const int N = 20;
// Nmero de personas
int a [N];
// Arreglo de N nmeros enteros
int suma;
// Suma de los elementos del arreglo
int menor;
// Menor valor de arreglo
int indice;
// ndice del menor valor dentro del arreglo
int i;
// Variable para los blucles for
130
// Ingreso de datos
// En simultneo ingresamos un elemento y lo vamos sumando
clrscr ( );
cout << INGRESO DE DATOS << end1;
suma = 0;
for (i = 0; i < N; i++)
{
cout << Ingrese elemento << i << :;
cin >> a [i];
suma += a [i];
}
// Hablamos el menor valor y su ndice dentro del arreglo
menor = a [0];
for (i = 1; i < N; i++)
{
if (a [i] < menor)
{
menor = a [i];
indice = i;
}
}
// Salida de resultados
cout << \nSuma...: << suma;
cout << \nNmero menor: << menor;
cout << \nndice del nmero menor: << indice;
getch ( );
}
2.
Solucin:
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
131
int main ( )
{
// Declaracin de constantes y variables
const int N = 20;
// Nmero de elementos de los arreglos
int a [N], b [N], c [N];
// Los tres arreglos de N enteros
int i;
// Variable para los bucles for
// Ingreso de datos
// A la vez que ingresamos vamos sumando
clrscr ( );
cout << Ingreso de datos << end1;
for (i = 0; i < N; i++)
{
cout << a [ << i << ] = ;
cin >> a [i];
cout << b [" << i << "] = ;
cin >> b [i];
c [i] = a [i] + b [i];
}
// Salida de resultados
cout << \nSalida de resultados\n;
cout << setw (4) << a << setw (4) << b << setw (4) << c <<
\n\n;
for (i = 0; i < N; i++)
cout << setw (4) << a [1] << setw (4) << b [i] << setw (4) << c
[i] << endl;
getch ( );
}
3.
Solucin:
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
132
void main ( )
{
// Declaracin de variables y constantes
const int MAX = 50; // Mximo numero de empleados
float suma;
// Suma de los sueldos de los N empleados
float promedio;
// Sueldo promedio
float sueldo [MAX]; // Arreglo de MAX sueldos (N debe ser menor o
igual a MAX)
int N;
int i;
// Nmero de empleados
// Variable para los bucles for
133
// Salida de resultado
cout << \n Sueldo Promedio: << setprecision (2) <<
promedio;
cout << \n \n Lista de sueldos inferiores al sueldo promedio
\n ;
for (i=0; i<N; i++)
{
if (sueldo [i] < promedio )
cout << sueldo [i] << endl;
}
getch();
}
4.
Solucin:
#include <iomanip.h>
#include < iostream.h>
#include < conio.h>
int main ()
{
const int TAM=4; // numero de filas y o de columnas (son
iguales)
int f, c;
// fila y columna
int a [TAM] [TAM];
// para la matriz
int sumat, sumad;
// suma total y suma de la diagonal
// Ingreso de la matriz por filas
clrscr();
cout<<Ingreso de una matriz de 4 x 4: <<endl;
for ( f=0; f<TAM; f++) {
cout<<Fila : << f << : ;
for ( c=0; c<TAM; c++ )
cin >> a[f][c];
}
134
5.
7
0
1
1
6
2
3
9
6
Y lo imprima como:
4
7
1
3
5
2
0
6
9
7
3
1
2
6
4
Solucin:
#include <iomanip.h>
#include < iostream.h>
#include < conio.h>
135
5
7
4
int main ()
{
int A [3] [5], f, c;
// Ingreso del arreglo bidimensional por filas.
clrscr();
cout<<Ingreso de un arreglo bidimensional de 3 x 5: \n \n;
for ( f = 0; f < 3; f++)
{
cout<<Ingrese la Fila : << f << en una linea: ;
for ( c = 0; c < 5; c++ )
cin >> A[f][c];
}
// imprime segn el esquema solicitado
// esto lo logramos imprimiendo de salida \n\n ;
cout<<\n Impresin de salidas \n\n: << f << en una linea:
;
for ( c = 0; c < 5; c++ )
{
for ( f = 0; f < 3; f++)
cout << setw (4) << A[f] [c];
cout << endl;
}
getch();
return 0;
}
6.
#include <stdio.h>
#include <conio.h>
#include <string.h>
136
int main()
{
char cadena1[100],cadena2[100];
int cont;
clrscr();
printf("Cadena 1: ");gets(cadena1);
printf("Cadena 2: ");gets(cadena2);
for(cont=0;cont<=strlen(cadena1);cont++)
{
cadena 1
//recorremos
if(cadena1[cont]!=cadena2[cont])
printf("Desiguales");
sean iguales
break;
iguales
//comparamos
//desiguales en caso de ke no
//cortamos si no son
else
if(cont==strlen(cadena2))
//seguimos
comparando
printf("Iguales");
}
getch();
}
137
138
BIBLIOGRAFA
BSICA:
1.
JOYANES
AGUILAR, LUIS (1998). Fundamentos de
Programacin, Algoritmos y Estructura de Datos. Segunda Edicin
Mc Graw Hill.
2.
3.
4.
5.
6.
COMPLEMENTARIA:
1.
2.
3.
4.
139