You are on page 1of 8

Arreglos En Lenguaje C

Arreglo.- Es una colección de variables


va riables del mismo tipo que se referencian utilizando un
nombre común. Un arreglo consta de posiciones de memoria contigua. La dirección más
 baja corresponde al primer elemento  la más alta al último. Un arreglo puede tener una o
varias dimensiones. !ara acceder a un elemento en particular de un arreglo se usa un "ndice.

Arreglos unidimensionales  multidimensionales. En el lenguaje C++ un arreglo se le


conoce como un tipo de dato compuesto. Los arreglos pueden tener una o varias
dimensiones.
Índice de un arreglo
 Todo arreglo esta compuesto por un numero de elementos. El indice es
un numero correlativo que
indica la posicion de un elemento del arreglo. Los indices en C++ van
desde la posicion 0 hasta la
posicion tamano – 1.

Elemento de un arreglo
Un elemento de un arreglo es un valor particular dentro de la estructura
del arreglo. Para acceder a un
elemento del arreglo es necesario indicar la posicion o indice dentro del
arreglo. Ejemplo
• arreglo!0" ##Primer elemento del arreglo

Arreglo Unidimensional o VECTOR 


Es un arreglo de una sola dimensión# para indicar a qu$ elemento nos referimos# se necesita
especificar un sólo número o "ndice# que corresponde a la posición relativa de dic%o
elemento dentro del arreglo.

Los arreglos$ al igual que las dem%s varia&les de&en declararse antes de poder
utili'arlas$ ( cumplen con las mismas reglas de alcance ( vida.

Los arreglos de una sóla dimensión reciben tambi$n el nombre de vectores. La sinta&is de
la declaración de un arreglo unidimensional es la siguiente'

tipo-base identificador[NumElementos] ;
)&servaciones
• El tipo-base puede ser cualquiera de los tipos &%sicos del lenguaje$ o
incluso algunos complejos como estructuras. Cada elemento del arreglo
ser% del tipo de*nido aqu.

El identifcador  es el nom&re que distinguir% el arreglo.

Los corchetes [] son o&ligatorios.

El t,rmino NumElementos determina el tama-o del arreglo$ es decir$ la


cantidad de elementos del tipo &ase que contendr%. ichos elementos
estar%n numerados consecutivamente$ empe'ando en 0.

Es posi&le declarar un arreglo unidimensional ( al mismo tiempo iniciali'ar sus


elementos con valores del tipo &ase. La sinta/is para hacer esto es la siguiente

<tipo-base> <identificador>[<NumElementos>] = { valor1,


valor2,  !;

(bservaciones'

• Con los valores indicados entre llaves  se iniciali'ar%n los elementos


del arreglo.

• Los valores de&en ser del 2tipo3&ase4 del arreglo.


•  5i se inclu(en menos valores que elementos en el arreglo$ los
6ltimos ser%n iniciali'ados en cero.

5i se hace iniciali'aci7n$ es posi&le omitir el tama-o del arreglo ( dejar que el


compilador lo dedu'ca a partir de los valores asignados. 8er ejemplo m%s
a&ajo.

La declaración de estructuras complejas# como los arreglos# se %ace a partir de tipos


e&istentes# por lo que es posible declarar variables de un tipo simple  arreglos con ese tipo
como base# en una misma l"nea. !or ejemplo# en la siguiente declaración se está definiendo
una variable entera# llamada numero#  al mismo tiempo un arreglo con )** enteros#
numerados de * a ++#  llamado vec'

int numero, vec[1""];


,e accede a los elementos del arreglo por medio de "ndices. En el lenguaje  todos los
arreglos empiezan por * cero/0 esto quiere decir que si se quiere acceder al primer
elemento de un arreglo se utiliza * para el "ndice.
!ara asignar un valor a un elemento del arreglo# se coloca el arreglo del lado izquierdo de la
asignación'
1234 5 )60

E7E8!L('
El siguiente programa realiza la lectura de )* datos  calcula la suma de los mismos'
9include :stdio.%;
9include :conio.%;
main/
<
int i#sum#&2+40
sum5*0
for i5*0 i:)*0 i==/
<
 printf >?@B(CUE EL CA( D d ' ># i/0
scanf >Dd># &2i4/0
sum 5 sum = &2i40
F
 printf >GnEL HE(B (B?I?@AL E, '>/0
for i5*0 i:)*0 i==/
<
 printf >GnDd ># &2i4/0
F
 printf >GnGn LA ,U8A CEL HE(B E, ' D d># sum/0
getc%/0
F

Bidimensionales (tablas o matrices)


Una ta&la &idimensional es una matri' de datos del mismo tipo. La siguiente
instrucci7n declara datos como una ta&la de enteros de dimensi7n 9/:

int datos [2][#];

Podemos pensar en datos como en una matri' con dos *las ( tres columnas.

El programa de a&ajo suma dos matrices de dimensi7n 9/: ( escri&e el


resultado en la pantalla del ordenador. Las matrices se leen de un archivo de
te/to mediante &ucles ;or anidados$ es decir$ uno dentro del otro.

Una ;orma sencilla de entender el ;uncionamiento de los &ucles anidados es


pensar en ellos como en un cuenta <il7metros. =asta que no da una vuelta el
contador de la derecha$ no avan'a el contador que est% a la i'quierda.

En el caso de los &ucles$ el &ucle m%s interno se corresponde con el contador


de la derecha. Por ejemplo$ la siguiente instrucci7n

for $i="; i<2; i%%&


for $'="; '<#; '%%&
printf $()d )d*n(, i, '&;

escri&e lo siguiente en la pantalla

" "
" 1
" 2
1 "
1 1
1 2

Las macros >?L@5 ( C)LUAB@5 del programa permiten cam&iar ;%cilmente la


dimensi7n de las matrices sin mucho es;uer'o. Todo el c7digo utili'a estas
macros en lugar de constantes que ha&ra que cam&iar a mano si quisi,ramos
adaptar el programa.

El lenguaje  permite el uso de matrices# es decir# arras bidimensionales. En general# todo


lo que vamos a estudiar en esta sección se puede e&trapolar a arras incluso n-
dimensionales o tensores/# aunque en la práctica e l uso de arras con más de 6
dimensiones no es mu común. La declaración de una matriz o arra bidimensional es'

tipo variable+matri[N][];
Conde @  8 son el número de filas  de columnas respectivamente la dimensión de la
matriz/. ,e %a escrito la dimensión con letras maúsculas# a que deben ser constantes#  al
igual que con vectores se suelen definir con constantes# por ejemplo'

.define N / 00nmero de filas de las matrices ue vo3 a declarar


.define  4 00nmero de columnas de las matrices ue vo3 a declarar

main$&
{
double matri1[N][], matri2[N][];
int matri+entera[N][];

!

Multidimensionales (tres o más dimensiones)


Es una estructura de datos estatica y de un mismo tipo de datos, y de longitud fija
que almacena datos
de forma matricial. De igual forma que los arreglos unidimensionales, el
almacenamiento de los datos
en la memoria se realiza de forma secuencial y son accedidos mediante indices.
Los arreglos
multidimensionales son tambien conocidos como matrices. Por lo tanto se llama
matriz de orden
m!n a un conjunto rectangular de elementos dispuestos en filas m y en
columnas n, siendo m y n
numeros naturales. Las matrices se denotan con letras mayusculas" #, $, C, ... y
los elementos de las
mismas con letras minusculas y subindices que indican el lugar ocupado" a, b,
c, ... %n elemento
generico que ocupe la fila i y la columna j se escribe i,j. &i el elemento generico
aparece entre
parentesis tambien representa a toda la matriz" # 'i,j(.
%na matriz de orden )* se muestra a continuacion, siendo  una matriz de ) filas
y  columnas, la representacion grafica de sus posiciones seria la siguiente"

M 3x4
>ilas  :$ columnas  D

Matrices cuadradas
Una matri' cuadrada es una matri' que tiene el mismo numero de *las (
columnas. La matri' que se
muestra a continuacion es de orden :/:.

Declaración de arreglos multidimensionales


La sinta/is es la siguiente
tipo_dato identifcador [dimensión1] [dimensión2] ... [dimensiónN]  Donde !
es un n"mero
natural #ositi$o.

E%em#lo @rreglo de dos dimensiones de orden 9/:.


char m!9"!:" 

eclaracion
char m!9"!:" ## ;orma una ta&la de dos *las ( tres columnas
## cada *la es un arreglo de una dimensi7n

## la declaracion indica que ha( dos arreglos de una dimension


Bom&re del grupo
m F indica la locali'acion del grupo en la memoria
Bom&re de las *las

Ejemplo 5. Llenado de un arreglo de enteros de dimension :/9. En este


ejemplo el llenado lo reali'a el
usuario$ en otros ejemplos se vera como reali'ar llenado de matrices
mediante asignacion automatica$
calculos de operaciones$ etc.

1. #include <iostream>
2. using namespace std;
3. int main()
. !
". int matri $3%$2%;
&. int 'alor;
. or(int i*+;i<3;i,,)  ecorre las flas de la matri 
/. !
0. or(int *+; <2;,,)  ecorre las columnas de la matri 
1+. !
11. cout<<ngrese el 'alor de la matri en la posicion
$<<i<<4<<<<%<<endl;
12. cin>>'alor;
13. matri$i%$% * 'alor;
1. 5
1". 5
1&.  mprimiendo el arreglo en ormato matricial
1. or(int i*+;i<3;i,,)
1/. !
10. cout<<6;
2+. or(int *+; <2;,,)
21. !
22. cout<<7t<<matri$i%$%<<7t;
23. 5
2. cout<<6<<endl;
2". 5
2&. return 

2.5

You might also like