Está en la página 1de 42

ESTRUCTURA DE DATOS

INCORPORADOS
Agenda
Arreglos Lineales, Bidimensionales
Registros
Matrices
ARREGLOS UNIDIMENSIONALES.
DATOS DE TIPO ESTRUCTURADO
En los lenguajes existen tipos de datos
estructurados los cuales nos permiten tener
variables que manejan conjunto de valores, los
cuales pueden ser del mismo tipo o de distinto
tipo.
ARREGLOS UNIDIMENSIONALES.
ARREGLOS (array)
Los arreglos son variables de tipo estructurado
que manejan un conjunto de datos del mismo
tipo.
Los arreglos pueden ser del tipo
unidimensional y multidimensional.
A los unidimensionales tambin se les conoce
como vectores.
A los bidimensionales se les conoce como
(matrices)

ARREGLOS UNIDIMENSIONALES.
Un arreglo unidimensional es un tipo de datos
estructurado que est formado de una
coleccin finita y ordenada de datos del
mismo tipo.

Para implementar arreglos unidimensionales
se debe reservar espacio en memoria, y se
debe proporcionar la direccin base del
arreglo, la cota superior y la inferior.
ARREGLOS UNIDIMENSIONALES.
REPRESENTACION EN MEMORIA
Los arreglos se representan en memoria de la
forma siguiente:

x : array[1..5] de enteros
ARREGLOS UNIDIMENSIONALES.
ACCESO A LAS DIFERENTES
LOCALIDADES DE UN ARREGLO


x[0] x[1] x[2] x[3] x[4] x[5]
5 15 25 35 45 55
ARREGLOS UNIDIMENSIONALES.
#include <iostream.h>
#include <conio.h>

void main(){
int x[6];

x[0] = 5;
x[1] = 15;
x[2] = 25;
x[3] = 35;
x[4] = 45;
x[5] = 55;

//Imprimir en pantalla el valor en la posicion 4
cout<<x[3];

getch();
}
ARREGLOS UNIDIMENSIONALES.
DECLARACION DE UN ARREGLO
UNIDIMENSIONAL
int x[20];
float y[10];
char a[15];
int z[5] = {1,4,0,10,-2};
char c[6] = {a,e,i,o,u,\0};



ARREGLOS UNIDIMENSIONALES.
Hacer un programa que inicializa un arreglo
de enteros a ceros, los lee por teclado y los
muestra en pantalla.

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

void mostrar(int arreglo[]){
for(int i=0;i<10;i++){
cout<<arreglo[i]<<" ";
}
}

void main(){
gotoxy(3,3);
cout<<"Algoritmos y Estructura de Datos II";
gotoxy(3,5);
cout<<"ARREGLOS UNIDIMENSIONALES";
gotoxy(3,7);
cout<<"Programa que inicializa un arreglo de enteros a ceros.";
gotoxy(3,9);
cout<<"Lee los valores y muestra en pantalla los valores de ";
gotoxy(3,11);
cout<<"inicializacion y los leidos en pantalla.\n\n";

int x[10]={0};
mostrar(x);
cout<<"\n";

for(int i=0;i<10;i++){
cout<<"Ingrese el valor de la localidad "<<i<<" : ";
cin>>x[i];
}

mostrar(x);
getch();
}
Ejercicios
Crear un arreglo para leer las notas de 15
alumnos del Curso AED II.
Diga cul es la nota ms alta, y cul la ms
baja. Utilice funciones.
Crear un arreglo de tipo char para
almacenar el nombre del da.
Ejemplo: lunes, martes, mircoles, etc.
#include <iostream.h>
#include <conio.h>

float notaAlta(float arreglo[15]){

float nota = arreglo[0];
for (int x=0;x<15;x++){
if (arreglo[x]>nota){
nota = arreglo[x];
}
}
return nota;
}

void main(){
float notas[15];
cout<<"CURSO: Algoritmos y Estructuras de Datos II\n\n";
cout<<"Ingrese la nota de los Alumnos\n";

for(int i=0;i<15;i++){
cout<<"Ingrese la nota del alumno "<<i<<": ";
cin>>notas[i];
}

cout<<"La nota mas alta es: "<<notaAlta(notas);
getch();
}
#include <iostream.h>
#include <conio.h>

void main(){
char semana[9]="Miercoles";

char nomSemana[9]={'M','i','e','r','c','o','l','e','s'};

cout<<semana;
getch();
}
ARREGLOS BIDIMENSIONALES
ARREGLOS BIDIMENSIONALES,
MATRICES
Este tipo de arreglos se deben direccionar con
dos indices: una fila y una columna.

ARREGLOS BIDIMENSIONALES
a [3] [4]
columna 0 columna 1 columna 2 columna 3
fila 0 a [0] [0] a [0] [1] a [0] [2] a [0] [3]
fila 1 a [1] [0] a [1] [1] a [1] [2] a [1] [3]
fila 2 a [2] [0] a [2] [1] a [2] [2] a [2] [3]
ARREGLOS BIDIMENSIONALES.
Declaracion

int x[3][4];
int A[4][3];
float x[4][6];
char c[10]20];
A[2][0]=6;
Ejercicios
Elabore un programa modular que lea una
matriz de enteros de m filas y n columnas,
y calcule la suma de los elementos de cada
columna.
Programa
//Elabore un programa modular que lea una matriz de enteros de m filas y n columnas, y
//calcule la suma de los elementos de cada columna.

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

void main(){
int matriz[10][3];

cout<<"Ingrese los valores de la matriz:\n"
for(int i=0;i<10;i++){ //se usa para leer los valores
for(int j=0;j<3;j++){
cin>>matriz[i][j];
}
}
int suma=0;
for(int x=0;x<10;x++){
suma=suma+matriz[x][0]; //suma los valores de la col 0
}
getch();
}
Programa
//Elabore un programa que llene una matriz (5 filas por 4 columnas) con valores aleatorios de
0 a 20.

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

void main(){
int matriz[5][4];
for(int i=0;i<5;i++){
for(int j=0;j<4;j++){
matriz[i][j] = rand()%21;
}
}

for(int i=0;i<5;i++){
for(int j=0;j<4;j++){
cout<<matriz[i][j]<<"\t";
}
cout<<"\n";
}

getch();
}
Ejercicios
Se quiere dar los resultados de un torneo
de futbol de 4 equipos. Crear una matriz
para ingresar los resultados parciales, y
finalmente mostrar el equipo ganador.
Equipo 1 Equipo 2 Equipo 3 Equipo 4
Equipo 1 X G P G
Equipo 2 P X P G
Equipo 3 G G X G
Equipo 4 P P P X
//Se quiere dar los resultados de un torneo de futbol de 4 equipos. Crear una
matriz para ingresar los resultados parciales, y finalmente mostrar el equipo
ganador.

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

int mayor(int arreglo[4]){
int maximo = 0;
int ganador = 0;

for (int i=0;i<4;i++){
if (arreglo[i]>maximo){
maximo = arreglo[i];
}
}
for (int i=0;i<4;i++){
if (arreglo[i]==maximo){
ganador = i+1;
}
}
return ganador;
}
void main(){
char torneo[4][4];
int Equipo1=0, Equipo2=0, Equipo3=0, Equipo4=0;
int equipos[4];

torneo[0][0] = 'X';
torneo[0][1] = 'G';
torneo[0][2] = 'P';
torneo[0][3] = 'G';

torneo[1][0] = 'P';
torneo[1][1] = 'X';
torneo[1][2] = 'P';
torneo[1][3] = 'G';

torneo[2][0] = 'G';
torneo[2][1] = 'G';
torneo[2][2] = 'X';
torneo[2][3] = 'G';

torneo[3][0] = 'P';
torneo[3][1] = 'P';
torneo[3][2] = 'P';
torneo[3][3] = 'X';

//Contar los partidos ganados del Equipo 1
for(int i=0;i<4;i++){
if (torneo[0][i]=='G'){
Equipo1 = Equipo1 + 1;
}
}

//Contar los partidos ganados del Equipo 2
for(int i=0;i<4;i++){
if (torneo[1][i]=='G'){
Equipo2 = Equipo2 + 1;
}
}

//Contar los partidos ganados del Equipo 3
for(int i=0;i<4;i++){
if (torneo[2][i]=='G'){
Equipo3 = Equipo3 + 1;
}
}

//Contar los partidos ganados del Equipo 4
for(int i=0;i<4;i++){
if (torneo[3][i]=='G'){
Equipo4 = Equipo4 + 1;
}
}
cout<<"El Equipo 1 tuvo "<<Equipo1<<" partidos ganados\n";
cout<<"El Equipo 2 tuvo "<<Equipo2<<" partidos ganados\n";
cout<<"El Equipo 3 tuvo "<<Equipo3<<" partidos ganados\n";
cout<<"El Equipo 4 tuvo "<<Equipo4<<" partidos ganados\n";

equipos[0]=Equipo1;
equipos[1]=Equipo2;
equipos[2]=Equipo3;
equipos[3]=Equipo4;

cout<<"El equipo ganador es el Equipo : "<<mayor(equipos);

getch();
}
Ejercicios
Crear un arreglo bidimensional para
almacenar los nombres de los 7 das de la
semana.
REGISTROS
Un registro lo constituyen un conjunto de
elementos relacionados entre s cada uno
de los cuales recibe el nombre de CAMPO
o ATRIBUTO.
REGISTROS
Aunque un registro es un conjunto de
elementos se diferencia de un arreglo
lineal por lo siguiente:
o Un registro puede ser un conjunto de
datos no homogneos.
o Los elementos de un registro son
referencia a travs del nombre de cada
atributo por lo que no existe un orden
natural de los elementos.
REGISTROS

NOMBRE

SEXO Fecha de nacimiento EDAD
PATERNO MATERNO NOMBRES Da Mes Ao






REGISTROS
ESTUDIANTE

1. NOMBRE
APELLIDO PATERNO
APELLIDO MATERNO
NOMBRES
2. SEXO
3. FECHA DE NACIMIENTO
DIA
MES
AO
4. EDAD

REGISTROS
ESTRUCTURA DE DATOS (struct)
Otro de los tipos de datos estructurado que
existen son las estructuras (REGISTROS).

Las estructuras pueden manejar, al igual
que los arreglos, un conjunto de datos, pero
a diferencia de estos pueden ser de distinto
tipo de datos.

REGISTROS
struct <nombre>
{
campo 1;
campo 2;
campo n;
} variables;
REGISTROS
struct datos
{
char nombre[20];
int edad;
char telefono[9];
} d, x[5];
REGISTROS
Crear una estructura de datos para almacenar
los datos de un cliente:
- nombre,
- direccion (tipo de callle, nombre de calle,
numero, zona, distrito),
- telefono,
- fecha de nacimiento (dia, mes, ao),
- DNI,
- Email

REGISTROS
Hacer un programa que lea en una
estructura los datos de una persona:
nombre, edad y telefono.

MATRICES POCO DENSAS
Una matrz poco densa es aquella que est
formada por elementos que en su
mayora son ceros.
Este tipo de matrices son matrices cuadradas
que se dividen en los siguientes tipos:

Matrz triangular superior
Matrz triangular inferior
Matrz tridiagonal
MATRICES POCO DENSAS
MATRIZ TRIANGULAR SUPERIOR
En este tipo de matrz los elementos iguales
a cero se encuentran debajo de la
diagonal principal.

MATRICES POCO DENSAS
Para evitar el desperdicio de memoria que
se ocasionara al almacenar una matrz en
donde la mayora de los elementos son
ceros, es conveniente traspasar a un arreglo
unidimensional todos los elementos
diferentes de cero.
MATRICES POCO DENSAS
El arreglo con los elementos distintos de
cero de la matrz anterior es el siguiente:
5 8 2 7 4 -3 -6 9 -5 1
MATRICES POCO DENSAS
MATRIZ TRIANGULAR INFERIOR
En este tipo de matrices los elementos
iguales a cero se encuentran por
encima de la diagonal principal.

MATRICES POCO DENSAS
MATRIZ TRIDIAGONAL
En sta, los elementos diferentes de cero se
encuentran en la diagonal principal en las
diagonales por debajo encima de sta.

También podría gustarte