arrays (listas y tablas) en c++

29
ARRAYS (LISTAS Y TABLAS) Sugerencias y herramientas para crear para crear y presentar diapositivas en formato panorámico

Upload: diedex

Post on 19-Jun-2015

15.581 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: ARRAYS (LISTAS Y TABLAS) EN C++

ARRAYS (LISTAS Y TABLAS) ( )Sugerencias y herramientas para crear para crear y presentar diapositivas en formato panorámico

Page 2: ARRAYS (LISTAS Y TABLAS) EN C++

Contenido Contenido ArraysInicialización de un arrayArrays de caracteres y cadenas de textoArrays multidimensionalesArrays multidimensionalesUtilización de arrays como parámetrosOrdenación de listasBúsqueda en listasResumenE Ejercicios

Page 3: ARRAYS (LISTAS Y TABLAS) EN C++

ArraysArraysUna array (lista o tabla) es una secuencia de datos delmismo tipo. Los datos se llaman elementos del array y senumeran consecutivamente 0,1,2,3, etc. Normalmente elarray se utiliza para almacenar tipos tales como char, int oy p p ,floatLos elementos de un array se numeran, y estos números sedenominan valores índice o subíndice del arraydenominan valores índice o subíndice del array

Page 4: ARRAYS (LISTAS Y TABLAS) EN C++

Declaración de un arrayDeclaración de un arrayUn array se declara de modo similar a otros tiposy pde datos, excepto que se debe indicar alcompilador el tamaño o longitud del array. Lasintaxis para declarar un array de una dimensióndeterminada es;Tipo nombreArray [numeroDeElementos];

Int numeros[10];

Page 5: ARRAYS (LISTAS Y TABLAS) EN C++

ContCont…Se puede acceder a cada elemento del arrayutilizando un índice en el nombre del array

Printf(“%d \n”,numeros [4]);i li l l d l l 5 d l Lvisualiza el valor del elemento 5 del array. Los arrays

siempre comienzan en el elemento 0#define N 20#define N 20Float vector [N];Scanf(“%f”,&vector[2]);

Page 6: ARRAYS (LISTAS Y TABLAS) EN C++

Precaución Precaución

C no comprueba que los índices del array estánC no comprueba que los índices del array estándentro del rango definido. Así, por ejemplo, sepuede intentar acceder a números [12] y elpuede intentar acceder a números [12] y elcompilador no producirá ningún error, lo que puedeproducir un fallo en su programaproducir un fallo en su programa

Page 7: ARRAYS (LISTAS Y TABLAS) EN C++

Almacenamiento en memoria de los arraysAlmacenamiento en memoria de los arrays

Los elementos de losLos elementos de losarrays se almacenan enbloques contiguos Asíbloques contiguos. Asípor ejemplo los arrays

Int edades [5]Int edades [5];Char codigos [5]

Page 8: ARRAYS (LISTAS Y TABLAS) EN C++

Inicialización de un arrayInicialización de un arraySe deben asignar valores a los elementos del arrayg yantes de utilizarlos, tal como se asigna valores avariablesCuando se inicializa un array, el tamaño del array sepuede determinar automáticamente por las constantesd i i i li ióde inicialización

Int numeros [6]={10,20,30,40,50,60}I t [] {3 4 5}Int n[] ={3,4,5}

Page 9: ARRAYS (LISTAS Y TABLAS) EN C++

Ejemplo 8 2Ejemplo 8.2/*Programa que lee 8 numeros y a continuacion visualiza el total de los numeros*/ }#include <stdio.h>

#include <stdlib.h>

# define NUM 8

int main ()

}printf("\nLista de numeros: ");for (i=0; i<NUM; i++){

int main ()

{

int nums [NUM];

int i;

printf ("%d",nums[i]);total += nums[i];}printf("\nLa suma de los numeros es int total =0;

for (i=0; i<NUM; i++)

{

printf("Por favor, introduzca el numero; ");

printf( \nLa suma de los numeros es %d\n",total);

system("PAUSE");return 0;

scanf("%d",&nums[i]); }

Page 10: ARRAYS (LISTAS Y TABLAS) EN C++

Arrays de caracteres y cadenas de textoArrays de caracteres y cadenas de textoUna cadena de texto esun conjunto decaracteres, tales como<ABCDEFG> C soporta<ABCDEFG>. C soportacadenas de textoutilizando un array decaracteres que contengauna secuencia decaracteres

Page 11: ARRAYS (LISTAS Y TABLAS) EN C++

ContCont…El medio mas fácil de inicializar un array es hacer lainicialización de la declaración;

Char Cadena[7] = “ABCDEF”;La asignación de valores a cadena se puede hacer delLa asignación de valores a cadena se puede hacer delmodo siguiente;

Cadena [0]=‘A’;Cadena [1]=‘B’;…Cadena[6]=‘\0’;Cadena[6]= \0 ;

Page 12: ARRAYS (LISTAS Y TABLAS) EN C++

Ejemplo 8 4Ejemplo 8.4/*visualiza un array formado

i i */printf("\nIntroduzca una lista de %d

con enteros positivos*/#include <stdio.h>#include <stdlib.h>

p ( \elementos positivos.\n",MAX);for (i = 0; i < MAX; muestra[i]>0?++i:i)scanf ("%f",&muestra[i]);#include stdlib.h

#define MAX 10float muestra[MAX];

printf ("\nDatos leidos del teclado: " ) ;for ( i = 0; i < MAX; ++i)printf ("%f\t",muestra[i]) ;

int main(){int i;

system("PAUSE");return 0;}

int i;

Page 13: ARRAYS (LISTAS Y TABLAS) EN C++

Arrays multidimensionales Arrays multidimensionales Los arrays multidimensionales son aquellos que tienenmas de una dimensión y, en consecuencia, mas de uníndiceL l l d d di iLos arrays mas usuales son los de dos dimensiones,conocidos también por el nombre de tablas o matricesLa sintaxis para la declaración de un array de dosLa sintaxis para la declaración de un array de dosdimensiones es

<tipo de datoElemento><nombre array>[<numero defil ][ d l ]filas>][<numero de columnas>]

Page 14: ARRAYS (LISTAS Y TABLAS) EN C++

Inicialización de arrays multidimensionales Inicialización de arrays multidimensionales

Int tabla [2][3]={{51,52,53},{54,55,56}};{{ } { }}Int tabla2 [3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

Page 15: ARRAYS (LISTAS Y TABLAS) EN C++

Acceso a los elementos de los arrays bidimensionalesAcceso a los elementos de los arrays bidimensionales

Se puede acceder a los elementos de arrays bidimensionales dei l f l l d idi i ligual forma que a los elementos de un array unidimensionalEl formato general para la asignación directa de valores a loselementos es;

Inserción de elementos<nombre array>[indice fila][indice columna]=valor elemento;Tabla [2][3]=4.5;Tabla [2][3] 4.5;Extracción de elementos<variable>=<nombre array>[indice fila][indice columna];V T bl [1][1]Ventas=Tabla[1][1];

Page 16: ARRAYS (LISTAS Y TABLAS) EN C++

Acceso a elementos mediante bucles Acceso a elementos mediante bucles Se puede acceder a los elementos de arraysp ybidimensionales mediante bucles anidados. Susintaxis es;

Int IndiceFila, IndiceCol;For (IndiceFila=0; IndiceFila<NumFilas; ++IndiceFila)( )For (indiceCol=0; IndiceCol<NumCol; ++IndiceCol)Procesar elemento [IndiceFila][indiceCol];[ ][ ];

Page 17: ARRAYS (LISTAS Y TABLAS) EN C++

Ejemplo 8 9Ejemplo 8.9/*llenala tabla con datos de entrada y muestar los resultados*/ }#include <stdio.h>

#include <stdlib.h>

int main ()

{

}/* Visualizar la tabla */for (fila = 0; fila < 2; fila++){

{

float discos [2] [4] ;

int fila, col;

for (fila = 0; fila < 2; fila++)

{

for (col = 0; col < 4; col++){printf ("\n Pts %.lf \n",discos [fila] [col] ) ;}{

for (col = 0; col < 4; col++)

{

scanf ("%f",&discos[fila][col]) ;

}}system("PAUSE");return 0;

};

}

Page 18: ARRAYS (LISTAS Y TABLAS) EN C++

Arrays de mas de dos dimensiones Arrays de mas de dos dimensiones C proporciona la posibilidad de almacenar varias dimensiones, un

idi i l d id j darray tridimensional se puede considerar como un conjunto dearrays bidimensionales combinados juntos para formar, enprofundidad una tercera dimensiónEl código siguiente permite procesar el array

int pagina, linea, columna;for (pagina = 0; pagina < PAGINAS; ++pagina)(p g ; p g ; p g )for (linea = 0; linea < LINEAS; ++linea)for (columna = 0; columna < COLUMNAS; ++columna)<procesar Libro [pagina] [ lineal [columna] ><procesar Libro [pagina] [ lineal [columna] >

Page 19: ARRAYS (LISTAS Y TABLAS) EN C++

Utilización de arrays como parámetrosUtilización de arrays como parámetrosEn C todos los arrays se pasan por referencia(dirección). Esto significa que cuando se llama a unafunción y se utiliza un array como parámetro, se debetener cuidado de no modificar los arrays en unatener cuidado de no modificar los arrays en unafunción llamadaEl código que se utiliza para pasar un array a unag q p p yfunción incluye el tipo de elemento del array y sunombre. El siguiente ejemplo incluye dos funciones queprocesan arraysprocesan arrays

Page 20: ARRAYS (LISTAS Y TABLAS) EN C++

Ejemplo 8 6Ejemplo 8.6/*calcula la suma de una lista de 10 numeros y el valor maximo*/

#include <stdio.h> }

#include <stdlib.h>

int SumaDeEnteros(const int ArrayEnteros[], int NoElementos);

int maximo(const int ArrayEnteros[], int NoElementos);

int main ()

int SumaDeEnteros(const int ArrayEnteros[], int NoElementos)

{

int i, Total = 0;

for (i = 0; i < NoElementos; i++)

Total += ArrayEnteros[i];

{

int Items [10] ;

int Total, i;

puts("introduzca 10 numeros, seguidos por return");

for (i = 0; i < 10; i++)

return Total;

}

int maximo(const int ArrayEnteros[], int NoElementos)

{

int mx;for (i = 0; i < 10; i++)

scanf ("%d",&Items[i]);

printf("Total = %d \n",SumaDeEnteros(Items,10));

printf("Va1or maximo: %d \n",maximo(Items,10));

system ("PAUSE");

int i;

mx = ArrayEnteros [ 0 ] ;

for (i = 1; i < NoElementos; i++)

mx = (ArrayEnteros [i] >mx ? ArrayEnteros [i] : mx) ;

return mx;

return 0; }

Page 21: ARRAYS (LISTAS Y TABLAS) EN C++

Paso de cadenas como parámetros Paso de cadenas como parámetros La técnica de pasar arrays como parámetros se utiliza para pasar

d d f i L d dcadenas de caracteres a funciones. Las cadenas son arrays decaracteres cuando una cadena se pasa a una función, la funciónconoce que se ha almacenado el final del array cuando ve un valorde 0 en un elemento del arrayde 0 en un elemento del arrayConsidere estas declaraciones de una constante y una función queacepta una parámetro cadena y un valor de su longitud

#define MAXLON 128Void FuncDemo (char s[], int long);

Page 22: ARRAYS (LISTAS Y TABLAS) EN C++

Ordenación de listas Ordenación de listas La ordenación de arrays es otra de las tareas usuales en lamayoría de los programas. La ordenación o clasificación esel procedimiento mediante el cual se disponen elementosdel array en un orden especificado, tal como ordeny p ,alfabético u orden numérico

Page 23: ARRAYS (LISTAS Y TABLAS) EN C++

Algoritmo de la burbuja Algoritmo de la burbuja La ordenación por burbuja es uno de los métodosp jmas fáciles de ordenación. El método deordenación es muy simple. Se compara cadaelemento del array con el siguiente, si no están enorden correcto, se intercambian entre si sus valores.El valor mas pequeño flota hasta la parte superiordel array como si fuera una burbuja en un vaso de

frefresco con gas

Page 24: ARRAYS (LISTAS Y TABLAS) EN C++

Ejemplo 8 8 Ejemplo 8.8 #include <stdio.h>

#include <stdlib.h> printf ("%.2f,%c",a[i],((i+1)%10==0));

/* prototipos */

void imprimir(float a[], int n);

void intercambio(float* x, float* y);

void ordenar (float a[], int n) ;

int main()

}

printf ("%.2f \n",a[n-1]);

}

void intercambio(float* x, float* y)

{

{

float a[10]={25.5,34.1,27.6,15.24,3.27, 5.14, 6.21,7.57,4.61, 5.4};

imprimir(a,10);

ordenar (a,10 ) ;

imprimir(a,10);

float aux;

aux = *x;

*x = *y;

*y = aux;

}

system("PAUSE");

return 0;

}

void imprimir(float a[], int n)

{

/* ordenar burbuja */

void ordenar (float a[], int n)

{

int i, j;

for (i = n-1; i>0; i--)

int i = 0;

for ( ; i < n-1; i++)

{

for (j =0; j < i; j++)

if (a[j] > a[j+1])

intercambio(&a[j] ,&a[j+1]) ;

}

Page 25: ARRAYS (LISTAS Y TABLAS) EN C++

Búsqueda en listas Búsqueda en listas

Los arrays son uno de los medios principales por losLos arrays son uno de los medios principales por loscuales se almacenan los datos en programas C.debido a esta causa existen operacionesdebido a esta causa, existen operacionesfundamentales cuyo tratamiento es imprescindibleconocer Estas operaciones esenciales son; laconocer. Estas operaciones esenciales son; labúsqueda de elementos y la ordenación yclasificación de las listasclasificación de las listas

Page 26: ARRAYS (LISTAS Y TABLAS) EN C++

Búsqueda secuencialBúsqueda secuencial

Este algoritmo busca el elemento dado, recorriendoEste algoritmo busca el elemento dado, recorriendosecuencialmente el array desde un elemento alsiguiente comenzando en la primera posición delsiguiente, comenzando en la primera posición delarray y se detiene cuando se encuentra el elementobuscado o bien se alcanza el final del arraybuscado o bien se alcanza el final del arrayEsta tarea se realiza con bucles en nuestro caso conl b l hilel bucle while

Page 27: ARRAYS (LISTAS Y TABLAS) EN C++

Búsqueda secBúsqueda secenum {FALSE, TRUE}; {int BusquedaSec(int Lista[MAX], intElemento){

{Encontrado=((A[i]==Elemento)?TRUE:i++);}

int Encontrado = FALSE;int i = 0;/ * Búsqueda en la lista hasta que se

}/*Si se encuentra el elemento se devuelve la posición en la lista. * /if (Encontrado)/ Búsqueda en la lista hasta que se

encuentra el elemento o se alcanza el final de la lista. */while ((!Encontrado) && (i <= MAX-1))

( )return (i) ;elsereturn (-1) ;while ((!Encontrado) && (i < MAX 1)) return ( 1) ;1

Page 28: ARRAYS (LISTAS Y TABLAS) EN C++

Ejercicios Ejercicios

Escribir una función que invierta el contenido de nEscribir una función que invierta el contenido de nnúmeros enteros. El primero se vuelve el último; elsegundo el penúltimo etcsegundo, el penúltimo, etc.Escribir un programa que lea las dimensiones de

t i l i li l t iuna matriz, lea y visualice la matriz y acontinuación encuentre el mayor y menor elementod l i i ide la matriz y sus posiciones.

Page 29: ARRAYS (LISTAS Y TABLAS) EN C++

Patrón de prueba de pantalla panorámica (16:9)

Prueba de la relación de

aspecto

(Debe parecer circular)

16x9

4x3