You are on page 1of 7

FUNDAMENTOS DE PROGRAMACIN PRCTICA 9: ARREGLOS

Objetivos El alumno conocer y aplicar el concepto de arreglos unidimensionales y bidimensionales para resolver problemas de ingeniera en Lenguaje C Introduccin Un arreglo o array es una coleccin ordenada de objetos, llamados elementos del arreglo, todos del mismo tipo, esto es, el arreglo se puede considerar como un conjunto de variables agrupadas del mismo tipo. Los arreglos unidimensionales se conocen como vectores y los arreglos bidimensionales como matrices. Definicin Los arreglos se definen primero indicando el tipo de datos del arreglo, seguido del nombre del arreglo y la dimensin del arreglo. Por ejemplo, Un arreglo de 10 elementos se declara de la siguiente forma:
float a[10];

El primer elemento de este arreglo es a[0] y el ltimo a[9]. En C el ndice de los arreglos inicia en cero. Un arreglo se puede inicializar de la siguiente forma:
float a[3] = {10.1,10.2,10.3};

Si no se indica el tamao del arreglo, ste ser igual al nmero de elementos que se indiquen:
float x[] = {1.3, 2.4}; En este caso el tamao de x ser 2.

C no controla si los subndices estn fuera del rango previsto; esto es responsabilidad del programador. Por ejemplo, si en algn momento el programa debe utilizar x[90], lo usa sin importar si los resultados son inesperados.

Arrays multidimensionales
Los arreglos multidimensionales, en este caso los bidimensionales se declaran como sigue:
int a[3][3], b[2][3];

En este ejemplo, a es una matriz 3x3, y b una matriz 2x3. Los elementos se almacenan por filas y columnas. As, podemos inicializar b de la siguiente forma:
int b[2][3] = { {1,2,3}, {4,5,6} };

En la definicin anterior se reserva un espacio de 2x3, esto es, 6 elementos de tipo entero.

1 Elaborado por: Sabino Miranda Jimnez

FUNDAMENTOS DE PROGRAMACIN PRCTICA 9: ARREGLOS

El primer subndice vara entre 0 y 1, y el segundo vara entre 0 y 2. Usualmente, de manera anloga a las matrices, el primer subndice indica la fila y el segundo indica la columna. Los sitios para los elementos de b estn contiguos en el orden fila por fila, o sea, b[0][0],
b[0][1], b[0][2], b[1][0], b[1][1], b[1][2].

Inicializacin de arreglos
Los arreglos pequeos se pueden inicializar de la siguiente manera:
double x[4] = { 1.1, 1.2, 1.3, 1.4};

Esto es lo mismo que escribir:


double x[4]; x[0] x[1] x[2] x[3] = = = = 1.1; 1.2; 1.3; 1.4;

Si dentro de los corchetes hay menos valores que el tamao del arreglo, generalmente C asigna 0.0 a los faltantes. Por ejemplo:
double x[4] = { 1.1, 1.2};

produce el mismo resultado que


double x[4]; x[0] x[1] x[2] x[3] = = = = 1.1; 1.2; 0.0; 0.0

En el siguiente ejemplo el usuario captura cinco nmeros los asigna en el arreglo de enteros califica para su posterior procesamiento, en este caso, despus de capturarse el conjunto de nmeros se imprimen los cuales se toman del arreglo donde se almacenaron. Ejemplo1. #include <stdio.h> #include <conio.h> int main() { int califica[5]; int MAX=5; int i=0,dato; do { printf("\ncapture un nmero:"); scanf("%d",&dato); califica[i]=dato;

2 Elaborado por: Sabino Miranda Jimnez

FUNDAMENTOS DE PROGRAMACIN PRCTICA 9: ARREGLOS


i++; }while(i<MAX); printf("\nLos nmeros capturados:"); for (int j=0;j<MAX;j++) printf("%d ",califica[j]); getche(); return 0; } En el siguiente ejemplo se imprimen todos los elementos del arreglo num de dos dimensiones. Para recorrer los elementos de un arreglo bidimensional es necesario dos estructuras de repeticin anidadas. La primera se usa para recorrer los elementos por filas y el segundo es para recorrer los elementos por columnas, el ciclo ms interno controlado por el ndice j, se repite ms veces que el ciclo externo controlado por el ndice i. As el elemento en la posicin i=0 y j=1 ser el nmero 3, la i=2 y j=0 har referencia al elemento 10. Para hacer referencia al elemento se usa el nombre del arreglo y las dimensiones correspondientes. num[1][2] har referencia al elemento 6. Ejemplo2.
#include <stdio.h> #include <conio.h> int main() { int num[][4] = {{1 ,3 ,5 ,7 }, {2 ,4 ,6 ,9 }, {10 ,11,12,88} }; int filas=3,columnas=4; for (int i=0;i<filas;i++) { for (int j=0;j<columnas;j++) printf("Fila:%d Columna:%d -> %d\n",i,j,num[i][j]); } getche(); return 0; }

Arreglos de caracteres: cadenas


Los arreglos unidimensionales de caracteres, adems de su manejo estndar como arreglo, pueden ser utilizados como cadenas de caracteres, siempre y cuando uno de los elementos del arreglo indique el fin de la cadena. Esto se hace mediante el carcter especial nulo: \0 Ejemplo3.
#include <stdio.h> #include <conio.h> int main() { char aviso[30];

3 Elaborado por: Sabino Miranda Jimnez

FUNDAMENTOS DE PROGRAMACIN PRCTICA 9: ARREGLOS


aviso[0] = 'h'; aviso[1] = 'o'; aviso[2] = 'l'; aviso[3] = 'a'; aviso[4] = ' '; aviso[5] = 'm'; aviso[6] = 'u'; aviso[7] = 'n'; aviso[8] = 'd'; aviso[9] = 'o'; aviso[10] ='\0'; printf("%s", aviso) getche(); return 0; }

En el siguiente ejemplo se captura una lnea de caracteres por medio del teclado, se hace uso de la funcin gets para capturar una lnea de caracteres acepta como parmetro un arreglo de caracteres en el cual se depositarn los datos que se capturan. En la siguiente parte del cdigo (ciclo for) se analiza el arreglo donde se captur la lnea de caracteres; esto extrae la primera subcadena de la lnea, es decir, hasta donde encuentra un espacio. Por ejemplo si tenemos la cadena hola mundo se obtendra como subcadena hola Ejemplo4.
#include <stdio.h> #include <conio.h> int main() { int MAX=100; char cadena[MAX]; printf("\ncapture una lnea de caracteres mximo 100:"); gets(cadena); printf("\ncadena capturada:%s",cadena); printf("\nsubcadena extraida: "); for(int i=0; cadena[i]!='\0' && i<MAX ;i++) { if(cadena[i]==' ') i=MAX; else printf("%c",cadena[i]); } getche(); return 0; }

En el siguiente ejemplo, se capturan 5 palabras (compuestas por un conjunto de caracteres) las cuales se guardan en un arreglo bidimensional para posteriormente imprimirlas en orden inverso.

4 Elaborado por: Sabino Miranda Jimnez

FUNDAMENTOS DE PROGRAMACIN PRCTICA 9: ARREGLOS

Ejemplo 5
#include <stdio.h> #include <conio.h> int main() { int MAX=100; int TOTAL_PALABRAS=5; char cadenas[TOTAL_PALABRAS][MAX]; int i=0; do { printf("\ncapture una palabra mmixo 100:"); gets(cadenas[i]); i++; } while(i<TOTAL_PALABRAS); printf("\nPalabras capturadas:\n "); for(int i=TOTAL_PALABRAS-1; i>=0 ;i--) { printf("Palabra %d : %s\n",i+1,cadenas[i]); } getche(); return 0; }

5 Elaborado por: Sabino Miranda Jimnez

FUNDAMENTOS DE PROGRAMACIN PRCTICA 9: ARREGLOS

EJERCICIOS PROPUESTOS. Capturar y probar los ejercicios resueltos. Resolver nicamente tres ejercicios de los siguientes: Para cada ejercicio realizar: Tablas de Entradas y Salidas Algoritmo (Pseudocdigo) Programa en C 1. Desarrollar programa que calcule el complemento a uno de un nmero binario capturado por el usuario, estos nmeros se deben almacenar en un arreglo para su representacin Considere un registro de 8 bits, es decir, cada posicin del arreglo representa un bit. Por ejemplo: Nmero Binario: {0,0,1,1,1,1,0,1} Complemento a 1: {1,1,0,0,0,0,1,0} 2. Desarrollar programa que calcule el complemento a dos de un nmero binario capturado por el usuario, estos nmeros se deben almacenar en un arreglo para su representacin. Considere un registro de 8 bits, es decir, cada posicin del arreglo representa un bit. Por ejemplo: Nmero Binario: {0,0,1,1,1,1,0,0} Complemento a 2: {1,1,0,0,0,1,0,0} 3. Desarrollar programa que invierta una cadena de caracteres, la cadena de caracteres la captura el usuario. Por ejemplo: Cadena: Hola mundo Cadena invertida: odnum aloH 4. Desarrollar programa que imprima la interseccin de dos conjuntos de nmeros definidos estticamente dentro del programa. Por ejemplo: Sean A={5,6,7,3,12,67} y B={6,7,9,12,45,34,56} AB={6,7,12} 5. Desarrollar programa que imprima la unin de dos conjuntos de nmeros definidos estticamente dentro del programa. Por ejemplo: Sean A={5,6,7,3,12,67} y B={6,7,9,12,45,34,56} 6 Elaborado por: Sabino Miranda Jimnez

FUNDAMENTOS DE PROGRAMACIN PRCTICA 9: ARREGLOS AUB={5,6,7,3,12,67,9,45,34,56} 6. Desarrollar programa que imprima la diferencia de conjuntos. Sean A y B dos conjuntos, la diferencia A-B indica los elementos que se encuentra en A pero no en B. Los conjuntos de nmeros se definen estticamente dentro del programa. Por ejemplo: Sean A={5,6,7,3,12,67} y B={6,7,9,12,45,34,56} A-B={5,3,67}

7 Elaborado por: Sabino Miranda Jimnez

You might also like