1. Arreglos en programación con Lenguaje C++
Definición.
Es un grupo de ubicaciones de memoria del mismo tipo que tienen el mismo
nombre.
Manipulación.
Todo arreglo se declara y se designa un nombre. Se debe declarar el número
exacto de ubicaciones de memoria a ser reservados.
Mediante el uso de subíndice o número de índice se puede acceder a cada
elemento o ubicación de memoria individual del arreglo. Los subíndices
empiezan por lo general en cero(0).
Declaración.
int arr[6];
Le dice al compilador que separe 6 ubicaciones de memoria(0 a 5) para el
tipo de dato entero. Cada subindice se especifica por medio de corchetes [ ] en
lugar de paréntesis como usan otros lenguajes.
Declaración e inicialización
int arr [6] = { 5, 10, 15, 20, 25,30 };
arr[0] = 5
arr[1] = 10
arr[5] = 30
La instrucción
int arr [6] = { 0 }; Inicializa todos los elementos del arreglo en cero al mismo
tiempo.
Arreglos Multidimensionales.
Obedecen a las reglas de los arreglos unidimensionales. Se especifíca el # de
ubicaciones de memoria. Todo arreglo tiene un nombre y con su numero de
fila y columna se puede acceder a cada elemento.
Declaración
int tabla [3][3];
La mayor parte del procesamiento de estos arreglos se logra mediante el uso
de ciclos anidados, uno para las filas y otro para las columnas.
Declaración e inicialización
int tabla [3][3]= { { 1,1,1 }, { 2,2,2 }, { 3,3,3 } };
2. Manejo de arreglos. Unidimensional.
Determinar el mayor en un arreglo de enteros. En una funcion.
int mayor(int tab[],int n)
{ int i, nr;
nr=tab[];
for(i=0;i<n;i++)
if(tab[i] > nr)
nr=tab[i];
return 0;
}
Manejo de arreglos. bidimensional.
Llenar una matriz
#include <stdio.h>
Int mat[3][3];
Void main()
{ int i, j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf(“%d”, &mat[i][j];
}
LOS ARREGLOS
Definición:
<tipo> <variable> [ N ]
Declara un arreglo de nombre <variable> con N elementos de tipo <tipo>, (N es una
constante).
Ejemplo: int a[10];
Referencia o direccionamiento:
Se hace referencia al (x + 1) elemento del arreglo definido anterioremente mediante la
expresión:
a [x]
donde x puede ser:
1. una variable entera;
2. el resultado de una expresión aritmética.
Notas sobre los arreglos
1. el valor de x debe de estar entre 0 y N
Ejemplo:
3. main()
{
int t[100];
int i;
char c;
c='3'; i=50;
t[c-'0']=12; mete 12 en t[3], (4o. elemento de t)
t[i*2-1]=t[i]; mete 15 en t[50], (51 elemento de t)
t[102]=-1; Después ejecución dos instrucciones:
t[-1]=102; error dirección, o ''aplastamiento'' de variables
vecinas
}
Ejemplo uso arreglos
/* Ordenamiento de un arreglo de enteros */
#include <stdio.h>
main()
{
int ti[10];
int i,j,tempo;
/* Capturando los valores del arreglo */
for (i=0; i!10; i=i+1)
{
printf(''De valor de t[%d]: '', i+1);
scanf(''%d'',&ti[i]);
}
/* Ordenando el arreglo */
for (i=0; i!10; i=i+1)
for (j=0; j!10; j=j+1)
if ( ti[i] ! ti[j] )
{
tempo = ti[i];
ti[i]=t[j];
ti[j]=tempo;
}
/* Desplegando el contenido del archivo */
for(i=0; i!10; i=i+1)
printf(''%3d'', ti[i]);
printf(''nn'');
}
Paso de arreglos como parámetros
• Todos los arreglos, independientemente de su declaración, se pasan por dirección.
• Dependiendo de la dimensión del arreglo sera necesario, o no, precisar el tamaño
del arreglo, (a lo más una dimensión puede no estar especificada).
4. • Existen dos formas de pasar un arreglo como parámetro, y de declarar un parámetro
como arreglo.
• Considerando la siguiente declaración de variables:
int tab[10];
float prom;
En la función se pueden precisar los arreglos como parámetros de alguna de las dos
siguientes formas:
1. int funcion(float p; int tabla[]);
2. int funcion(float p; int tabla[10]);
independientemente de la declaración los arreglos se pueden pasar de algunas de las dos
siguientes formas:
(a) x = funcion(prom; tabla);
(b) x = funcion(prom; &tabla[0]);
Ejemplo paso arreglos como parámetros
/* Cálculo de la variancia de 10 números
#include <stdio.h>
main()
{
float t[10], t2[10];
float m1, m2;
int i;
for (i=0; i!10; i=i+1)
{
printf(''De valor de t[%d]:'',i);
scanf(''%f'',&t[i]);
}
m1=promedio(t);
potencia(t,t2);
m2=promedio(&t2[0]);
printf(''varianza:%dnn'',m2-(m1*m1));
}
/* Definición función promedio(t) */
float promedio(t)
float t[ ];
{
int i;
float s;
for (s=0, i=0; i!10; i=i+1)
s=s+t[i];
return(s/10);
}
/* Función que eleva los elementos del arreglo al cuadrado */
5. potencia(t,res)
float t[10],res[];
{
int i;
for (i=0; i!10; i=i+1)
res[i]=t[i]*t[i];
}
Ejemplo uso arreglos de dos dimensiones
/* Suma de matrices */
main()
{
float a[10][10], b[10][10], c[10][10];
captura(a);
captura(b);
suma(a,b,c);
imprime(c);
}
/* Función que captura los valores de una matriz */
captura(a)
float a[10][10];
{
int i,j;
for (i=0; i<10; i++)
for (j=0; j<10; j++)
{
printf(''Valor a[%d,%d]:''i,j);
scanf(''%f'',&a[i][j]);
}
}
/* Sumando dos matrices */
suma(a,b,c);
float a[10][10], b[10][10], c[ ][10];
{
int i,j;
for (i=0; i!10; i++)
for (j=0; j!10; j++)
c= a[i][j] + b[i][j];
}
/* Desplegando el contenido de una matriz */
despliega(a)
float a[ ][10];
{
int i,j;
for (i=0; i!10; i++)
{
for (j=0; j!10; j++)
6. printf('' %.2f '',a[i][j]);
printf(''nn'');
}
}
Nota: para abundar puede visitar http://webdia.cem.itesm.mx/ac/rogomez/Tutorial-
LengC/principal.html