Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido Unidad V Arreglos
Contenido Unidad V Arreglos
Arreglos en C++
Un arreglo es una colección ordenada de variables del mismo tipo. Las variables que
pertenecen a un arreglo se conocen por el nombre de elementos. El término ordenado
significa que en la colección hay un primer elemento, un segundo elemento, un tercer
elemento, y así sucesivamente. Además, los elementos pueden a su vez organizarse en
subgrupos llamadas dimensiones.
En resumen, un arreglo:
•No es una variable; es un grupo de variables conocidas como elementos
•Cada elemento ocupa una posición dentro del grupo
•Todos los elementos son del mismo tipo
•El nombre del arreglo indica donde se localiza el grupo en la memoria de la computadora.
•Los arreglos se clasifican de acuerdo a las dimensiones que tengan
•Las dimensiones no tienen relación con el plano Cartesiano; nada que ver con matemática
•Las dimensiones indican como están organizados los elementos dentro del grupo
•Los arreglos de dos dimensiones pueden visualizarse como tablas
•Los valores que se guarden en el arreglo se almacenan en los elementos ya que los
elementos son las variables
Para crear arreglos en C++, hay que indicar el tipo de los elementos (ejemplo, int, char,
double, bool o un tipo definido por el programador)
2. el nombre del arreglo
3. la cantidad de dimensiones y sus tamaños; cada dimensión comienza con el signo
[ seguido por el tamaño de la dimensión y termina con el signo ]
Para crear un arreglo de una dimensión, el formato es el siguiente:
<tipo de los elementos> <nombre del arreglo> [ <tamaño primera dimensión> ]
Para determinar la cantidad de elementos en un arreglo, hay que multiplicar el tamaño de
cada una de las dimensiones indicados en la declaración. El tamaño debe ser un literal de
tipo entero o el nombre de una constante de tipo entero.
Para nombrar un elemento en un arreglo hay que indicar el nombre del arreglo, seguido de
tantas parejas de corchetes [ ] como dimensiones declaradas. Dentro de cada pareja de
corchetes tiene que haber un índice. La combinación de los índices indica la posición del
elemento dentro del grupo. El valor mínimo para un índice es 0. El valor máximo es uno
menos que el tamaño de la dimensión correspondiente en la declaración del arreglo.
Arreglo unidimensional
El subgrupo más pequeño posible se conoce como un arreglo de una dimensión. Un arreglo
unidimensional tiene una sola dimensión. En C#, la dimensión se maneja por medio de un
par de corchetes. A los arreglos de una dimensión también se les llama listas.
Declaración.
La declaración de un arreglo unidimensional consiste en establecer las características del
arreglo y sus elementos, por medio de la siguiente sintaxis:
Donde:
el par de corchetes, [ ], representa la dimensión del arreglo y encierra un número entero que
corresponde al número de elementos del arreglo.
Ejemplos:
int [ ] a ;
float [ ] distancia ;
Observe que, en la declaración, el espacio entre los corchetes está vacío. Esto se debe a que,
durante dicha operación, no se reserva espacio en la memoria.
Creación.
La creación de un arreglo unidimensional consiste en reservar espacio de memoria para
todos sus elementos, utilizando la siguiente sintaxis:
INSTITUTO TECNOLOGICO DE ORIZABA
Donde:
Ejemplos:
distancia = new float[ 5] ; // Se crea el arreglo distancia , con 5 elementos de punto flotante
y precisión sencilla .Artículo [] art = new Artículo[3];
Artículo [ ] art = new Artículo[ 3]; // Se crean 3 referencias a objetos de la clase Artículo
Inicialización.
Si el tipo del arreglo es numérico, a sus elementos se les asigna el valor cero.
Si el tipo del arreglo es char, a sus elementos se les asigna el valor '\u0000'.
Si el tipo del arreglo es bool, a sus elementos se les asigna el valor false.
Si el tipo del arreglo es una clase, a sus elementos se les asigna el valor null.
Cuando se requiere asignar valores iniciales diferentes de los predeterminados, es posible
agrupar las operaciones de declaración, creación e inicialización en una sola instrucción,
por ejemplo:
INSTITUTO TECNOLOGICO DE ORIZABA
Acceso.
Se puede acceder a los valores de los elementos de un arreglo a través del nombre del
arreglo y un subíndice. El subíndice debe escribirse entre corchetes y representa la posición
del elemento en el arreglo. Así, podemos referirnos a un elemento del arreglo escribiendo el
nombre del arreglo y el subíndice del elemento entre corchetes. Los valores de los
subíndices empiezan en cero para el primer elemento, hasta el tamaño del arreglo menos
uno.
Ejemplo:
float [ ] distancia = new float[5] ; // Crea el arreglo distancia con 5 elementos.
float x = 25F, y = 10F ; // Crea dos variables de punto flotante y precisión sencilla.
Aplicaciones.
Listas.
Resolvamos el problema de manejar dos listas: una con los nombres de un grupo de
alumnos y otra con una calificación para cada uno de los alumnos.
Primero se deberán leer los nombres de los alumnos y la calificación que corresponde a
cada uno de ellos y después habrá que desplegar dos columnas: una con los nombres de los
alumnos y la otra con sus respectivas calificaciones.
INSTITUTO TECNOLOGICO DE ORIZABA
Número de alumnos: 30
Nombre [0] :
Calificación[0] :
Nombre [1] :
Calificación[1] :
Nombre [2] :
Calificación[2] :
...
...
Nombre [29] :
Calificación[29] :
using System;
using C = System.Console;
int nAlumnos;
nAlumnos = Convert.ToInt32(C.ReadLine());
//alumnos.
Vectores.
tipo_elemento nombre[largo];
Esto declara la variable nombre como un vector de tipo_elementos que podrá contener
largo cantidad de elementos, y cada uno de estos elemento podrá contener un valor de tipo
tipo_elemento.
Por ejemplo:
double valores[128];
En este ejemplo declaramos un vector de 128 elementos del tipo double, los índices de los
elementos irían entre 0 (para el primer elemento y 127 para el último).
De la misma forma que con las otras declaraciones de variables que hemos visto se le puede
asignar un valor iniciar a los elementos.
tipo_elemento elemento;
...
elemento = nombre[2];
Asumiendo que tenemos el vector anterior definido estaríamos guardando valor_2 en
elemento.
/*
* Ejemplo : El producto escalar de dos vectores
*/
#include <stdio.h>
int main()
{
INSTITUTO TECNOLOGICO DE ORIZABA
// imprime el resultado
printf("(%f, %f, %f) . (%f, %f, %f) = %f\n",
vector_1[0], vector_1[1], vector_1[2],
vector_2[0], vector_2[1], vector_2[2],
resultado);
return 0;
}
Mientras tanto usemos esto para definir una función que le aplique otra función que recibe
por parámetro a cada elemento del vector, guardando el resultado en el mismo vector y una
llamada de ejemplo a esta.
int matriz[3][7];
int tabla[3][4]={ { 1, 2, 3, 4},
{ 5, 6, 7, 8}, /* los espacios y saltos de líneas no son tomados en cuenta */
{ 9,10,11,12} };
double v[2][2][2];
...
printf("tabla[0][1]: %i\n", tabla[0][3]); // Imprime 4
printf("tabla[2][0]: %i\n", tabla[2][0]); // Imprime 9
...
En este ejemplo tabla es un vector de longitud 3, cuyos elementos son vectores de longitud
4 de elementos de tipo int.
En resumen, suponiendo que v[n] es un vector de cualquier tipo de dato con n cantidad de
posiciones, al vector v se le aplican las siguientes reglas:
3.En versiones previas a C99 n es una constante definida antes de la declaración de v[n]
Arreglo bidimensional
Declaración.
La declaración de un arreglo consiste en establecer las características del arreglo y sus
elementos, por medio de la siguiente sintaxis:
Donde:
el par de corchetes y la coma, [ , ], representan las dimensiones del arreglo y encierra dos
números enteros, cuyo producto corresponde al número de elementos del arreglo.
Ejemplos:
double [ , ] matriz ;
int [ , ] ubicación ;
INSTITUTO TECNOLOGICO DE ORIZABA
Observe que, en la declaración, el espacio entre los corchetes está vacío. Esto se debe a que,
durante dicha operación, no se reserva espacio en la memoria.
Creación.
La creación de un arreglo bidimensional consiste en reservar espacio en la memoria para
todos sus elementos, utilizando la siguiente sintaxis:
Donde:
dim1 y dim2 son valores enteros que representan las dimensiones del arreglo.
Ejemplos:
matriz = new double [2, 3] ; // Se crea el arreglo matriz, con 6 elementos de tipo
Inicialización.
Un arreglo es un objeto que,cuando es creado por el compilador, se le asignan
INSTITUTO TECNOLOGICO DE ORIZABA
Si el tipo del arreglo es numérico, a sus elementos se les asigna el valor cero.
Si el tipo del arreglo es char, a sus elementos se les asigna el valor '\u0000'.
Si el tipo del arreglo es bool, a sus elementos se les asigna el valor false.
Si el tipo del arreglo es una clase, a sus elementos se les asigna el valor null.
Cuando se requiere asignar valores iniciales diferentes de los predeterminados, es posible
agrupar las operaciones de declaración, creación e inicialización en una sola instrucción,
por ejemplo:
{ "Luís","ayudante"} };
Acceso.
Se puede acceder a los valores de los elementos de un arreglo bidimensional a través del
nombre del arreglo y dos subíndices. Los subíndices deben escribirse entre corchetes y
representa la posición del elemento en el arreglo. Así, podemos referirnos a un elemento del
arreglo escribiendo el nombre del arreglo y los subíndices del elemento entre corchetes. Los
valores de los subíndices empiezan en cero para el primer elemento, hasta el tamaño del
arreglo menos uno.
Ejemplo:
int [ , ] posición = new int[5, 10] ; // Crea el arreglo posición , con 50 elementos de tipo
entero.
int x;
posición[ 3, 5] = 3 ;
x = posición[ 3, 5] ;
Aplicaciones.
Matrices.
INSTITUTO TECNOLOGICO DE ORIZABA
Ejemplo 1:
Se debe controlar la ubicación de los asistentes a una sala de conferencias por medio de un
gafete que tiene escrito el nombre del asistente, la fila y la columna donde se ubica su
asiento.
// Captura los nombres de todos los asistentes y les asigna sus asientos,
asistente[ i , j ] = System.Console.ReadLine( );
System.Console.WriteLine( asistente[ i , j ] );
Ejemplo 2 :
Dada la matriz A :
895
632
y la matriz B :
INSTITUTO TECNOLOGICO DE ORIZABA
714
503
using System;
using C = System.Console;
namespace Sumatrices
{
class Matriz
{
const int r = 2, c = 3;
int i, j;
C.Clear();
}
INSTITUTO TECNOLOGICO DE ORIZABA
C.WriteLine("\nMatriz S = A+B\n");
C.WriteLine();
Declaración
char m[2][3]; // forma una tabla de dos filas y tres columnas
// cada fila es un arreglo de una dimensión
// la declaración indica que hay dos arreglos de una dimensión
Nombre del grupo
m → indica la localización del grupo en la memoria
Nombre de las filas
m[0] → primera fila → indica la localización de la fila dentro del grupo
m[1] → segunda fila → indica la localización de la fila dentro del grupo
Nombre de los elementos
m[0][0] → primer elemento
m[0][1] → segundo elemento
m[0][2] → tercer elemento
m[1][0] → cuarto elemento
m[1][1] → quinto elemento
m[1][2] → sexto elemento
Programas
#include<stdio.h>
#include<conio.h>
void main ()
{
int num[20]={5,67,8,90,345,12,33,45,78,1,2,78,900,67,345,12,21,5,98,1000};
int i,dato;
clrscr();
printf("de un numero entero : \n");
scanf("%d",&dato);
for (i=0;i<=19;i++){
if (dato==num[i]){
textcolor(RED);
cprintf("\nEl %d se encuentra en la posicion %d del arreglo \n",dato,i);
}
else {
printf("\nEl %d NO se encuentra en la posicion %d del arreglo \n",dato,i);}}
getch();
}
#include<stdio.h>
#include<conio.h>
void main ()
{
int num[20]={5,67,8,90,345,12,33,45,78,1,2,78,900,67,345,12,21,5,98,1000};
int i,dato,bandera=0;
clrscr();
printf("de un numero entero : \n");
scanf("%d",&dato);
for (i=0;i<=19;i++){
if (dato==num[i]){
printf("\nEl %d se encuentra en la posicion %d del arreglo \n",dato,i);
bandera=1;
}
}
if (bandera==0){
printf("\nNO");
}
getch();
}
#include<stdio.h>
#include<conio.h>
void main ()
{
int num[20];
int i,dato,bandera;
INSTITUTO TECNOLOGICO DE ORIZABA
char resp;
clrscr();
for (i=0;i<=19;i++){
printf("\nDame el elemento %d ",i);
scanf("%d",&num[i]);
}
do{
bandera=0;
printf("\nde un numero entero : \n");
scanf("%d",&dato);
for (i=0;i<=19;i++){
if (dato==num[i]){
printf("\nEl %d se encuentra en la posicion %d del arreglo \n",dato,i);
bandera=1;
}}
if (bandera==0){
printf("\nNO");}
printf("\nQuieres buscar otro número en el arreglo s/n");
resp=getch();
}while(resp=='s');
getch();}