Está en la página 1de 53

Arreglos

Un arreglo es un tipo de dato estructurado formado por un conjunto de elementos de un mismo tipo de datos.
Un tipo de dato de tipo estructurado como el arreglo es capaz de almacenar ms de un elemento (valor) a la vez, con la condicin de que todos los elementos deben ser del mismo tipo de dato, es decir, que se puede tener un arreglo de datos enteros, reales, etc.

Los arreglos se clasifican de acuerdo con el nmero de dimensiones que tienen:


unidimensionales (una dimensin) bidimensionales (dos dimensiones) multidimensional (ms de dos dimensiones) tridimensionales tetradimensionales etc.

Arreglos unidimensionales
Esta formado por un conjunto de elementos de un mismo tipo que se almacenan bajo un mismo nombre y se diferencian por la posicin que tiene cada elemento dentro del arreglo de datos.

Ejemplo:
Se tiene el nmero de unidades producidas por un obrero en cada uno de los 30 das del mes. Para almacenarlos y manejarlos, una opcin seria usar 30 variables, una para cada da, de la siguiente manera. Produccin1, produccin2, produccin3,..,produccin30

Otra opcin es usar un arreglo con una dimensin de 30 elementos, como se muestra:
1

2 Produccin 3

30

En la cual se tiene el arreglo llamado produccin con 30 elementos, el primero de ellos se identifica con la posicin 1, el que le sigue tiene la direccin 2, el siguiente la 3, asi hasta el nmero 30. Asi la produccin del da 1 se almacena en el elemento nmero 1, la produccin del da 2 se almacena en el elemento 2, y asi sucesivamente hasta la produccin del da 30 se almacena en el elemento 30.

El lenguaje C tiene la peculiaridad de que el primer elemento de un arreglo es el nmero 0 (cero), el segundo es el nmero 1, el tercero es el 2 y asi sucesivamente hasta el elemento N que es el nmero N-1.

Definicin del arreglo unidimensional


Cuando se define un arreglo, es necesario hacerlo como una variable, en la parte de definicin de variables, se utiliza el siguiente formato:
Tipodedato Nombrevariable [tamao];

Donde: Tipodedato: es el tipo de dato que tendr el conjunto de elementos del arreglo que se esta definiendo, puede ser int, float, char, etc. Nombrevariable: es el nombre de identificacin de la variable. Tamao: es un nmero entero que indica la cantidad de elementos que tendr el arreglo, ejemplo: 10, 20, 30, 40, 50, 100, etc. ; : indica el fin de la definicin.

Formato:
Int produccion[30]; Explicacin: Produccion es el nombre de la variable Es un arreglo que contiene 30 elementos desde el 0 al 29 Cada elemento del arreglo ser de tipo entero (int)

Manejo de los elementos de un arreglo


Cada elemento individual de un arreglo se relaciona con el nombre de la variable y un nmero que indica la posicin que ocupa el elemento dentro del arreglo. Dicho nmero se pone entre [ ] y se le llama subndice o suscrito. El elemento 1 se relaciona con produccion[0] El elemento 2 se relaciona con produccion[1] El elemento 3 se relaciona con produccion[2] El elemento 30 se relaciona con produccion[29]

El subndices puede ser una constante numrica entera como 0, 1, 2, 3,, 29, una variable de tipo entero como: Produccion[i]
O bien puede ser una expresin algebraica que de un resultado de tipo entero como: Produccion[i+3] Produccion[(i*4)-j]

Como toda variable, una de tipo arreglo puede usarse para leer datos, asignarle valores mediante expresiones aritmticas, imprimir su contenido, formar parte de expresiones lgicas, etc. Ejemplo: Produccion[i]=20; Scanf(%d,&produccion[i]); Scanf(%d,&produccion[10]); Produccion[20]=produccion[1]+produccion[5]; Printf(%d,produccion[20];

Ejemplo: Elaborar un programa que lea la produccin de un obrero durante los 30 das de mes y que lo imprima. Opcin A: scanf(%d,&produccion[0]); scanf(%d,&produccion[1]); scanf(%d,&produccion[2]); scanf(%d,&produccion[29]);

Opcin B:
for (i=0;i<=29;i++) { printf(teclee produccion del dia %d:,i+1); scanf(%d,&produccion[i]); }

# include <stdio.h> void main() { int Produccion[30]; int I; printf("\nLEE E IMPRIME LA PRODUCCION DE 30 DIAS\n"); printf("DIAS DE PRODUCCION\n"); for (I=0; I<=29; I++) { printf("TECLEE PRODUCCION DIA %d : ",I+1); scanf("%d",&Produccion[I]); } printf("\n"); printf("PRODUCCION\n"); printf("\n"); for (I=0; I<=29; I++) { printf("PRODUCCION DIA %2d : %5d\n",I+1,Produccion[I]); } printf("\nPRESIONE <Intro> PARA CONTINUAR..."); fflush(stdin); getchar();

Forma mas general para definir arreglos


Un arreglo puede definirse de una forma ms general utilizando la directiva typedef para definir un nuevo tipo de dato de tipo arreglo, ejemplo:
Typedef Int diezenteros[10]; se ha definido un nuevo tipo de dato llamado diezenteros, que es un arreglo de 10 elementos de tipo entero (int) cada uno.

Ahora, ese tipo de dato puede ser utilizado en la definicin de variables, por ejemplo: diezenterosA; diezenterosB; diezenterosS; Otra forma:
diezenteros A,B,S;

Donde: A, B, S: son variables de tipo diezenteros, es decir, son arreglos de 10 elementos de tipo entero (int) cada uno.

Arreglos bidimensionales
Esta formado por un conjunto de elementos de un mismo tipo de datos que se almacenan bajo un mismo nombre y que al igual que en el unidimensional, se diferencian por la posicin que tiene cada elemento dentro del arreglo de datos, con la aclaracin de que la disposicin de los elementos es en forma rectangular o cuadrada, donde la primera dimensin esta dada por los renglones y la segunda por las columnas. Un arreglo de este tipo tambin es conocido como matriz, es de orden m x n, donde m es el nmero de renglones y n es el nmero de columnas, es decir, en forma de tabla.

Definicin del arreglo bidimensional


Al definir un arreglo es necesario hacerlo como una variable, por lo cual en la parte de definicin de variables se utiliza el siguiente formato:
Tipodedato nombrevariable [dimension1][dimension2];

Donde: Tipodedato: es el tipo de dato que tiene el conjunto de elementos del arreglo que se esta definiendo; puede ser int, float, char, etc. Nombrevariable: es el nombre de identificacin de la variable. Dimension1: es un nmero entero que indica el nmero de renglones que tendr el arreglo (la primera dimensin). Dimension2: es un nmero entero que indica el nmero de columnas que tendr el arreglo (la segunda dimensin). ;: fin de la declaracin.

Formato:
Int matriz [4][5];

Explicacin: Matriz es el nombre de la variable Es un arreglo que contiene 4 renglones y 5 columnas (20 elementos) Cada elemento del arreglo es un dato de tipo entero (int)

Manejo de los elementos de una matriz


Para relacionar cada elemento individual de una matriz se usan dos subndices; el primero indica el rengln y el segundo la columna,
Matriz[renglon][columna]; Donde: Renglon indica el nmero de rengln y columna indica el nmero de columna que ocupa el elemento relacionado.

Los subndices pueden ser constantes, variables o expresiones de tipo entero, como toda variable, una de tipo matriz puede usarse para leer datos, asignarle valores mediante expresiones aritmticas, imprimir su contenido, formar parte de expresiones lgicas, etc. Ejemplo: Matriz[1][1]=20; Scanf (%d,&matriz[r][c]); Scanf (%d,&matriz[3][4]); Matriz[1][2]=matriz[1][2]+matriz[2][3];

Ejemplo: Programa que lea los datos numricos de tipo entero para una matriz de 4 renglones con 5 columnas y adems que los imprima. Para leer los elementos de una matriz es necesario utilizar dos ciclos repetitivos anidados, el primero y mas externo, para procesar los renglones y, el segundo , que estar anidado dentro del primero, para procesar las columnas. Se define: Int numeros[4][5];

La lectura se hace asi:


for (Ren=0; Ren<=3; Ren++) { for (Col=0; Col<=4; Col++) { printf("TECLEE EL VALOR [%d][%d]: ",Ren,Col); scanf("%d",&Numeros[Ren][Col]); } }

Explicacin: Se utiliza un ciclo tipo for desde 0 (cero) hasta 3 renglones (4) y dentro del proceso de cada rengln un ciclo de 0 a 4 (5) para procesar las columnas.

# include <stdio.h> void main() { int Numeros[4][5]; int Ren,Col; printf("\nLEE E IMPRIME NUMEROS EN UNA MATRIZ\n"); for (Ren=0; Ren<=3; Ren++) { for (Col=0; Col<=4; Col++) { printf("TECLEE EL VALOR [%d][%d]: ",Ren,Col); Scanf("%d",&Numeros[Ren][Col]); } } printf(" M A T R I Z\n\n"); for (Ren=0; Ren<=3; Ren++) { for (Col=0; Col<=4; Col++) { printf("%5d ",Numeros[Ren][Col]); } printf("\n"); } printf("\nPRESIONE <Intro> PARA CONTINUAR..."); fflush(stdin); getchar(); }

Relleno de arreglos
Al definir una variable de tipo arreglo, puede ser iniciada con valores en sus elementos.

# include <stdio.h> void main() { char Vocales[10] = {'a','e','i','o','u','A','E','I','O','U'}; int Rangos[6][2] = { 1,10, 11,20, 21,30, 31,40, 41,50, 51,60 }; float Z[10] = {12.5,3.25,1.5,34.67,7.6,4.0,89.6,4.5,9.0,19.5}; int R,C; printf("\nINICIA ARREGLOS CON VALORES ESPECIFICOS\n"); printf("---------------------------------------\n\n"); printf("ARREGLO INICIADO DE VOCALES\n\n"); for (R=0; R<10; R++) printf("%c,",Vocales[R]); printf("\n\nARREGLO INICIADO DE RANGOS\n\n"); for (R=0; R<6; R++) { for (C=0; C<2; C++) printf("%3d ",Rangos[R][C]); printf("\n"); } printf("\n\nARREGLO INICIADO DE NUMEROS REALES\n\n"); for (R=0; R<10; R++) printf("%5.2f,",Z[R]); printf("\n\nPRESIONE <Intro> PARA CONTINUAR..."); getchar(); }

Este programa utiliza las definiciones siguientes:


char Vocales[10] = {'a','e','i','o','u','A','E','I','O','U'}; Al definir la variable vocales como un arreglo se inician sus diez elementos con cada uno de los valores enumerados, es decir, en el elemento 1 la a, en el 2 la e, en el 3 la i, , en el 10 la U.

int Rangos[6][2] = { 1,10, 11,20, 21,30, 31,40, 41,50, 51,60 };


Al definir la variable rangos se le asignan los valores 1, 10, 11, 20, 21, 30, 31, 40, 41, 50, 51, 60.

float Z[10] = {12.5,3.25,1.5,34.67,7.6,4.0,89.6,4.5,9.0,19.5};


Al definir la variable z se le asignan los diez valores: 12.5,3.25,1.5,34.67,7.6,4.0,89.6,4.5,9.0,19.5.

Arreglos tridimensionales
Estn formados por un conjunto de elementos de un mismo tipo de datos que se almacenan bajo un mismo nombre y que, al igual que en los unidimensionales y bidimensionales, se diferencian por la posicin que tiene cada elemento dentro del arreglo de datos, con la aclaracin de que la disposicin de los elementos es una combinacin del arreglo unidimensional y bidimensional. La primera dimensin se podra esquematizar como el arreglo unidimensional; un conjunto de elementos, la segunda y tercera dimensin es un arreglo de dos dimensiones que constituye a cada elemento de la primera dimensin.

Un arreglo de tres dimensiones se podra leer como un arreglo de matrices, es decir, un arreglo compuesto por x elementos, donde cada elemento es un arreglo de m x n de dos dimensiones, esquemticamente:

Segunda dimensin
Rengln 0 Rengln 1 Rengln 2 Rengln 3 Rengln 4

Tercera dimensin

Columnas 01234

Elemento 0 primera dimensin Elemento 1 primera dimensin Elemento 2 primera dimensin Elemento 3 primera dimensin

Definicin del arreglo tridimensional


Al definir un arreglo es necesario hacerlo como una variable, por lo cual, en la parte de definicin de variables se utiliza el siguiente formato:
Tipodedato nombrevar[dimension1][dimension2][dimension3];

Donde: Tipodedato: es el tipo de dato que tiene el conjunto de elementos del arreglo que se est definiendo; puede ser int, float, char, etc. Nombrevar: es el nombre de identificacin de la variable. Dimension1: es un nmero entero que indica el nmero de elementos que tendr la primera dimensin. Dimension2: es un nmero entero que indica el nmero de elementos que tendr la segunda dimensin. Dimension3: es un nmero entero que indica el nmero de elementos que tendr la tercera dimensin.

Ejemplo:
Int numeros[4][5][5];

Numeros es un arreglo de tres dimensiones: 4 elementos de 5 x 5, es decir, un arreglo de 4 elementos, cada uno de los cuales es una matriz de 5 x 5.

Manejo de los elementos arreglo tridimensional

del

Para relacionar cada elemento individual de un arreglo de tres dimensiones se usan tres subndices; el primero indica la primera dimensin del elemento, el segundo la segunda dimensin y el tercero la tercera dimensin, como sigue:
Nombrevar [primera] [segunda] [tercera]

Donde: Primera: indica el nmero de elemento en la primera dimensin. Segunda: indica el nmero de elemento en la segunda dimensin. Tercera: indica el nmero de elemento en la tercera dimensin.
Al igual que toda variable, una de tipo arreglo tridimensional puede usarse para leer datos, asignarle valores mediante expresiones aritmticas, etc.

Ejemplo:
Numeros[4][5][5]=50; Scanf(%d,&numeros[1][2][3]); Scanf(%d,&numeros[0][0][2]); Numeros[0][0][4]=numeros[1][1][2]+ numeros[0][0][2]+ numeros[1][2][3]; Printf(%d,numeros[0][0][4]);

Ejemplo: Elaborar un programa que lea nmeros de tipo entero para un arreglo de 4 x 5 x 5; y los imprima.

# include <stdio.h> void main() { int Numeros[4][5][5]; int Pri,Ren,Col; printf("\nLEE NUMEROS EN UN ARREGLO TRIDIMENSIONAL\n"); printf(" Y LOS IMPRIME EN LA PANTALLA\n"); printf("NUMEROS[PRIMERA][SEGUNDA][TERCERA]\n"); for (Pri=0; Pri<4; Pri++) { for (Ren=0; Ren<5; Ren++) { for (Col=0; Col<5; Col++) { printf("NUMERO[%d][%d][%d]: ",Pri,Ren,Col); scanf("%d",&Numeros[Pri][Ren][Col]); } printf("\n"); } } for (Pri=0; Pri<4; Pri++) { printf("\n\n------------ MATRIZ %d ------------\n",Pri); for (Ren=0; Ren<5; Ren++) { for (Col=0; Col<5; Col++) { printf("%4d ",Numeros[Pri][Ren][Col]); } printf("\n"); } } printf("\nPRESIONE <Intro> PARA CONTINUAR..."); fflush(stdin); getchar(); }

Arreglos tetradimensionales
Esta formado por un conjunto de elementos de un mismo tipo de datos que se almacenan bajo un mismo nombre y que, al igual que en los unidimensionales, bidimensionales y tridimensionales, se direfencian por la posicin que tiene cada elemento dentro del arreglo de datos, con la aclaracin de que la disposicin de los elementos es una doble combinacin del arreglo bidimensional. Las primeras dos dimensiones se podran esquematizar como un arreglo bidimensional y; la tercera y cuarta dimensin, esquematizan otro arreglo bidimensional dentro del primero.

Cuarta dimensin Tercera dimensin

Segunda dimensin
Columna 0 Columna 1 Columna 2

0 1 2 3 4

Elemento 0 primera dimensin Elemento 1 primera dimensin Elemento 2 primera dimensin Elemento 3 primera dimensin

Rengln 0 Rengln 1 Rengln 2 Rengln 3 Rengln 4

Definicin del arreglo

tetradimensional
Al definir un arreglo es necesario hacerlo como una variable, por lo cual, en la parte de definicin de variables se utiliza el siguiente formato:
Tipo de dato nombrevar[dim1][dim2][dim3][dim4];

Donde: Tipo de datos: es el tipo de dato que tiene el conjunto de elementos del arreglo que se esta definiendo; puede ser int, float, char, etc. Nombrevar: es el nombre de identificacin de la variable. Dim1: es un nmero entero que indica el nmero de elementos que tendr la primera dimensin. Dim2: es un nmero entero que indica el nmero de elementos que tendr la segunda dimensin. Dim3: es un nmero entero que indica el nmero de elementos que tendr la tercera dimensin. Dim4: es un nmero entero que indica el nmero de elementos que tendr la cuarta dimensin.

Ejemplo:
Int numeros [4][3][5][5];

Numero es un arreglo de cuatro dimensiones: 4 renglones por 3 columnas, donde cada elemento es un arreglo de 5 x 5, es decir, una matriz de 4 x 3; donde cada uno de los elementos es una matriz de 5 x 5.

Ejemplo: Elaborar un programa que lea los nmeros de tipo entero para un arreglo de 4 x 3 x 5 x 5; y los imprima.

# include <stdio.h> void main() { Int Numeros[4][3][5][5]; int Ren1,Col1,Ren2,Col2; printf("\nLEE NUMEROS EN UN ARREGLO TETRADIMENSIONAL\n"); printf(" Y LOS IMPRIME EN LA PANTALLA\n\n"); printf("NUMEROS[PRIMERA,SEGUNDA,TERCERA,CUARTA]\n\n"); for (Ren1=0; Ren1<4; Ren1++) { for (Col1=0; Col1<3; Col1++) { for (Ren2=0; Ren2<5; Ren2++) { for (Col2=0; Col2<5; Col2++) { printf("TECLEE NUMERO[%d][%d][%d][%d]: ",Ren1+1,Col1+1,Ren2+1,Col2+1); scanf("%d",&Numeros[Ren1][Col1][Ren2][Col2]); } printf("\n"); } } } printf("\n\n"); for (Ren1=0; Ren1<4; Ren1++) { for (Col1=0; Col1<3; Col1++) { for (Ren2=0; Ren2<5; Ren2++) { for (Col2=0; Col2<5; Col2++) { printf("%4d ",Numeros[Ren1][Col1][Ren2][Col2]); } printf(" \n"); } printf("\n"); } } printf("\nPRESIONE <Intro> PARA CONTINUAR..."); fflush(stdin); getchar(); }

También podría gustarte