Vous êtes sur la page 1sur 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] 5

x[1] 15

x[2] 25

x[3] 35

x[4] 45

x[5] 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 fila 0 fila 1 fila 2 a [0] [0] a [1] [0] a [2] [0] columna 1 a [0] [1] a [1] [1] a [2] [1] columna 2 a [0] [2] a [1] [2] a [2] [2] columna 3 a [0] [3] a [1] [3] 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

Equipo 2

Equipo 3

Equipo 4

//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];

} return ganador;

for (int i=0;i<4;i++){ if (arreglo[i]==maximo){ ganador = i+1; }

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 PATERNO MATERNO NOMBRES SEXO Fecha de nacimiento Da Mes Ao EDAD

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:

-3

-6

-5

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.

Vous aimerez peut-être aussi