Sie sind auf Seite 1von 17

Tema 5 Arreglos y Estructuras.

Tema 5.
5. Arreglos y Estructuras.
5.1 Arreglos Unidimensionales

En lenguaje C, se pueden definir conjuntos de datos conocidos como arreglos. Por ejemplo, si deseramos guardar en un arreglo, diez valores enteros, debemos definir este arreglo de la siguiente manera: int elem[10]; Esta expresin es la declaracin del arreglo. Donde int es el tipo de datos que almacena el arreglo, elem es el nombre del arreglo, y el nmero encerrado en los corchetes es el nmero de valores que contiene el arreglo. Cabe hacer notar que, el ndice para el primer elemento es 0 y, el valor mximo del ndice es igual a n1 elementos del arreglo. En nuestro caso, el ltimo elemento del arreglo elem ser elem[9]. El programador deber tener cuidado de no indicar elementos inexistentes en el arreglo, es decir, elementos cuyos ndices son nmeros con signo menores a 0 o elementos con ndices mayores a los n1 elementos del arreglo. De no-tener cuidado, el compilador de C no marcar error alguno, pero se produce un error en tiempo de ejecucin. Un arreglo se puede entender mejor representndolo como en la figura 1

Figura 1. Representacin de un arreglo lineal.

M. en C. Rafaela Blanca Silva Lpez Pgina 1

Curso SAI - Introduccin a la Programacin

Un punto importante es que, el nombre del arreglo es, por si mismo, un apuntador a la localidad de memoria que ocupa el primer elemento, es decir, el nombre del arreglo es una variable que contiene la direccin del primer elemento. Esto se puede expresar como sigue: elem = &elem[0] A continuacin se presenta un programa que emplea arreglos para mostrar una serie de nmeros y la palabra hola. int main(void) { int y; int numeros[4] = {2, 4, 6, 8}; char palabra[ ] = {h, o, l, a,\0}; for (y=0; y<4; y++) printf (nmeros [%d] = %d\n, y, nmeros[y] ); printf(\n); for (y=0; y<4; y++) printf (%c, palabra[y] ); return (0); } Cul es el resultado de la ejecucin del programa anterior? En el ejemplo, la forma de inicializacin del arreglo nmeros solo es soportada por el estndar ANSI.

5.2

Cadenas de Caracteres

Las cadenas de caracteres son usadas con mucha frecuencia en programacin. El manejo de stas puede ser tedioso si se tiene que tomar o afectar cada carcter, que compone la cadena, por separado. Por esto C permite emplear cadenas de longitud variable. Este tipo de cadenas esta terminado con un carcter nulo que marca el fin de la cadena. Es as como las funciones de cadena de C pueden determinar cuando se ha llegado al final, en vez de conocer la longitud de la cadena. Un arreglo de caracteres se puede definir escribiendo los caracteres separados por comas y agrupados entre llaves, no olvidando especificar al carcter nulo como ltimo elemento. Por ejemplo: char cadena[7] = {l,e,t,r,a,s,\0}; Tambin se puede definir un arreglo de caracteres por medio de una cadena de caracteres, entendida sta como una serie de caracteres y no como sinnimo de un arreglo de caracteres, en lugar de utilizar la frmula anterior. El empleo de una cadena de caracteres para definir el arreglo, coloca automticamente el carcter nulo al final del arreglo. Por lo que el nmero de elementos que conforman el arreglo no debe ser especificado, es decir, no se escribe nmero alguno entre los corchetes.

Pgina 2 .

Tema 5 Arreglos y Estructuras.

Entonces, la definicin del arreglo se har como sigue: char cadena[ ] = letras; La longitud del arreglo es asignada por el compilador de C. En este caso, la variable cadena tiene una longitud de siete caracteres.

5.2.1

Funciones para la manipulacin de cadenas.

Entre las funciones de manipulacin de cadenas que proporciona C, tenemos: comparacin de cadenas, bsqueda de longitud de cadenas, copia de cadenas, concatenacin de cadenas. Su sintaxis es: int strcmp (char cadena1, char cadena2); unsigned int strlen (char cadena); strcpy (char cadena1, char cadena2); strcat (char cadena1, char cadena2); strcmp() compara sus argumentos y regresa un valor entero, que es menor, igual o mayor que 0, dependiendo de s cadena1 es menor, igual o mayor que cadena2. Esto es: S cadena1 = cadena2, valor de retorno = 0 cadena1 > cadena2, valor de retorno > 0 cadena1 < cadena2, valor de retorno < 0 strlen() regresa el nmero de caracteres que posee la cadena, sin incluir el carcter nulo. strcpy() copia el contenido de cadena2 en el contenido de cadena1, detenindose despus de que el carcter nulo ha sido copiado. strcat() copia el contenido de cadena2 al final de cadena1. Todas estas funciones estn definidas por el estndar ANSI y requieren del archivo header string.h, para poder ejecutarse. Ejemplo: #include <string.h> int main(void) { char cad1[20] = hola; char cad2[20] = adis;

M. en C. Rafaela Blanca Silva Lpez Pgina 3

Curso SAI - Introduccin a la Programacin

char cad3[20]; int diff, largo; printf (cadena1 = %s\n \ cadena2 = %s\n\n, cad1, cad2); diff = strcmp (cad1, cad2); if (diff == 0) printf (cadena1 y cadena2 son cadenas equivalentes\n\n); else if (diff > 0) printf (cadena1 es ms grande que cadena2\n\n); else printf (cadena1 es mas pequea que cadena2\n\n); strcpy (cad3, cad1); printf (strcpy (cad3, cad1)\n \ cadena1 = %s\n \ cadena2 = %s\n \ cadena3 = %s\n\n, cad1, cad2, cad3); strcat (cad2, cad3); printf (strcat (cad2, cad3)\n \ cadena1 = %s\n \ cadena2 = %s\n \ cadena3 = %s\n\n, cad1, cad2, cad3); largo = strlen (cad2); printf (El largo de la cadena2 es %d\n, largo); return (0); } En este ejemplo, el uso separado del carcter \ se emplea para quitar el significado del RETURN que se tecle para saltar de lnea. Solo en este caso, las dos lneas que son separadas por un salto de lnea en el cdigo fuente, son tomadas como una sola por el compilador.

5.1
5.1.1

Algoritmos de bsqueda y ordenamiento


Bsqueda lineal o secuencial

La bsqueda lineal o secuencial es la tcnica ms simple para buscar en un arreglo de datos.

Pgina 4 .

Tema 5 Arreglos y Estructuras.

Este mtodo consiste en examinar todos los elementos de uno en uno, comenzando por el primer elemento del arreglo y comparando con el elemento buscado. El algoritmo prosigue hasta hallarlo o llegar al final del arreglo. Consideraremos que se dispone de un vector x de n elementos y deseamos saber si el elemento e se encuentra en el vector y en caso afirmativo deducir la posicin del mismo en el vector. Con el fin de escribir el cdigo lo mas general posible consideraremos lo siguiente: El tipo del arreglo lo definiremos con typedef denominndole tipo. La comparacin de los datos la haremos va un apuntador a funcin. El elemento NULO lo definiremos con una macro. La posicin se representara con una variable POSICIN, que recibir el valor de la variable ndice del ciclo. #define NULO -1 typedef |_| tipo; int Bussec(tipo * x, int n, tipo e) { int posicion=NULO; for( i = 0; i< n; ++i) if(!compara(x[ i ],e) posicin = i; return (posicin); } La funcin compara es la funcin usada para comparar los datos. La comparacin de datos depende fuertemente del tipo. Se requiere escribir una funcin que compare los datos tomando en cuenta su tipo. Esta funcin debe de funcionar igual que strcmp, es decir, regresa 0 si son iguales, un positivo si el primer parmetro es mayor al segundo o un negativo en caso contrario. El procedimiento de bsqueda lineal se puede hacer un poco ms efectivo deteniendo el proceso una vez que se encuentre el elemento que se est buscando. Para realizar este nuevo algoritmo es necesario sustituir el ciclo for con un ciclo while o do while que nos permita salir del ciclo una vez que el dato ha sido encontrado. Una bsqueda lineal es slo adecuada para arreglos cortos de datos. Este algoritmo es de orden lineal. El tiempo de bsqueda es directamente proporcional al numero de datos. Un mtodo muy eficaz para buscar un elemento en una lista ordenada se denomina bsqueda binaria y se basa en el algoritmo de divisiones sucesivas en mitades del diccionario comentado anteriormente.

5.1.2

Bsqueda binaria

M. en C. Rafaela Blanca Silva Lpez Pgina 5

Curso SAI - Introduccin a la Programacin

El mtodo de bsqueda binaria utiliza el sistema de "divide y vencers" para localizar el elemento deseado. Supongamos un vector ordenado de elementos numricos x[ 0 ] , x[ 1 ] ,...., x [ n-1] en el que desea buscar el elemento e. Los pasos a seguir son: 1. Verificar si e < x[0] o bien e > x [n-1]. En este caso se ha terminado la bsqueda ya que el estar ordenado el vector x, se supone que e no existe en el vector. 2. Si e no cumple las condiciones anteriores, entonces e se encuentra en el vector y se calcula el elemento central de x, que se supone x[k] x[ 0 ] , x[ 1 ] ,..., x[k],...,x [ n-1] x[k]: elemento central 3. Se compara x[k] con e y pueden suceder tres casos: I. e = x[k] el elemento se ha encontrado II. e < x[k] la bsqueda contina III. e > x[k] la bsqueda contina 4. En el caso II solamente se deber buscar en el subvector x[ 0 ] , x[ 1 ] ,..., x[k-1] mientras que el caso III se deber busca en el subvector x[k+ 1 ] ,...,x [ n-1] En ambos casos se ha dividido por dos la cantidad de datos donde se debe buscar. 5. En las listas compuestas por los subvectores se debern repetir de nuevo los pasos 1, 2, 3 y 4 hasta obtener un elemento x[i]=e, o concluir que el elemento no esta. Este mtodo se denomina bsqueda binaria debido a que se divide por dos el rango de la bsqueda. Mientras que en la bsqueda lineal se necesitan en el caso promedio ( n + 1 ) / 2 comparaciones, la bsqueda binaria emplea alrededor de log n comparaciones. S n = 1000, n/2 = 500, mientras que log2 1000 = 10. Escribiremos una funcin de bsqueda binaria que permita localizar un valor especificado en un arreglo y que devuelva el subndice del arreglo cuando se encuentra el valor. Si el valor no est almacenado en el arreglo se devolver -1. int BusquedaBin (tipo * x, int n, tipo e) {

Pgina 6 .

Tema 5 Arreglos y Estructuras.

int primero=0, ultimo=n-1, central=(primero+ultimo)/2; while(primero < = ultimo) { if(!compara(x[ central,e)) return (central); else if(compara(x[ central,e)>0) ultimo = central-1; else primero = central +1; central=(primero+ultimo)/2; } return NULO; }

5.2

Algoritmos de ordenamiento

El ordenamiento es una parte importante del manejo de informacin. Como ya mencionamos en los algoritmos de bsqueda, es ms eficiente realizar bsquedas si el arreglo esta ordenado que sino. Existen muchos algoritmos para ordenar. Veremos solo algunos.

5.2.1

Ordenamiento por insercin

El mtodo de ordenamiento por insercin es utilizado por los jugadores de cartas o naipes para ordenar sus barajas. Para desarrollar el algoritmo imaginemos que las cartas se encuentran situadas en una hilera encima de la mesa; a medida que se ve una nueva carta, sta se compara con la hilera, carta por carta hasta hallar su posicin correspondiente, se debe empujar alguna de ellas a la derecha para dejar espacio e insertar la nueva, en su posicin. Escribiremos la funcin de ordenacin por insercin de un vector de n elementos. void Insercion(tipo * x, int n) { int quien,conquien,adonde; tipo aux; for (quien = 1; quien<n; quien++) { adonde = busec(x, quien); /* Bsqueda de la posicin */ copia(&aux, &x[quien]); /* Respaldar el elemento actual */ recorre(x, adonde, quien); /* Hacer espacio */ copia(&x[adonde],&aux); /* Copiar el elemento en su lugar */ }

M. en C. Rafaela Blanca Silva Lpez Pgina 7

Curso SAI - Introduccin a la Programacin

} int busec(tipo * x, int quien) { int i, pos; for (i=0;i<quien;i++) { if (compara(x[quien],x[i])<0) { return (i); } } return (quien); } void recorre(tipo * x, int inicio, int final) { int i; for (i = final-1; i>=inicio;i--) copia(&x[i+1],&x[i]); /* Copiar en la posicin siguiente */ } La funcin busec realiza una bsqueda secuencial de la posicin que le corresponde al elemento actual. La copia de un elemento en otro depende del tipo de dato. La funcin copia realiza esto. Debe de escribirse para cada aplicacin. La funcin recorre mueva los elementos del arreglo para hacer espacio y poder insertar el elemento actual.

5.2.2

Ordenamiento por burbuja o intercambio

El mtodo de la burbuja es uno de los ms conocidos por su sencillez y facilidad de implementacin. La idea bsica del mtodo es comparar elementos consecutivos en cada paso a lo largo del vector. Cada vez que se realiza una comparacin los elementos se intercambian entre s en caso de no estar en orden. Es decir, se examinan dos elementos adyacentes X[i] y X[i + 1]; en caso de no estar ordenados X[ i ] < X[ i + 1 ] o bien X[ i ] > X[ i + 1 ] Se intercambian los valores de dichos elementos. El mtodo comienza comparando X[0] con X[ 1 ] y se intercambian si es necesario. A continuacin se compara X[0] con X[2] y se intercambian si es necesario, y as sucesivamente. Despus el procedimiento se repite con X[1], despus con x[2], etc. Despus de cada comparacin, se intercambian los dos valores si no estn en el orden deseado. A este mtodo se le conoce con el nombre de la burbuja, porque en el ordenamiento los elementos ms ligeros suben en la lista como burbujas a la superficie del lquido.

Pgina 8 .

Tema 5 Arreglos y Estructuras.

El algoritmo correspondiente es: void Burbuja(tipo * x, int n ) { int quien, conquien; for (quien=0; quien<n-1;quien++) for (conquien=quien+1; conquien<n;conquien++) if (compara(x[quien],x[conquien])>0) intercambia(x+quien, x+conquien); } void intercambia(tipo * H2O, tipo * leche) { tipo vaso; vaso=*H2O; *H2O=*leche; *leche=vaso; } El ndice quien nos indica a quien vamos a comparar y conquien nos indica con que elemento lo vamos a comparar. La funcin intercambia realiza el intercambio de los valores, de los elementos del arreglo.

5.3

Arreglos Bidimensionales

En C tambin se pueden definir arreglos de cualquier nmero de dimensiones. Los arreglos ms usados son los de dos dimensiones para implementar matrices. As, una matriz puede ser declarada como un arreglo bidimensional. Por ejemplo, una matriz de enteros, de cuatro renglones y tres columnas se puede definir como sigue: int Matrix[4][3]; Donde int es el tipo de datos y Matrix es el nombre de la matriz. De este modo, cada elemento de la matriz puede ser referido por su posicin en esta. Hay que recordar que al primer elemento de un arreglo le corresponde el ndice 0. De esta manera, para un arreglo bidimensional, al primer elemento le corresponder la notacin M[0][0]. Aplicando el mismo principio que para los arreglos lineales, el ndice mximo para indicar un rengln es igual a n-1 renglones de la matriz y, el ndice mximo para indicar una columna es igual a n-1 columnas de la matriz, como se muestra en la figura 6.

M. en C. Rafaela Blanca Silva Lpez Pgina 9

Curso SAI - Introduccin a la Programacin

Figura 6. Representacin de un arreglo bidimensional. Algunos de los elementos de la matriz Matrix son: Matrix[0][0] = 43, Matrix[0][1] = 54, Matrix[2][1] = 44, Matrix[3][0] = 90, etc. Disee los algoritmos para realizar la suma, resta y multiplicacin de matrices.

5.4

Estructuras

Ya se menciono el significado e importancia de un arreglo, el lenguaje C proporciona otra herramienta para agrupar elementos de diferentes tipos juntos, a esta herramienta le llamaremos estructura. Una estructura es una coleccin de variables que se manipulan bajo un mismo nombre, proporcionando un medio eficaz de mantener junta cierta informacin relacionada. La definicin de estructura forma una plantilla que se puede utilizar para crear variables de se tipo de estructura. Las variables que componen la estructura se llaman elementos de la estructura. En general cada elemento de la estructura esta relacionado lgicamente con los otros. La sintaxis en C para definir una estructura es: struct nombre { tipo miembro; tipo miembro; . . . }; La palabra struct indica al compilador que se esta definiendo una estructura, despus de la palabra reservada struct se especifica el nombre de la estructura. Entre llaves se deben incluir todas las variables que formaran parte de la estructura, especificando por supuesto su tipo de datos.

Pgina 10 .

Tema 5 Arreglos y Estructuras.

Para comprender mejor las estructuras, lo mejor es comenzar con un ejemplo. El siguiente cdigo muestra cmo se define una estructura llamada dir, constituida por los campos: nombre, calle, ciudad, estado y cdigo.

Ejemplo: struct dir { char nombre[30]; char calle[30]; char ciudad[20]; char estado[5]; int codigo; }; La definicin termina con punto y coma, ya que la definicin de una estructura es una proposicin. struct dir representa un nuevo tipo de datos, ahora podemos declarar variables asociadas a este tipo de datos. En este punto del cdigo, realmente no se han definido variables, slo se ha definido un nuevo tipo de datos. Para declarar una variable con el nuevo tipo de datos es necesario escribir: struct dir informe_dir; En este momento se ha definido y declarado una variable llamada informe_dir, de tipo struct dir. Cuando se define una estructura, se est definiendo esencialmente un tipo complejo de variable compuesto por los elementos de la estructura. No existe realmente una variable de este tipo hasta que se definen.

5.5

Referencia a los elementos de una estructura.

Una vez definida una variable tipo estructura, para hacer referencia a los elementos que la constituyen es necesario especificar el nombre de la estructura a la que pertenece el elemento seguido de el operador . (punto), y el nombre del elemento. Por ejemplo, el siguiente cdigo asigna el cdigo postal 7260 al campo cdigo de la variable informe_dir definida anteriormente: informe_dir.codigo= 7260; El nombre de la variable de estructura seguido de un punto y del nombre del elemento hace referencia a un elemento individual de la estructura. La forma general de acceso es:

M. en C. Rafaela Blanca Silva Lpez Pgina 11

Curso SAI - Introduccin a la Programacin

nombre_de_estructura.nombre_de_elemento As, para imprimir el cdigo postal en la pantalla debemos hacer referencia al nombre completo de la variable, escribimos: printf("%d", informe_dir.codigo); printf imprime el cdigo postal que contiene el elemento cdigo de la variable informe_dir. De la misma forma, se puede usar el arreglo de caracteres informe_dir.nombre en una llamada a gets(), como se muestra a continuacin: gets(informe_dir.nombre); En este caso el usuario teclea una cadena de caracteres y la informacin se almacena en el elemento nombre de la estructura informe_dir.

5.6

Inicializacin de los elementos de una estructura

Cuando declaramos una variable de tipo estructura, podemos inicializar cada uno de sus elementos, a travs de una lista de valores delimitados por llaves, por ejemplo: struct persona { char nombre[20]; int edad; float estatura; }; struct persona artista = { "Gloria Trevi",26,1.70}; NOTA: En C-Clsico no se permite la inicializacin de estructuras.

5.7

Estructuras que contienen arreglos.

Las estructuras pueden contener como otro miembro un arreglo de variables, en el ejemplo anterior manipulamos un arreglo de 20 caracteres llamado nombre que inicializamos con la cadena constante

Pgina 12 .

Tema 5 Arreglos y Estructuras.

"Gloria Trevi". Para poder accesar un elemento individual del arreglo debemos utilizar el siguiente formato: nombre_estructura. elemento[ndice] El siguiente programa muestra el uso de arreglos como miembros de una estructura. #include <stdio.h> main( ) { /* declaracin del tipo struct boletas y de las variables */ struct boletas { int matricula; int evaluaciones; char materia[35]; int calificacion[10]; char eval_final[2]; }; int i; /* declaracin e inicializacin de la variable sai */ struct boletas sai = { 90360937,10,"Introduccin a la Programacin", {6,6,8,7,8,9,8,9,9,9},"MB " }; /* declaracin e inicializacin de la variable tradicional */ struct boletas tradicional; tradicional.matricula = 95201780; strcpy(tradicional.materia,"Introduccin a la Programacin"); tradicional.evaluaciones = 4; tradicional.calificacion[0] = 3; tradicional.calificacion[1] = 6; tradicional.calificacion[2] = 7; tradicional.calificacion[3] = 5; strcpy(tradicional.eval_final, "NA"); /* desplegado de resultados */ printf ( "Resultados de evaluacin en curso Tradicional \n\n"); printf ( "Materia: %s\n",tradicional.materia);

M. en C. Rafaela Blanca Silva Lpez Pgina 13

Curso SAI - Introduccin a la Programacin

printf ( "Matrcula: %s\n",tradicional.matricula); printf ( "Calificaciones: \n"); printf ( "1er. parcial: %d\n",tradicional.calificacion[0]); printf ( "2do. parcial: %d\n",tradicional.calificacion[1]); printf ( "3er. parcial: %d\n",tradicional.calificacion[2]); printf ( "Global: %d\n",tradicional.calificacion[3]); printf ( "Evaluacin Final: %s\n",tradicional.eval_final); printf ( "\n\n\n"); printf ( "Resultados de evaluacin en curso SAI \n\n"); printf ( "Materia: %s\n",sai.materia); printf ( "Matrcula: %s\n",sai.matricula); printf ( "Calificaciones: \n"); printf ( "Unidad 1: %d\n",sai.calificacion[0]); printf ( "Unidad 2: %d\n",sai.calificacion[1]); printf ( "Unidad 3: %d\n",sai.calificacion[2]); printf ( "Unidad 4: %d\n",sai.calificacion[3]); printf ( "Unidad 5: %d\n",sai.calificacion[4]); printf ( "Unidad 6: %d\n",sai.calificacion[5]); printf ( "Unidad 7: %d\n",sai.calificacion[6]); printf ( "Unidad 8: %d\n",sai.calificacion[7]); printf ( "Unidad 9: %d\n",sai.calificacion[8]); printf ( "Integracin: %d\n",sai.calificacion[9]); printf ( "Evaluacin Final: %s\n",tradicional.eval_final); printf ( "\n\nTienes ms oportunidades en SAI\n"); }

5.8

Arreglos de Estructuras.

Ahora veamos cmo podemos declarar un arreglo de estructuras. Primero hay que definir la estructura y luego declarar un arreglo de variables del tipo de dato estructura. Para declarar un arreglo de estructuras de 50 elementos del tipo dir que se defini anteriormente, tendramos: struct dir informe_dir[50]; Esto crea 50 conjuntos de variables organizadas en localidades contiguas de memoria, que almacenan el mismo nmero de elementos cada una.

Pgina 14 .

Tema 5 Arreglos y Estructuras.

Para accesar a un elemento del arreglo de estructuras, se agrega un ndice al nombre de la estructura. La sintaxis general que se utiliza es: nombre_estructura[ndice].elemento Por ejemplo, para imprimir el cdigo postal del cuarto elemento del arreglo de estructuras: printf("CODIGO: %d", informe_dir[3].codigo); Como estamos definiendo un arreglo de variables el ndice del primer elemento del arreglo comienza con 0, como en cualquier otro arreglo, y su ltimo elemento se accesa a travs del ndice n-1, donde n es el nmero de elementos del arreglo. El siguiente programa utiliza arreglos de estructura para almacenar la informacin de los empleados de una compaa: #include <stdio.h> main( ) { /* declaracin del tipo struct empleado */ struct empleado { char nombre[20]; int edad; float salario; }; int i; /* declaracin del arreglo de estructuras emp, e inicializacin de las dos primeras estructuras */ struct empleados emp[4] = {{"Javier a la Torre", 32, 7000.00}, {"Jos Crdenas",30,6000.00}, }; /* inicializacin de la tercer estructura del arreglo emp */ strcpy(emp[2].nombre,"Pedro Ferriz de Con"); emp[2].edad = 40; emp[2].salario = 8000.00; /* captura del cuarto empleado */ printf ( "Teclea el nombre del empleado: ");

M. en C. Rafaela Blanca Silva Lpez Pgina 15

Curso SAI - Introduccin a la Programacin

gets ( emp[3].nombre); printf ( "Teclea la edad en aos y el salario del empleado: "); scanf ( "%d %f", &emp[3].edad, &emp[3].salario); /* Lista de empleados */ printf ( "Empleados del Noticiero Verdico ? \n\n"); printf ( "Nombre \t Edad \t Salario.\n"); printf ( "______ \t ____ \t ______\n"); for ( i = 0; i < 3 ; ++i) printf ( "%s\t%d\t%.2f\n",emp[i].nombre, emp[i].edad, emp[i].salario); printf ( "\n\n\n"); }

Pgina 16 .

Tema 5 Arreglos y Estructuras.

5.9
5.

ndice

Tema 5._____________________________________________________________________________________1 Arreglos y Estructuras. _____________________________________________________________1

5.1 5.2
5.2.1 5.3.1 5.3.2 5.4.1 5.4.2

Arreglos Unidimensionales_____________________________________________ 1 Cadenas de Caracteres ________________________________________________ 2 Algoritmos de bsqueda y ordenamiento _________________________________ 4

Funciones para la manipulacin de cadenas. _____________________________________________3

5.3

Bsqueda lineal o secuencial _________________________________________________________4 Bsqueda binaria __________________________________________________________________5

5.4

Algoritmos de ordenamiento ___________________________________________ 7

Ordenamiento por insercin__________________________________________________________7 Ordenamiento por burbuja o intercambio _______________________________________________8

5.5 5.6 5.7 5.8 5.9 5.10 5.11

Arreglos Bidimensionales ______________________________________________ 9 Estructuras ________________________________________________________ 10 Referencia a los elementos de una estructura. ____________________________ 11 Inicializacin de los elementos de una estructura _________________________ 12 Estructuras que contienen arreglos. ____________________________________ 12 Arreglos de Estructuras._____________________________________________ 14 ndice ____________________________________________________________ 17

M. en C. Rafaela Blanca Silva Lpez Pgina 17

Das könnte Ihnen auch gefallen