Está en la página 1de 58

UNIVERSIDAD DE HUÁNUCO

FACULTAD DE INGENIERIA
P. A. P. INGENIERIA DE SISTEMAS E INFORMÁTICA

ESTRUCTURA DE DATOS

DOCENTE: MANZANO LOZANO, ETHEL.

ALUMNO: MARTEL ROJAS, JOSEPH ANDY

CICLO: IV.

HUANUCO - 2022-I
PRESENTACIÓN

El presente trabajo es un cuaderno personal del curso


de estructura de datos que esta echo para tener en cuenta
sobre las actividades que vamos realizando en el presente semestre, con la ayuda del
profesor que nos facilita el buen aprendizaje del tema
INTRODUCCIÓN

Este cuaderno tiene contenido en general acerca del tema de estructura de datos, donde
podemos ir teniendo más conocimientos sobre el tema en sí, empezaremos desde lo más
simple a los más dificultoso teniendo en cuenta dos contenidos que serán llamados como
primera unidad y segunda unidad, donde la primera unidad está basada en conceptos básicos
como, arreglos tanto unidimensionales como bidimensionales, métodos y listas.
La segunda unidad ya viene a ser temas más complejos como conceptos de pilas, conceptos
de colas, ordenamiento y búsqueda de dato abstracto “struc” en el lenguaje de programación,
listas doblemente enlazadas como también pilas y colas con estructuras en c++. Todo esto
llevando a cabo de manera práctica como también de manera teórica lo cual iremos
realizando los problemas y ejercicios de clase más por el lado practico que teórico.
CONTENIDO

PRIMERA UNIDAD

CONCEPTOS BASICOS.

 Conceptos básicos de estructura de datos en C++. Ejemplos generales.


 Arreglos unidimensionales, operaciones. Programas en C++
 Arreglos bidimensionales operaciones.
 Métodos de ordenamiento. Burbuja, Selección, Inserción y otros.
 Métodos de búsqueda secuencial, binaria y otros.
 Listas doblemente enlazadas. Programas en C++

SEGUNDA UNIDAD
CONCEPTOS BASICOS.
 Concepto de Pilas con arreglos. Criterios para su diseño y desarrollo.
 Concepto de Colas con arreglos. Programas en C++. Criterios para su diseño y
desarrollo.
 Estructuras de datos, como tipo de variable. Sintaxis y uso en C++.
 Ordenamiento y búsqueda con el uso del tipo de dato abstracto “struct” en el lenguaje
de programación C++.
 Listas simples y enlazadas con estructuras. Criterios para su desarrollo en C++.
 Listas doblemente enlazadas con estructuras. Criterios para su desarrollo en C++.
 Pilas con estructuras y Colas con estructura de datos. en C++.

ESTRUCTURA DE DATOS

Una estructura de datos es un conjunto de datos que facilita la manipulación de un dato en el


sistema.
También se dice que es una colección de datos que están caracterizados por la organización
en sus operaciones, esto se puede expresar mediante conjuntos, relaciones y operaciones.
Las estructuras de datos sirven para manejar grandes cantidades de datos, por lo que son
eficientes al diseñar algoritmos eficientes, algunos métodos de diseño y lenguaje como clave
factor en la organización del diseño del software.
Weiss (2011) considera que muchos algoritmos requieren una representación apropiada de los
datos para lograr ser eficientes. Esta representación junto con las operaciones permitidas se
llama estructura de datos (pág. 11).

EJERCICIOS EN C++
/*P02: Programa que permita ingresar N elementos enteros a un arreglo y que muestre los
elementos con su respectiva raiz cuadrada, solo si son positivos */
#include <iostream>
#include <math.h>

using namespace std;


int main()
{
//declaración de variables
int i,N;

//pedir la cantidad de elementos N


cout<<"Cuantos elementos ingresara?: ";
cin>>N;
int A[N];
//usar el ciclo for para el ingreso de datos
for(i=0;i<N;i++)
{
cout<<"A["<<i<<"]: ";
cin>>A[i];

}
//reportar casilla, valor y raiz solo de positivos
system("cls");
cout<<"\n CASILLA \t NUM POSIT \t RAIZ CUAD \n";
for(i=0;i<N;i++)
{
cout<<" A["<<i<<"]: \t\t"<<A[i]<<"\t "<<sqrt(A[i])<<endl;
}

return 0;
}
/*ejem 3: Programa que permita ingresar una frase y muestre la cantidad de caracteres que
tiene dicha frase. Ademas encriptar y desencriptar*/
#include <iostream>
#include <string.h>

using namespace std;


int main()
{
//declaración de variables
char T[200];
int i,tam;

cout<<"Ingrese frase: ";


cin.getline(T,200,'\n');

cout<<"La frase ingresada es: \n";


cout<<T;
tam = strlen(T);
cout<<"\nLa frase tiene: "<<tam<<" caracteres.";
cout<<"\nvalor de T[0]= "<<T[0];
for(i=0;i<tam;i++)
T[i]=T[i]+1;

cout<<"\nfrase encriptada: \n"<<T;


//desencriptando
for(i=0;i<tam;i++)
T[i]=T[i]-1;

cout<<"\nfrase desencriptada: \n"<<T;


return 0;
}
“rangos de tipos de datos en c++”

bits Rango / Tipo de uso

unsigned char 8 0 <= X <= 255            Números pequeños y juego caracteres del PC.

char (signed)  8 -128 <= X <= 127       Números muy pequeños y juego de caracteres ASCII [5]

short (signed) 16 -32,768 <= X <= 32,767  Números muy pequeños, control de bucles pequeños

unsigned short 16 0 <= X <= 65,535      Números muy pequeños, control de bucles pequeños

unsigned (int) 32 0 <= X <= 4,294,967,295.         Números grandes


int  (signed) 32 -2,147,483,648 <= X <= 2,147,483,647   Números pequeños, control de bucles

unsigned long 32 0 <= X <= 4,294,967,295          Distancias astronómicas

enum 32 -2,147,483,648 <= X <= 2,147,483,647    Conjuntos de valores ordenados

long (int) 32 -2,147,483,648 <= X <= 2,147,483,647   Números grandes


float 32 1.18e-38 <= |X| <= 3.40e38            Precisión científica ( 7-dígitos)

double 64 2.23e-308 <= |X| <= 1.79e308      Precisión científica (15-dígitos)
long double 80 3.37e-4932 <= |X| <= 1.18e4932    Precisión científica (18-dígitos)

TAREA

1) Generar tres arreglos, uno de edades, otro de tallas, otro de letras y el último que reciba
una frase, luego muestre cada dato ingresado.
2) Que ingrese N elementos a un arreglo unidimensional y muestre los elementos desde el
último casillero al primero y además la suma de todos.
3) Que ingrese N elementos a un arreglo unidimensional y que pida un número el cual
multiplicará a cada elemento del arreglo y luego muestre los nuevos elementos.
4) Que ingrese N elementos a un arreglo unidimensional y muestre solo los elementos de
los casilleros impares. Además que imprima la suma de los elementos de los casilleros
impares.
5) Que permita el ingreso de N elementos enteros a un arreglo y saque la raíz cuadrada
sólo de los elementos positivos.
6) Que permita el ingreso de N elementos enteros a un arreglo y determine cuantos son
pares y cuantos son impares.
/*Generar tres arreglos, uno de edades, otro de tallas, otro letras y el último que reciba una
frase, luego muestre cada dato ingresado.*/
#include <iostream>
#include <math.h>
#include <string.h>
using namespace std;

int main()
{
int nedad=0,ntalla=0,i;
int E[100],N;
float T[100];
char Alum[100][30];

cout<<"Para cuantos alumnos?: ";


cin>>N;
cout<<"Ingrese Apellidos y nombres: ";
for(i=0;i<N;i++)
{
cout<<"\ndato "<<i<<": ";
fflush(stdin);
cin.getline(Alum[i],30,'\n');
}
//cout<<"ingrese cuantas edades desea ingresar: ";
//cin>>nedad;
cout<<"ingrese "<<N<<" edades: \n";
for (i=0;i<N;i++)
{
cout<<Alum[i]<<" ";
cin>>E[i];
}

//cout<<"ingrese cuantas tallas desea ingresar: ";


//cin>>ntalla;
/*cout<<"Ingrese "<<N<<" tallas: ";
for (i=0;i<ntalla;i++)
{
cout<<"T["<<i<<"] :";
cin>>T[i];
}*/

/*******/
//MOSTRANDO DATOS
cout<<"Apellidos y nombres: Edad:\n";
for(i=0;i<N;i++)
{
cout<<Alum[i]<<" "<<E[i]<<endl;
}
/*
//muestra de datos
cout<<"\n las edades ingresadas son:"<<endl;
for (i=0;i<nedad;i++)
{
cout<<" E["<<i<<"] : \t "<<E[i]<<" \t\t "<<endl;
}
cout<<"\n las tallas ingresadas son:"<<endl;
for (i=0;i<ntalla;i++)
{
cout<<" T["<<i<<"] : \t "<<T[i]<<" \t\t "<<endl;
}
cout<<"\n La frase ingresada es: \n";

cout<<F;*/
return 0;
}
4 . Que ingrese N elementos a un arreglo unidimensional y muestre solo los elementos de los
casilleros impares. Además que imprima la suma de los elementos de los casilleros impares.

#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int N,SUMIMP,A[100],i;
cout<<"Ingrese cantidad de números: ";
cin>>N;

for(i=0;i<N;i++){
cout<<"A["<<i<<"]: ";
cin>>A[i];
}
SUMIMP=0;
for(i=0;i<N;i++){
if((i%2)!=0)
SUMIMP=SUMIMP+A[i];
}
system("cls");
cout<<" CASILLEROS IMPARES: \n";
for(i=0;i<N;i++){
if((i%2)!=0)
cout<<"A["<<i<<"]"<<"-->"<<A[i]<<endl;
}

cout<<" Suma de elementos de los casilleros impares: "<<SUMIMP<<endl;

return 0;
}
5./* Que permita el ingreso de N elementos enteros a un
arreglo y saque la raíz cuadrada sólo de los elementos positivos
*/
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char** argv) {
int N,i,k,elem[20];
float raiz,R[20];
cout<<"¿Cuantos elementos ingresara?:";
cin>>N;
for(i=0;i<N;i++){
cout<<"N°["<<i<<"]:";
cin>>elem[i];
}
k=0;
for(i=0;i<N;i++){
cout<<"N°["<<i<<"]: Raiz de "<<elem[i]<<" es: ";
if(elem[i]<0){
cout<<"No existe\n";
}else{
raiz=sqrt(elem[i]);
cout<<raiz<<endl;
R[k]=raiz;
k++;
}
}
cout<<"\nMostrando R\n";
for(i=0;i<k;i++){
cout<<"R["<<i<<"]:"<<R[i]<<endl;
}
return 0;
}

ARREGLOS UNIDIMENSIONALES

Primero daremos una pequeña explicación sobre arreglos.


Un arreglo o también llamado “array” es una referencia hacia una colección de variables por
medio de un nombre común a un arreglo se le conoce como tipo de dato compuesto ya que se
almacenan de manera continua.
ARREGLOS UNIDIMENSIONALES

Son una lista de variables que se hace referencia por medio de un nombre común, para
declarar un arreglo se usa el formato general en una sola dimensión.

Los arreglos unidimensionales, son estructuras de datos típicamente estáticas en la mayoria de


los lenguajes de programación, usan posiciones de memoria que están contiguas de forma
numérica (Rafael G. Pág.5).

EJERCICIOS EN CLASE

/*Programa de unión de 3 conjuntos */

#include <iostream>

using namespace std;

int main(int argc, char** argv)


{
int A[10], B[10], C[10], D[30], i, k, NA, NB, NC, ND;

cout<<"\ncuantos numeros desea ingresar en el primer conjunto?"<<endl;


cin>>NA;
if (NA < 0)
{
cout<<"\ncuantos numeros desea ingresar en el primer conjunto?"<<endl;
cin>>NA;
}
for (i = 0; i < NA; i++)
{
cout<<"A["<<i<<"]: ";
cin>>A[i];
}

cout<<"\ncuantos numeros desea ingresar en el segundo conjunto?"<<endl;


cin>>NB;
if (NB < 0)
{
cout<<"\ncuantos numeros desea ingresar en el primer conjunto?"<<endl;
cin>>NA;
}
for (i = 0; i < NB; i++)
{
cout<<"B["<<i<<"]: ";
cin>>B[i];
}

cout<<"\ncuantos numeros desea ingresar en el tercer conjunto?"<<endl;


cin>>NC;
if (NC < 0)
{
cout<<"\ncuantos numeros desea ingresar en el primer conjunto?"<<endl;
cin>>NA;
}
for (i = 0; i < NC; i++)
{
cout<<"C["<<i<<"]: ";
cin>>C[i];
}

k=0;
for (i = 0; i < NA; i++)
{
D[k]=A[i];
k++;
}
for (i = 0; i < NB; i++)
{
D[k]=B[i];
k++;
}
for (i = 0; i < NC; i++)
{
D[k]=C[i];
k++;
}

cout<<"\n-------------------------------"<<endl;
ND=NA+NB+NC;
for (i = 0;i < ND; i++)
{
cout<<"D["<<i<<"]: "<<D[i]<<endl;
}
return 0;
}

#include <iostream>

using namespace std;

int main(int argc, char** argv)


{
int A[10],B[10],C[10],U[30],I[30],i,NA,NB,NC,NU,op,k;
char opci;

do{
system("cls");
cout<<"*** MENU DE OPCIONES ***\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Mostrar cada conjunto *\n";
cout<<"* 3) Union de conjuntos *\n";
cout<<"* 4) Interseccion *\n";
cout<<"* ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- CONJUNTO A -----\n";
cout<<"Cuantos datos ingresará?: ";
cin>>NA;
for(i=0;i<NA;i++)
{
cout<<"A["<<i<<"]: ";
cin>>A[i];
}
cout<<"\n----- CONJUNTO B -----\n";
cout<<"Cuantos datos ingresará?: ";
cin>>NB;
for(i=0;i<NB;i++)
{
cout<<"B["<<i<<"]: ";
cin>>B[i];
}
cout<<"\n----- CONJUNTO C -----\n";
cout<<"Cuantos datos ingresará?: ";
cin>>NC;
for(i=0;i<NC;i++)
{
cout<<"C["<<i<<"]: ";
cin>>C[i];
}
break;
case 2:
system("cls");
cout<<"\nMOSTRANDO LOS CONJUNTOS\n";
cout<<"\n----- CONJUNTO A "<<NA<<"DATOS-----\n";
for(i=0;i<NA;i++)
cout<<"A["<<i<<"]: "<<A[i]<<endl;

cout<<"\n----- CONJUNTO B "<<NB<<"DATOS-----\n";


for(i=0;i<NB;i++)
cout<<"B["<<i<<"]: "<<B[i]<<endl;

cout<<"\n----- CONJUNTO C "<<NC<<"DATOS-----\n";


for(i=0;i<NC;i++)
cout<<"C["<<i<<"]: "<<C[i]<<endl;
break;
case 3:
system("cls");
NU=NA+NB+NC;
for (i=0;i<NA;i++)
U[i]=A[i];
k=0;
for (i=NA;i<(NA+NB);i++)
{
U[i]=B[k];
k++;
}

k=0;
for (i=(NA+NB);i<NU;i++)
{
U[i]=C[k];
k++;
}
cout<<"\nMOSTRANDO LA UNION"<<endl;
for(i=0;i<NU;i++)
cout<<"U["<<i<<"]: "<<U[i]<<"\n";

break;
case 4:
break;
default: cout<<"...Error esa opcion no existe\n";

}
cout<<"...DESEA CONTINUAR S/N?: ";
cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";

return 0;
}

VERSION 2

#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
int A[10],B[10],C[10],U[30],I[30],i,NA,NB,NC,NU,op,k,KD,contA=0,contB=0,contC=0;
char opci;

do{
system("cls");
cout<<"*** MENU DE OPCIONES ***\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Mostrar cada conjunto *\n";
cout<<"* 3) Union de conjuntos *\n";
cout<<"* 4) Interseccion *\n";
cout<<"* ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- CONJUNTO A -----\n";
do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>10);

NA = contA+KD;

for(i=contA;i<NA;i++)
{
cout<<"A["<<i<<"]: ";
cin>>A[i];
contA++;
}

cout<<"\n----- CONJUNTO B -----\n";


do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>10);

NB = contB+KD;

for(i=contB;i<NB;i++)
{
cout<<"B["<<i<<"]: ";
cin>>B[i];
contB++;
}

cout<<"\n----- CONJUNTO C -----\n";


do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>10);

NC = contC+KD;

for(i=contC;i<NC;i++)
{
cout<<"C["<<i<<"]: ";
cin>>C[i];
contC++;
}
break;
case 2:
system("cls");
cout<<"\nMOSTRANDO LOS CONJUNTOS\n";
cout<<"\n----- CONJUNTO A "<<NA<<" DATOS-----\n";
for(i=0;i<NA;i++)
cout<<"A["<<i<<"]: "<<A[i]<<endl;

cout<<"\n----- CONJUNTO B "<<NB<<" DATOS-----\n";


for(i=0;i<NB;i++)
cout<<"B["<<i<<"]: "<<B[i]<<endl;

cout<<"\n----- CONJUNTO C "<<NC<<" DATOS-----\n";


for(i=0;i<NC;i++)
cout<<"C["<<i<<"]: "<<C[i]<<endl;
break;
case 3:
system("cls");
NU=NA+NB+NC;
for (i=0;i<NA;i++)
U[i]=A[i];
k=0;
for (i=NA;i<(NA+NB);i++)
{
U[i]=B[k];
k++;
}
k=0;
for (i=(NA+NB);i<NU;i++)
{
U[i]=C[k];
k++;
}
///////////////
cout<<"\n----- CONJUNTO A "<<NA<<" DATOS-----\n";
for(i=0;i<NA;i++)
cout<<A[i]<<" ";

cout<<"\n----- CONJUNTO B "<<NB<<" DATOS-----\n";


for(i=0;i<NB;i++)
cout<<B[i]<<" ";

cout<<"\n----- CONJUNTO C "<<NC<<" DATOS-----\n";


for(i=0;i<NC;i++)
cout<<C[i]<<" ";
///////////////
cout<<"\nCONJUNTO UNION "<<NU<<"
DATOS----"<<endl;
for(i=0;i<NU;i++)
cout<<U[i]<<" ";
cout<<endl;
break;
case 4:
break;
default: cout<<"...Error esa opcion no existe\n"; }
cout<<"...DESEA CONTINUAR S/N?: ";
cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";

return 0;
}

VERSION 3.
#include <iostream>

using namespace std;

int main(int argc, char** argv)


{
int A[10],B[10],C[10],U[30],Inter[10],i,NA,NB,NC,NU,
op,k,KD,contA=0,contB=0,contC=0,m,x,y,z;
char opci;

do{
system("cls");
cout<<"*** MENU DE OPCIONES ***\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Mostrar cada conjunto *\n";
cout<<"* 3) Union de conjuntos *\n";
cout<<"* 4) Interseccion *\n";
cout<<"* ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- CONJUNTO A -----\n";
do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>10);

NA = contA+KD;

for(i=contA;i<NA;i++)
{
cout<<"A["<<i<<"]: ";
cin>>A[i];
contA++;
}

cout<<"\n----- CONJUNTO B -----\n";


do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>10);

NB = contB+KD;

for(i=contB;i<NB;i++)
{
cout<<"B["<<i<<"]: ";
cin>>B[i];
contB++;
}

cout<<"\n----- CONJUNTO C -----\n";


do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>10);

NC = contC+KD;

for(i=contC;i<NC;i++)
{
cout<<"C["<<i<<"]: ";
cin>>C[i];
contC++;
}
break;
case 2:
system("cls");
cout<<"\nMOSTRANDO LOS CONJUNTOS\n";
cout<<"\n----- CONJUNTO A "<<NA<<" DATOS-----\n";
for(i=0;i<NA;i++)
cout<<"A["<<i<<"]: "<<A[i]<<endl;

cout<<"\n----- CONJUNTO B "<<NB<<" DATOS-----\n";


for(i=0;i<NB;i++)
cout<<"B["<<i<<"]: "<<B[i]<<endl;

cout<<"\n----- CONJUNTO C "<<NC<<" DATOS-----\n";


for(i=0;i<NC;i++)
cout<<"C["<<i<<"]: "<<C[i]<<endl;
break;
case 3:
system("cls");
NU=NA+NB+NC;
for (i=0;i<NA;i++)
U[i]=A[i];
k=0;
for (i=NA;i<(NA+NB);i++)
{
U[i]=B[k];
k++;
}
k=0;
for (i=(NA+NB);i<NU;i++)
{
U[i]=C[k];
k++;
}
///////////////
cout<<"\n----- CONJUNTO A "<<NA<<" DATOS-----\n";
for(i=0;i<NA;i++)
cout<<A[i]<<" ";

cout<<"\n----- CONJUNTO B "<<NB<<" DATOS-----\n";


for(i=0;i<NB;i++)
cout<<B[i]<<" ";

cout<<"\n----- CONJUNTO C "<<NC<<" DATOS-----\n";


for(i=0;i<NC;i++)
cout<<C[i]<<" ";
///////////////
cout<<"\nCONJUNTO UNION "<<NU<<"
DATOS----"<<endl;
for(i=0;i<NU;i++)
cout<<U[i]<<" ";
cout<<endl;
break;
case 4:
m=0;
for(x=0;x<NA;x++)
for(y=0;y<NB;y++)
for(z=0;z<NC;z++)
if(A[x]==B[y] && B[y]==C[z])
{
Inter[m]=A[x];
m++;
}
cout<<"\nCONJUNTO INTERSECCION "<<m<<"
DATOS----"<<endl;
for(i=0;i<m;i++)
cout<<Inter[i]<<" ";
cout<<endl;
break;
default: cout<<"...Error esa opcion no existe\n";

cout<<"...DESEA CONTINUAR S/N?: ";


cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";

return 0;
}
ARREGLOS BIDIMENSIONALES

Un arreglo bidimensional es un conjunto de elementos homogéneos donde se pueden


especificar dos subíndices para la declaración de un elemento a la raíz.
Se les conoce como matrices tiene dos dimensiones que se denominan como filas y columnas.

Según (Yolanda M.C) Un arreglo bidimensional es uj vector de vectores que se denomina tabla
o matriz.
Los arreglos bidimensionales se referencian con dos subíndices.
El primero se refiere a la fila
El segundo se refiere a la columna. (2012.Pág.5)

EJERCICIOS EN CLASE

1. INGRESO DE DATOS A UNA MATRIZ

#include <iostream>

using namespace std;

int main(int argc, char** argv)


{
int x,y,M[10][10],NF,NC,mult;

cout<<"INGRESO DE DATOS A LA MATRIZ\n";


cout<<"Cuantas filas?: ";
cin>>NF;
cout<<"Cuantas columnas?: ";
cin>>NC;

for(y=0;y<NF;y++)
for(x=0;x<NC;x++)
{
cout<<"M["<<y<<" "<<x<<"]: ";
cin>>M[y][x];
}
cout<<"Ingrese numero a multiplicar: ";
cin>>mult;

cout<<"\nMOSTRANDO LA MATRIZ:\n";

for(y=0;y<NF;y++)
{
cout<<endl;
for(x=0;x<NC;x++)
cout<<M[y][x]<<"\t";
}
/////////////////
for(y=0;y<NF;y++)
for(x=0;x<NC;x++)
M[y][x]=M[y][x]mult; //M[y][x]=mult;

////////////////
cout<<"\nMOSTRANDO LA NUEVA MATRIZ MULTIPLICADA POR :"<<mult<<endl;

for(y=0;y<NF;y++)
{
cout<<endl;
for(x=0;x<NC;x++)
cout<<M[y][x]<<"\t";
}

return 0;
}

AHORA SUMANDO UNA FILA

#include <iostream>
using namespace std;

int main(int argc, char** argv)


{
int x,y,M[10][10],NF,NC,mult,suma,Filsum;

cout<<"INGRESO DE DATOS A LA MATRIZ\n";


cout<<"Cuantas filas?: ";
cin>>NF;
cout<<"Cuantas columnas?: ";
cin>>NC;

for(y=0;y<NF;y++)
for(x=0;x<NC;x++)
{
cout<<"M["<<y<<" "<<x<<"]: ";
cin>>M[y][x];
}
cout<<"Ingrese numero a multiplicar: ";
cin>>mult;

cout<<"\nMOSTRANDO LA MATRIZ:\n";

for(y=0;y<NF;y++)
{
cout<<endl;
for(x=0;x<NC;x++)
cout<<M[y][x]<<"\t";
}
/////////////////
for(y=0;y<NF;y++)
for(x=0;x<NC;x++)
M[y][x]=M[y][x]mult; //M[y][x]=mult;

////////////////
cout<<"\nMOSTRANDO LA NUEVA MATRIZ MULTIPLICADA POR :"<<mult<<endl;

for(y=0;y<NF;y++)
{
cout<<endl;
for(x=0;x<NC;x++)
cout<<M[y][x]<<"\t";
}
/////////////////////
cout<<"\nQue fila desea sumar...iniciar en cero?: \n";
cin>>Filsum;
suma=0;
for(y=0;y<NF;y++)
for(x=0;x<NC;x++)
if(y==Filsum)
{
cout<<M[y][x]<<"\t";
suma=suma+M[y][x];
}

cout<<"\nLa suma de la fila "<<Filsum<<" es: "<<suma;

return 0;
}

2. MULTIPLICACIÓN POR UN ESCALAR

#include <iostream>
#include <stdlib.h>
#include <locale.h>
#include <time.h>

using namespace std;

int main(int argc, char** argv)


{
int c,f,M[100][100],NF,NC,mult,suma,Filsum,op,dato;
char op2;
setlocale(LC_CTYPE,"Spanish");

do{
system("cls");
cout<<"* MENÚ DE OPCIONES *\n";
cout<<"1) INGRESO DE DATOS A LA MATRIZ...\n";
cout<<"2) MOSTRAR LA MATRIZ ACTUAL.......\n";
cout<<"3) MULTIPLICACIÓN POR UN ESCALAR..\n";
cout<<"4) SUMAR UNA FILA.................\n";
cout<<"5) SUMAR UNA COLUMNA..............\n";
cout<<"6) TRAZA DE LA MATRIZ.............\n";
cout<<"7) TRANSPUESTA DE LA MATRIZ.......\n";
cout<<"8) SUMA TRIANGULAR SUPERIOR.......\n";
cout<<"9) SUMA TRIANGULAR INFERIOR.......\n";
cout<<"\n....POR FAVOR ELIJA UNA OPCION: ";
cin>>op;
switch(op)
{
case 1:
cout<<"INGRESO DE DATOS A LA MATRIZ\n";
cout<<"Cuantas filas?: ";
cin>>NF;
cout<<"Cuantas columnas?: ";
cin>>NC;
srand(time(NULL));
for(f=0;f<NF;f++)
for(c=0;c<NC;c++)
{
//cout<<"M["<<f<<" "<<c<<"]: ";
//cin>>M[f][c];
dato = 1 + rand() % 100; // aleatorios (1-100)
M[f][c]=dato;
}

break;
case 2:
cout<<"\nMOSTRANDO LA NUEVA MATRIZ :"<<endl;

for(f=0;f<NF;f++)
{
cout<<endl;
for(c=0;c<NC;c++)
cout<<M[f][c]<<"\t";
}
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
break;
case 9:
break;
default: cout<<"\nERROR ESA OPCION NOP EXISTE...\n";

cout<<"\n\n...desea continuar s/n:? ";


cin>>op2;
}while(op2=='s'||op2=='S');
return 0;
}

RELLENANDO LA MATRIZ DE NUMEROS ALEATOREOS

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main()
{
int numeros[100][100], dato, nfilas, ncol;

cout << "Digite el numero de filas: ";


cin >> nfilas;
cout << "Digite el numero de columnas: ";
cin >> ncol;

srand(time(NULL));

// rellenando matriz de numeros aleatorios


for (int i = 0; i < nfilas; i++)
{
for (int j = 0; j < ncol; j++)
{
dato = 1 + rand() % 100; // aleatorios (1-100)
numeros[i][j] = dato;
}
}
return 0;
}

METODOS DE ORDENAMIENTO

El método de ordenamiento es un proceso secuencial especifico en la cual se organizan los


datos tanto crecientes como también decrecientemente, que ocupan en el espacio más directo
de la ordenación.
Según (Luis.Hernandez.G) Es la operación de arreglar los elementos en algún orden
secuencial de acuerdo a un criterio de ordenamiento. El propósito principal de un ordenamiento
es el de facilitar las búsquedas de los miembros del conjunto ordenado. Ordenar un grupo de
datos significa mover los datos o sus referencias para que queden en una secuencia por
categorías y en forma ascendente o descendente (2009.Pág.653)

EJEMPLO MOSTRADO EN CLASE ACERCA DEL METODO DE ORDENAMIENTO

1. ORDENANDO ARREGLOS

#include <iostream>

using namespace std;

int main(int argc, char** argv)


{
int A[10],B[10],C[10],U[30],Inter[10],i,NA,NB,NC,NU,
op,k,KD,contA=0,contB=0,contC=0,m,x,y,z;
char opci;

do{
system("cls");
cout<<"* MENU DE OPCIONES *\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Mostrar Arreglo *\n";
cout<<"* 3) Ordenar Arreglo *\n";
cout<<"*\n ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- ARREGLO A -----\n";
do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>10);

NA = contA+KD;

for(i=contA;i<NA;i++)
{
cout<<"A["<<i<<"]: ";
cin>>A[i];
contA++;
}

break;
case 2:
system("cls");
cout<<"\nMOSTRANDO EL ARREGLO: \n";
cout<<"\n----- ARREGLO A "<<NA<<" DATOS-----\n";
for(i=0;i<NA;i++)
cout<<"A["<<i<<"]: "<<A[i]<<endl;

break;
case 3:
system("cls");

break;

default: cout<<"...Error esa opcion no existe\n";


}
cout<<"...DESEA CONTINUAR S/N?: ";
cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";

return 0;
}

2. ORDENANDO ARREGLOS ASCENDENTEMENTE

#include <iostream>

using namespace std;

int main(int argc, char** argv)


{
int A[10],Aux,i,NA,op,KD,contA=0,j;
char opci;

do{
system("cls");
cout<<"* MENU DE OPCIONES *\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Mostrar Arreglo *\n";
cout<<"* 3) Ordenar Arreglo *\n";
cout<<"*\n ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- ARREGLO A -----\n";
do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>10);

NA = contA+KD;

for(i=contA;i<NA;i++)
{
cout<<"A["<<i<<"]: ";
cin>>A[i];
contA++;
}

break;
case 2:
system("cls");
cout<<"\nMOSTRANDO EL ARREGLO: \n";
cout<<"\n----- ARREGLO A "<<NA<<" DATOS-----\n";
for(i=0;i<NA;i++)
cout<<"A["<<i<<"]: "<<A[i]<<endl;

break;
case 3:
system("cls");
for(i=0;i<NA-1;i++)
for(j=i+1;j<NA;j++)
if(A[i]>A[j])
{
Aux=A[i];
A[i]=A[j];
A[j]=Aux;
}

cout<<"\nDatos ordenados ascendentemente, con exito...\n";

break;

default: cout<<"...Error esa opcion no existe\n";

cout<<"...DESEA CONTINUAR S/N?: ";


cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";

return 0;
}

METODO BURBUJITA

Este método es uno de los más usados por la mayoría de los estudiantes, ya que nos facilita un
mejor comprendimiento, suele ser menos eficiente ya que no suele utilizarse pero si aprender
de ello (Luis Hernandez.G.2010.Pág.655)

(Montserrat.S) Se basa en recorrer el array ("realizar una pasada") un cierto número de veces,
comparando pares de valores que ocupan posiciones adyacentes (0-1,1-2,...). Si ambos datos
no están ordenados, se intercambian. Esta operación se repite n-1 veces, siendo n el tamaño
del conjunto de datos de entrada.(2009.Pág.34).

EJERCICIOS APLICADOS EN CLASE

BUSQUEDA VERSION 1

#include <iostream>

using namespace std;

int main(int argc, char** argv)


{
int A[20],Aux,i,NA,op,KD,contA=0,j,dato,band=0,
inf,sup,mitad, posicion;
char opci;

do{
system("cls");
cout<<"* MENU DE OPCIONES *\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Mostrar Arreglo *\n";
cout<<"* 3) Buscar dato secuencial *\n";
cout<<"*\n ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- ARREGLO A -----\n";
do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>20);

NA = contA+KD;

for(i=contA;i<NA;i++)
{
cout<<"A["<<i<<"]: ";
cin>>A[i];
contA++;
}

break;
case 2:
system("cls");
cout<<"\nMOSTRANDO EL ARREGLO: \n";
cout<<"\n----- ARREGLO A "<<NA<<" DATOS-----\n";
for(i=0;i<NA;i++)
cout<<A[i]<<" ";

break;
case 3:
system("cls");
cout<<"BUSQUEDA SECUENCIAL O LINEAL\n";
cout<<"\nDigite el dato a buscar: ";
cin>>dato;

for(i=0;i<NA;i++)
if(A[i]==dato)
{
band=1;
posicion=i;
}

if(band==1)
cout<<"dato hallado en la posicion: "<<posicion;
else
cout<<"El dato no se encuentra en el arreglo";
break;

default: cout<<"...Error esa opcion no existe\n";


}
cout<<"\n...DESEA CONTINUAR S/N?: ";
cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";

return 0;
}
METODO POR SELECCIÓN

Este método tiene una similitud al método burbuja, lo que le diferencia es que el ordenamiento
por selección ordena los datos a la matriz repetidamente haciendo que el número final o
también llamado menor se pase al principio.

(Jair Vasquez.P) El método por inserción binaria es una mejora del método de inserción directa.
La mejora consiste en realizar una búsqueda binaria en lugar de una búsqueda secuencial,
para insertar un elemento en la parte izquierda del arreglo, que ya se encuentra ordenado
(2009.Pág.21).

EJEMPLO COMO TAREA

ORDENANDO LOS DATOS CON EL METODO POR SELECCIÓN.

#include <iostream>

using namespace std;

int main(int argc, char** argv)


{
int A[10],Aux,i,NA,op,KD,contA=0, j;
char opci, minimo;

do{
system("cls");
cout<<"* MENU DE OPCIONES *\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Mostrar Arreglo *\n";
cout<<"* 3) Ordenar Arreglo *\n";
cout<<"*\n ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- ARREGLO A -----\n";
do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>10);

NA = contA+KD;

for(i=contA;i<NA;i++)
{
cout<<"A["<<i<<"]: ";
cin>>A[i];
contA++;
}

break;
case 2:
system("cls");
cout<<"\nMOSTRANDO EL ARREGLO: \n";
cout<<"\n----- ARREGLO A "<<NA<<" DATOS-----\n";
for(i=0;i<NA;i++)
cout<<"A["<<i<<"]: "<<A[i]<<endl;

break;
case 3:
system("cls");
for(i=0;i<KD-1;i++)
for(j=i+1;j<KD;j++)

if(A[i] > A [j])


{
Aux = A[i];
A[i]= A[j];
A[j]= Aux;
}

cout<<"\nDatos ordenados ascendentemente, con exito...\


n";
for(i=0;i<KD;i++)
{
cout<<A[i]<<" ";

break;

default: cout<<"...Error esa opcion no existe\n";

cout<<"...DESEA CONTINUAR S/N?: ";


cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";

return 0;
}

BUSQUEDA BINARIA

Es un algoritmo de un elemento de una lista ordenada de manera eficiente, reduce todas las
ubicaciones a una sola de manera introductiva, se usan más para encontrar elementos en un
arreglo (Jair Vasquez.P.2013.Pág.25).

(José Álvarez.B) El hecho de que el vector este ordenado se puede, también, aprovechar para
conseguir una mayor eficiencia planteando el siguiente algoritmo (2011.Pág.9).

EJERCICIO DE DATO SECUENCIAL Y BUSQUEDA BINARIA

#include <iostream>

using namespace std;

int main(int argc, char** argv)


{
int A[20],Aux,i,NA,op,KD,contA=0,j,dato,band=0,
inf,sup,mitad, posicion;
char opci;

do{
system("cls");
cout<<"* MENU DE OPCIONES *\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Mostrar Arreglo *\n";
cout<<"* 3) Buscar dato secuencial *\n";
cout<<"* 4) Busqueda binaria *\n";
cout<<"*\n ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- ARREGLO A -----\n";
do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>20);
NA = contA+KD;

for(i=contA;i<NA;i++)
{
cout<<"A["<<i<<"]: ";
cin>>A[i];
contA++;
}

break;
case 2:
system("cls");
cout<<"\nMOSTRANDO EL ARREGLO: \n";
cout<<"\n----- ARREGLO A "<<NA<<" DATOS-----\n";
for(i=0;i<NA;i++)
cout<<A[i]<<" ";

break;
case 3:
system("cls");
cout<<"BUSQUEDA SECUENCIAL O LINEAL\n";
cout<<"\nDigite el dato a buscar: ";
cin>>dato;
band=0;
for(i=0;i<NA;i++)
if(A[i]==dato)
{
band=1;
posicion=i;
break;
}

if(band==1)
cout<<"dato hallado en la posicion: "<<posicion;
else
cout<<"El dato no se encuentra en el arreglo";

break;
case 4:
system("cls");
cout<<"BUSQUEDA BINARIA\n";
cout<<"\nDigite el dato a buscar: ";
cin>>dato;
//////ORDENANDO CON BURBUJITA//////
for(i=0;i<NA-1;i++)
for(j=i+1;j<NA;j++)
if(A[i]>A[j])
{
Aux=A[i];
A[i]=A[j];
A[j]=Aux;
}

///////////
//Algoritmo de la Busqueda Binaria
inf=0;
sup=NA-1;
i=0;
while((inf<=sup)&&(i<NA))
{
mitad = (inf+sup)/2;
cout<<"\nmitad: "<<mitad<<endl;
if(A[mitad] == dato)
{
band=1;
break;
}

if(A[mitad]>dato)
sup = mitad;

if(A[mitad]<dato)
inf = mitad;

i++;
}

if(band == 1)
cout<<"El numero SI se encontro en la pos: "<<mitad<<endl;
else
cout<<"El numero NO se encontro";
break;
default: cout<<"...Error esa opcion no existe\n";

cout<<"\n...DESEA CONTINUAR S/N?: ";


cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";
return 0;
}
BUSQUEDA BINARIA

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
cout << "Ingrese el tamaño del arreglo: ";
int n;
cin >> n;
int arreglo[n];
for (int i = 0; i < n; i++)
{
cout << "Ingrese el valor de A[" << i <<"]: ";
cin >> arreglo[i];
}
// ordenar el arreglo
for (int i = 0; i < n; i++)
{
sort(arreglo, arreglo + n);
}
// mostrar el arreglo ordenado
cout << "\nEl arreglo ordenado es: \n";
for (int i = 0; i < n; i++)
{
cout << arreglo[i] << " ";
}
// busqueda binaria
int busqueda;
cout << "\n\nIngrese el valor a buscar: ";
cin >> busqueda;

int inicio = 0;
int fin = n - 1;
int medio;
bool encontrado = false;
while (inicio <= fin && !encontrado)
{
medio = (inicio + fin) / 2;
if (arreglo[medio] == busqueda)
{
encontrado = true;
}
else if (arreglo[medio] > busqueda)
{
fin = medio - 1;
}
else
{
inicio = medio + 1;
}
}

if (encontrado)
{
cout << "El valor " << busqueda << " se encuentra en la posicion " << medio << endl;
}
else
{
cout << "El valor " << busqueda << " no se encuentra en el arreglo" << endl;
}
return 0;
}

ELIMINANDO UN ELEMENTO

#include <iostream>
#include <conio.h>

using namespace std;

int main(int argc, char** argv)


{
int A[20],Aux,i,NA,op,KD,contA=0,j,dato,band=0,
inf,sup,mitad, posicion;
char opci;

do{
system("cls");
cout<<"* MENU DE OPCIONES *\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Listar Arreglo *\n";
cout<<"* 3) Eliminar un elemento *\n";
cout<<"* 4) ---------------------- *\n";
cout<<"*\n ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- ARREGLO A -----\n";
do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>20);

NA = contA+KD;

for(i=contA;i<NA;i++)
{
cout<<"A["<<i<<"]: ";
cin>>A[i];
contA++;
}

break;
case 2:
system("cls");
cout<<"\nMOSTRANDO EL ARREGLO: \n";
cout<<"\n----- ARREGLO A "<<NA<<" DATOS-----\n";
for(i=0;i<NA;i++)
{
cout<<A[i]<<" ";
getch();
}

break;
case 3:
system("cls");
cout<<"\nELIMINAR UN DATO DE LA LISTA\n";
cout<<"Ingrese dato a eliminar: ";
cin>>dato;
//////buscando dato a eliminar///////////
band=0;
for(i=0;i<NA;i++)
if(dato==A[i])
{
posicion=i;
band=1;
break;
}
if(band==1)
{
/////eliminando dato hallado////////////
if(posicion==(NA-1))
{
NA=NA-1;
contA=NA;
}
else
{
for(i=posicion;i<NA-1;i++)
A[i]=A[i+1];

NA=NA-1;
contA=NA;
}
}
else
cout<<"Dato no hallado...";

break;
case 4:
system("cls");

break;

default: cout<<"...Error esa opcion no existe\n";

cout<<"\n...DESEA CONTINUAR S/N?: ";


cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";

return 0;
}

*****************************************************
CASE 2:
system("cls"); cout<<"\nMOSTRANDO EL ARREGLO: \n"; cout<<"\n----- ARREGLO A
"<<NA<<" DATOS-----\n"; i=0; do{ cout<<A[i]<<" "; tecla=getch(); if(tecla=='A') i++; if(i==NA) i=0;
}while(tecla=='A'); break;

CASE 2:
system("cls"); cout<<"\nMOSTRANDO EL ARREGLO: \n"; cout<<"\n----- ARREGLO A
"<<NA<<" DATOS-----\n"; i=0; do{ //cout<<"\n valor de i: "<<i<<" NA: "<<NA<<endl;
cout<<A[i]<<" "; tecla=getch(); if(i==(NA-1)) i=0; else if(tecla=='A'&& i<(NA-1)) i++;
//getch(); }while(tecla!='X'); break;

CASE 4

system("cls");
cout<<"\nLISTA CIRCULAR IZQUIERDA: \n";
i=NA-1;
do{
cout<<A[i]<<" ";
tecla=getch();
if(tecla=='R')
i--;
if(i==-1)
i=NA-1;
}
while(tecla=='R');

system("cls");
cout<<"\nLISTA DOBLEMENTE ENLAZADA: \n";
i=0;
do{
cout<<A[i]<<" ";
tecla=getch();
if(tecla=='A') i++;
if(i==NA)
i=0;
if(tecla=='R')
i--;
if(i==-1)
i=NA-1;
}
while(tecla=='R'|| tecla=='A');
break;

LISTAS SIMPLES ENLAZADA O CIRCULAR


LISTAS SIMPES ENLAZADAS

Es un conjunto de nudos alineados uno después del otro y unidos entre sí, a diferencia de un
arreglo el tamaño no es fijo ya que está determinado por una referencia.

La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este
enlace apunta al siguiente nodo en la lista, o al valor NULL o a la lista vacía, si es el último
nodo (Eliomar.Nieves.2009.Pág.11).

LISTAS CIRCULARES

Una lista circular es una lista lineal en la que el último nodo apunta al
primero.
LISTAS DOBLEMENTE ENLAZADAS

Es una estructura de datos que está compuesta por nodos, cada nodo tiene dos punteros o un
dato, también podemos tener dos nodos centinelas, que van al principio y al final lo cual no
tienen ningún dato y que nos facilitara el recorrido de las listas en dos direcciones
(Raúl.H.Ruiz.G.2007.Pág.8).

(Raúl.H.Ruiz.G.) Las listas doblemente enlazadas no necesitan un nodo especial para acceder
a ellas, pueden recorrerse en ambos sentidos a partir de cualquier nodo, esto es porque a partir
de cualquier nodo, siempre es posible alcanzar cualquier nodo de la lista, hasta que se llega a
uno de los extremos (2007.Pág.9).

CONCEPTO DE PILAS CON ARREGLOS

Una pila es un concepto de datos de entradas ordenadas tales que solo se pueden introducir y
eliminar por un extremo, llamado cima.

 Las operaciones usuales en la pila son insertar (push) sirve para añadir un elemento en
la cima de la pila y quitar (pop) que sirve para sacar o eliminar un elemento.
CONCEPTO DE COLAS

Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la
que la operación de inserción se realiza por un extremo y la extracción por el otro.

 Las operaciones usuales en las colas son insertar y quitar, lo cual insertar es para
añadir elemento al final de la cola, y quitar es para extraer in elemento por el extremo
opuesto.

ORDENAMIENTO Y BUSQUEDA CON EL USO DEL TIPO DE DATO ABSTRACTO “


STRUCT”.

CASO ( CEMENTERIO )

#include <iostream>
#include <conio.h>

using namespace std;

struct T_cadaver {
char DNI[10];
char Nom[30];
char Pab[30];
//char Ubicacion
char Estado;
char Sexo;
int AnioF;
};

int main(int argc, char** argv)


{
T_cadaver Persona[100];
int A[100],Aux,i,NA,op,KD,contA=0,j,dato,posicion,band;
char opci,tecla;

do{
system("cls");
cout<<"* MENU DE OPCIONES *\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Mostrar Lista *\n";
cout<<"* 3) ............ *\n";
cout<<"* 4) ............ *\n";
cout<<"*\n ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- ARREGLO A -----\n";
do{
cout<<"Cuantos datos ingresara?: ";
cin>>KD;
}while(KD<0 || KD>100);

NA = contA+KD;

for(i=contA;i<NA;i++)
{
cout<<"Persona["<<i<<"]: ";
cout<<"\nDNI: ";
cin>>Persona[i].DNI;
cout<<"\nApellidos y Nombres: ";
cin.getline(Persona[i].Nom,30,'\n');
fflush(stdin);
cout<<"\nPabellon: ";
cin.getline(Persona[i].Pab,30,'\n');
cout<<"\nPerpetuo o temporal: ";
cin>>Persona[i].Estado;
cout<<"\nSexo: ";
cin>>Persona[i].Sexo;
fflush(stdin);
cout<<"\nAnio de fallecimiento: ";
cin>>Persona[i].AnioF;

contA++;
}

break;
case 2:
system("cls");
cout<<"\nMOSTRANDO EL ARREGLO: \n";
cout<<"\n----- ARREGLO A "<<NA<<" DATOS-----\n\n";
for(i=0;i<NA;i++)
{
cout<<"Persona["<<i<<"]: ";
cout<<"\nDNI: "<<Persona[i].DNI;
cout<<"\nApellidos y Nombres: "<<Persona[i].Nom;
cout<<"\nPabellon: "<<Persona[i].Pab;
cout<<"\nPerpetuo o temporal: "<<Persona[i].Estado;
cout<<"\nSexo: "<<Persona[i].Sexo;
cout<<"\nAnio de fallecimiento: "<<Persona[i].AnioF;
getch();
}

break;
case 3:
system("cls");

break;
case 4:
system("cls");

break;

default: cout<<"...Error esa opcion no existe\n";

cout<<"\n...DESEA CONTINUAR S/N?: ";


cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";

return 0;
}
CASO VETERINARIA

#include <iostream>
#include <conio.h>
#include <string.h>

using namespace std;


struct T_mascota{
char Codigo[10];
char Nom_masc[20];
char Especie[10];
char Sexo;
char Nom_due[30];
char DNI[10];
char Cel[10];
char Enferm[20];
};

int main(int argc, char** argv)


{
T_mascota Paciente[10];
int A[100],Aux,i,NA,op,KD,contA=0,j,dato,posi,band;
char opci,tecla,DNI_due[10];

do{
system("cls");
cout<<"* MENU DE OPCIONES *\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Mostrar Lista *\n";
cout<<"* 3) ............ *\n";
cout<<"* 4) ............ *\n";
cout<<"*\n ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- BASE VETERINARIA -----\n";
do{
cout<<"Cuantos PACIENTES ingresara?: ";
cin>>KD;
}while(KD<0 || KD>10);

NA = contA+KD;
for(i=contA;i<NA;i++)
{
cout<<"\nPACIENTE["<<i<<"]: \n";
fflush(stdin);
cout<<"Codigo: ";
cin>>Paciente[i].Codigo;
fflush(stdin);
cout<<"Nombre de la mascota: ";
cin.getline(Paciente[i].Nom_masc,20,'\n');
cout<<"Especie: ";
cin>>Paciente[i].Especie;
cout<<"Sexo: ";
cin>>Paciente[i].Sexo;
fflush(stdin);
cout<<"Nombre del dueno: ";
cin.getline(Paciente[i].Nom_due,30,'\n');
fflush(stdin);
cout<<"DNI: ";
cin>>Paciente[i].DNI;
cout<<"Celular: ";
cin>>Paciente[i].Cel;
cout<<"Enfermedad de la mascota: ";
cin.getline(Paciente[i].Enferm,20,'\n');

contA++;
}

break;
case 2:
system("cls");
cout<<"\nMOSTRANDO DATOS DE PACIENTES: \n";
cout<<"\n----- EXISTEN "<<NA<<" PACIENTES-----\n\n";
for(i=0;i<NA;i++)
{
cout<<"\nPACIENTE["<<i<<"]: \n";
cout<<"Codigo: "<<Paciente[i].Codigo;
cout<<"\nNombre de la mascota:
"<<Paciente[i].Nom_masc;
cout<<"\nEspecie: "<<Paciente[i].Especie;
cout<<"\nSexo: "<<Paciente[i].Sexo;
cout<<"\nNombre del dueño:
"<<Paciente[i].Nom_due;
cout<<"\nDNI: "<<Paciente[i].DNI;
cout<<"\nCelular: "<<Paciente[i].Cel;
cout<<"\nEnfermedad de la mascota:
"<<Paciente[i].Enferm;
getch();
}

break;
case 3:
system("cls");
cout<<"\nBUSQUEDA POR DNI DEL DUENO: \n";
////indicar de DNI a buscar
cout<<"Ingrese DNI a buscar: ";
cin>>DNI_due;
///comparar cada casilla con el DNI ingresado
band=0;
for(i=0;i<NA;i++)
if(strcmp(DNI_due,Paciente[i].DNI)==0)
//DNI_due==Paciente[i].DNI
{
posi=i;
band=1;
break;
}

if(band==1)
{
cout<<"\nPACIENTE HALLADO, EN EL CASILLERO:
"<<posi<<endl;
cout<<"\nPACIENTE["<<posi<<"]: \n";
cout<<"Codigo: "<<Paciente[posi].Codigo;
cout<<"\nNombre de la mascota:
"<<Paciente[posi].Nom_masc;
cout<<"\nEspecie: "<<Paciente[posi].Especie;
cout<<"\nSexo: "<<Paciente[posi].Sexo;
cout<<"\nNombre del dueño:
"<<Paciente[posi].Nom_due;
cout<<"\nDNI: "<<Paciente[posi].DNI;
cout<<"\nCelular: "<<Paciente[posi].Cel;
cout<<"\nEnfermedad de la mascota:
"<<Paciente[posi].Enferm;
}

break;
case 4:
system("cls");

break;

default: cout<<"...Error esa opcion no existe\n";


}
fflush(stdin);
cout<<"\n...DESEA CONTINUAR S/N?: ";
cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";

return 0;
}

CASO VETERINARIA (VERSION 2)

#include <iostream>
#include <conio.h>
#include <string.h>

using namespace std;


struct T_mascota{
char Codigo[10];
char Nom_masc[20];
char Especie[10];
char Sexo;
char Nom_due[30];
char DNI[10];
char Cel[10];
char Enferm[20];
int Edad_masc;
};

int main(int argc, char** argv)


{
T_mascota Paciente[10];
int A[100],Aux,i,NA,op,KD,contA=0,j,dato,posi,band;
char opci,tecla,DNI_due[10];

do{
system("cls");
cout<<"* MENU DE OPCIONES *\n";
cout<<"* 1) Ingreso de datos *\n";
cout<<"* 2) Mostrar Lista *\n";
cout<<"* 3) Busqueda por DNI *\n";
cout<<"* 4) Buscar perros menores de 3 anios *\n";
cout<<"* 5) Ordenar por Ap_nom del dueño *\n";
cout<<"*\n ...ELIJA UNA OPCION....: ";
cin>>op;
switch(op)
{
case 1:
cout<<"\n----- BASE VETERINARIA -----\n";
do{
cout<<"Cuantos PACIENTES ingresara?: ";
cin>>KD;
}while(KD<0 || KD>10);

NA = contA+KD;

for(i=contA;i<NA;i++)
{
cout<<"\nPACIENTE["<<i<<"]: \n";
fflush(stdin);
cout<<"Codigo: ";
cin>>Paciente[i].Codigo;
fflush(stdin);
cout<<"Nombre de la mascota: ";
cin.getline(Paciente[i].Nom_masc,20,'\n');
cout<<"Especie: ";
cin>>Paciente[i].Especie;
cout<<"Sexo: ";
cin>>Paciente[i].Sexo;
fflush(stdin);
cout<<"Nombre del dueno: ";
cin.getline(Paciente[i].Nom_due,30,'\n');
fflush(stdin);
cout<<"DNI: ";
cin>>Paciente[i].DNI;
cout<<"Celular: ";
cin>>Paciente[i].Cel;
fflush(stdin);
cout<<"Enfermedad de la mascota: ";
cin.getline(Paciente[i].Enferm,20,'\n');
fflush(stdin);
cout<<"Edad de la mascota: ";
cin>>Paciente[i].Edad_masc;

contA++;
}

break;
case 2:
system("cls");
cout<<"\nMOSTRANDO DATOS DE PACIENTES: \n";
cout<<"\n----- EXISTEN "<<NA<<" PACIENTES-----\n\n";
for(i=0;i<NA;i++)
{
cout<<"\nPACIENTE["<<i<<"]: \n";
cout<<"Codigo: "<<Paciente[i].Codigo;
cout<<"\nNombre de la mascota:
"<<Paciente[i].Nom_masc;
cout<<"\nEspecie: "<<Paciente[i].Especie;
cout<<"\nSexo: "<<Paciente[i].Sexo;
cout<<"\nNombre del dueño:
"<<Paciente[i].Nom_due;
cout<<"\nDNI: "<<Paciente[i].DNI;
cout<<"\nCelular: "<<Paciente[i].Cel;
cout<<"\nEnfermedad de la mascota:
"<<Paciente[i].Enferm;
cout<<"\nEdad de la mascota:
"<<Paciente[i].Edad_masc;
getch();
}

break;
case 3:
system("cls");
cout<<"\nBUSQUEDA POR DNI DEL DUENO: \n";
////indicar de DNI a buscar
cout<<"Ingrese DNI a buscar: ";
cin>>DNI_due;
///comparar cada casilla con el DNI ingresado
band=0;
for(i=0;i<NA;i++)
if(strcmp(DNI_due,Paciente[i].DNI)==0)
//DNI_due==Paciente[i].DNI
{
posi=i;
band=1;
break;
}

if(band==1)
{
cout<<"\nPACIENTE HALLADO, EN EL CASILLERO:
"<<posi<<endl;
cout<<"\nPACIENTE["<<posi<<"]: \n";
cout<<"Codigo: "<<Paciente[posi].Codigo;
cout<<"\nNombre de la mascota:
"<<Paciente[posi].Nom_masc;
cout<<"\nEspecie: "<<Paciente[posi].Especie;
cout<<"\nSexo: "<<Paciente[posi].Sexo;
cout<<"\nNombre del dueño:
"<<Paciente[posi].Nom_due;
cout<<"\nDNI: "<<Paciente[posi].DNI;
cout<<"\nCelular: "<<Paciente[posi].Cel;
cout<<"\nEnfermedad de la mascota:
"<<Paciente[posi].Enferm;
cout<<"\nEdad de la mascota:
"<<Paciente[i].Edad_masc;
}

break;
case 4:
system("cls");
cout<<"\nBUSQUEDA DE PERROS MENORES DE 3
ANIOS: \n";
for(i=0;i<NA;i++)
if(strcmp(Paciente[i].Especie,"perro")==0 &&
Paciente[i].Edad_masc<3)
{
cout<<"\nPACIENTE["<<i<<"]: \n";
cout<<"Codigo: "<<Paciente[i].Codigo;
cout<<"\nNombre de la mascota:
"<<Paciente[i].Nom_masc;
cout<<"\nEspecie: "<<Paciente[i].Especie;
cout<<"\nSexo: "<<Paciente[i].Sexo;
cout<<"\nNombre del dueño:
"<<Paciente[i].Nom_due;
cout<<"\nDNI: "<<Paciente[i].DNI;
cout<<"\nCelular: "<<Paciente[i].Cel;
cout<<"\nEnfermedad de la mascota:
"<<Paciente[i].Enferm;
cout<<"\nEdad de la mascota:
"<<Paciente[i].Edad_masc;
}

break;

default: cout<<"...Error esa opcion no existe\n";


}
fflush(stdin);
cout<<"\n...DESEA CONTINUAR S/N?: ";
cin>>opci;
}while(opci=='S' || opci=='s');
cout<<"Gracias...hasta pronto";
return 0;
}

BIBLIOGRAFIAS.

https://upload.wikimedia.org/wikipedia/commons/1/17/Programacion.pdf (pág. 1)
http://robotica.uv.es/pub/Libro/PDFs/CAPI5.pdf
https://es.wikipedia.org/wiki/Estructura_de_datos
•$childt Herbert,#$$ %ara programadores.Mc\raJMHill. &KK0.
•httpA''es.Ji]ipedia.org'Ji]i'Matriz"_(matem^C/^*&tica)
https://www.mheducation.es/bcv/guide/capitulo/8448198441.pdf (Pág. 3)
https://es.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-
search
https://www.cs.buap.mx/~ymoyao/admin/archivos/arreglos_bidi4_3.pdf
https://kesquivel.files.wordpress.com/2010/08/listas-circularesv2010.pdf

También podría gustarte