You are on page 1of 12

Programación

Tecnológico de Estudios Unidad VI


Superiores de Jocotitlán
Arreglos y datos complejos

Arreglos en C++

Los arreglos (arrays) permiten almacenar vectores y matrices. 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. El subgrupo más pequeño posible se conoce como un arreglo de una dimensión. Un
arreglo de dos dimensiones se subdivide en arreglos de una dimensión. Un arreglo de tres dimensiones se
subdivide en arreglos de dos dimensiones los cuales a su vez se dividen en arreglos de una dimensión. Un
arreglo de cuatro dimensiones se subdivide en arreglos de tres dimensiones los cuales a su vez se dividen en
arreglos de dos dimensiones los cuales a su vez se dividen en arreglos de una dimensión. La misma idea se
aplica en arreglos de más 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:

1. 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 ].

Ingeniería Química Docente: Ing. Héctor Hernández García


1
Programación
Tecnológico de Estudios Unidad VI
Superiores de Jocotitlán
Arreglos y datos complejos

Arreglos Unidimensionales
Los arreglos unidimensionales sirven para manejar vectores. La palabra unidimensional no indica que se
trata de vectores en espacios de dimensión uno; indica que su manejo se hace mediante un subíndice.

El siguiente ejemplo muestra la definición de tres arreglos, uno de 80 elementos doble precisión, otro de 30
elementos enteros y uno de 20 elementos tipo carácter.

double x[80];
int numeros[30];
char nombre[20];

La primera línea indica que se han reservado 80 posiciones para números con doble precisión. Estas
posiciones son contiguas. Es importante recalcar que en C++, a diferencia de otros lenguajes, el primer
elemento es x[0], el segundo es x[1], el tercero es x[2], y así sucesivamente; el último elemento es x[79]. En
x hay espacio reservado para 80 elementos, pero esto no obliga a trabajar con los 80; el programa puede
utilizar menos de 80 elementos.

C++ no controla si los subíndices están fuera del rango previsto; esto es responsabilidad del programador.
Por ejemplo, si en algún momento el programa debe utilizar x[90], lo usa sin importar si los resultados son
catastróficos.

Bueno chamacos, ahora vamos a lo bueno, a continuación les mostraré algunos ejemplos utilizando arreglos
unidimensionales sale…

//Programa de ejemplo del uso de arreglos unidimensionales


//Por: Ing. Héctor Hernández García.
//Diciembre de 2010.
# include <iostream.h>
# include <stdio.h>
# include <conio.h>
int numeros[10],i,num=3;
void main (){
clrscr();//Instrucción para limpiar pantalla
cout <<"Este Programa muestra la serie 1 3 6...30"<<endl;
cout <<"La serie de números está almacenada en un vector"<<endl;
//Con este ciclo almacenamos la serie de números en el vector
for (i=0; i<=9; i++){
numeros[i]=num;
num=num+3;

Ingeniería Química Docente: Ing. Héctor Hernández García


2
Programación
Tecnológico de Estudios Unidad VI
Superiores de Jocotitlán
Arreglos y datos complejos

}
cout <<"La Serie De Números es la Siguiente:"<<endl;
cout<<"|";
//Con este ciclo desplegamos la serie de números almacenados en el vector
for (i=0; i<=9; i++){
cout <<numeros[i]<<"|";
}
getch();
}

Explico rápidamente las principales instrucciones del código anterior:

int numeros[10],i,num=3;
En esta línea declaro un arreglo de tipo entero de una sola dimensión y de tamaño 10, es decir, numeros[10].
numeros es el nombre del arreglo y [10] indica el tamaño, en nuestro caso es 10. las otras variables son i la
cual la utilizo como contador en el ciclo for y num que es utilizada para los números del arreglo, a ésta la
inicializo en tres que es el primer número de la serie.

En este momento se me hace indispensable mostrar mediante una prueba de escritorio lo que sucede con el
primer ciclo, para lo cual les mostraré el código y su respectiva tablita: Tomando en cuenta que num=3

for (i=0; i<=9; i++){ i i<=9 num numeros[i]=num num=num+3 i++


numeros[i]=num; 0 True 3 3 6 1
num+=3; 1 True 6 6 9 2
} 2 True 9 9 12 3
3 True 12 12 15 4
4 True 15 15 18 5
5 True 18 18 21 6
6 True 21 21 24 7
7 True 24 24 27 8
8 True 27 27 30 9
9 True 30 30 33 10
10 False

Como pueden ver siguiendo al pie de la letra la tablita anterior, en realidad es el código explicado de manera
clara, y el siguiente ciclo lo único que hace es mostrar en la pantalla el contenido del vector numeros, es
decir, 3 6 9 … 30.

Ingeniería Química Docente: Ing. Héctor Hernández García


3
Programación
Tecnológico de Estudios Unidad VI
Superiores de Jocotitlán
Arreglos y datos complejos

Bueno pues, el ejemplo anterior será el único ejemplo que comentaré, lo cual quiere decir que los siguientes
ejemplos quedará de ustedes entenderlos y si no logran captarlos a la primera, pues ya saben chamacos,
realicen la prueba de escritorio y seguramente los comprenderán y en otro caso, pues investiguen.

//Programa de ejemplo del uso de arreglos unidimensionales de tipo char


//Por: Ing. Héctor Hernández García.
//Diciembre de 2010.
#include <iostream.h>
#include <conio.h>
int i;
void main(){
char palabra1[20];
char palabra2[20];
cout<<"Programa que muestra las letras que estan en la misma posición"<<endl;
cout<<"de dos Palabras del mismo tamaño ingresadas por el usuario"<<endl;
cout<<"Ingrese la primera palabra: ";
cin>>palabra1;
cout<<"Ingrese la segunda palabra: ";
cin>>palabra2;
cout<<"LAS DOS PALABRAS COINCIDEN EN LAS SIGUIENTES LETRAS: "<<endl<<endl;
i=0;
while(palabra1[i]!=NULL & palabra2[i]!=NULL){
if(palabra1[i]==palabra2[i]){
cout<<" "<<palabra1[i]<<" EN LA POSICION: "<<i<<endl;
}
i++;
}
getch;
}

Ingeniería Química Docente: Ing. Héctor Hernández García


4
Programación
Tecnológico de Estudios Unidad VI
Superiores de Jocotitlán
Arreglos y datos complejos

//Programa de ejemplo del uso de arreglos unidimensionales


//Mostrando una forma de ordenar sus elementos
//Por: Ing. Héctor Hernández García.
//Diciembre de 2010.
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
//Declaramos un arreglo de tamaño 10 y le asignamos sus elementos
int numeros[10]={4,5,45,20,17,25,31,2,7,1};
int i,j,mayor;
void main (){
cout<<"Datos del vector original"<<endl;
cout<<"|";
for (i=0; i<10; i++){
cout<<numeros[i]<<"|";
}
for (j=1; j<11; j++){
for (i=0; i<10; i++){
if(numeros[i] > numeros[i+1]){
mayor = numeros[i];
numeros[i] = numeros[i+1];
numeros[i+1] = mayor;
}
}
}
cout<<endl<<"Datos del vector ordenados en forma ascendente"<<endl;
cout<<"|";
for(i=0; i<=9; i++){
cout<<numeros[i]<<"|";
}
getch ();
}

Ingeniería Química Docente: Ing. Héctor Hernández García


5
Programación
Tecnológico de Estudios Unidad VI
Superiores de Jocotitlán
Arreglos y datos complejos

//Programa de ejemplo del uso de arreglos unidimensionales


//Tamaño y elementos del vector ingresados por el usuario
//Por: Ing. Héctor Hernández García.
//Diciembre de 2010.
# include <iostream.h>
# include <conio.h>
# include <stdio.h>
int tamanio,i,numeros[100],impares=0,pares=0;
void main (){
clrscr();//Instrucción para borrar la pantalla
cout <<"Programa que muestra cuantos números son Pares e Impares"<<endl;
cout <<"De un vector de tamaño y elementos ingresados por el usuario"<<endl;
cout <<"Introduzca el tamaño del Vector...";
cin >>tamanio;
for (i=0; i<=tamanio; i++){
cout <<"Intoduzca el elemento "<<i+1<<" del Vector... ";
cin >>numeros[i];
}
cout <<"Los elementos del Vector son:"<<endl;
cout<<"|";
for (i=0; i<=tamanio; i++){
cout <<numeros[i]<<"|";
}
for (i=0; i<=tamanio; i++){
if ((numeros[i] % 2) == 0){
pares++;
}else{
impares++;
}
}
cout <<endl<<"El total de Números Pares en el Vector es: "<<pares;
cout <<endl<<"El total de Números Impares en el vector es: "<<impares;
getch();
}

Ingeniería Química Docente: Ing. Héctor Hernández García


6
Programación
Tecnológico de Estudios Unidad VI
Superiores de Jocotitlán
Arreglos y datos complejos

Arreglos Bidimensionales
Los arreglos bidimensionales son parecidos a una tabla, es decir, con filas y columnas y son conocidos como
Matrices. La declaración de los arreglos bidimensionales, se hace como en el siguiente ejemplo:

double a[3][4];
int pos[10][40];
char list[25][25];

En la primera línea se reserva espacio para 3 x 4 = 12 elementos doble precisión. El primer subíndice varía
entre 0 y 2, y el segundo varía entre 0 y 3. Usualmente en las matrices se dice que el primer subíndice indica
la fila y el segundo subíndice indica la columna.

A continuación veremos y comentaremos un ejemplo de arreglos Bidimensionales o mejor conocidos como


Matrices:

//Programa de ejemplo del uso de arreglos Bidimensionales


//Por: Ing. Héctor Hernández García.
//Diciembre de 2010.
# include <iostream.h>
# include <conio.h>
# include <stdio.h>
#include <stdlib.h>//Biblioteca contenedora de la función srand() y rand()
#include <time.h>//Biblioteca contenedora de la función time()
int tabla[3][3];
int i,j,numero;
void main (){
clrscr();//Instrucción para borrar la pantalla
cout <<"Programa que muestra el contenido de una matriz de 3 x 3"<<endl;
cout <<"Los Números de dicha Matriz son generados aleatoriamente"<<endl<<endl;
srand( time ( NULL ));//establece la semilla del generador de números aleatorios
//Agregamos los elementos a la matriz mediante números aleatorios
for (i=0; i<3; i++){
for (j=0; j<3; j++){
//Genera un número aleatorio de 1 a 9
numero = 1 + ( rand() % 9 );
tabla[i][j]=numero;
}
}
//Mostramos en la pantalla el contenido de la Matriz

Ingeniería Química Docente: Ing. Héctor Hernández García


7
Programación
Tecnológico de Estudios Unidad VI
Superiores de Jocotitlán
Arreglos y datos complejos

cout<<"|";;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
cout <<tabla[i][j]<<"|";
}
cout<<endl;
if (i<2){
cout<<"|";
}
}
getch();
}

Bueno, comenzaré diciéndoles que una matriz o arreglo bidimensional es algo así como una tabla, es decir,
con filas y columnas, en nuestro caso la matriz se llama tabla y es de dimensión o tamaño [3][3], esto quiere
decir que cuenta con 3 filas y tres columnas. Cada fila y cada columna cuenta con un subíndice. Para
comprender esto mucho mejor, se los voy a explicar con una tablita sale…

Subíndice j

Subíndice i 0,0 0,1 0,2

1,0 1,1 1,2

2,0 2,1 2,2

Esto quiere decir que si pensamos en la salida del ejemplo del código anterior, los elementos de la matriz
estarían almacenados de la siguiente forma:

7 5 1

4 5 7

1 1 3

Entonces si quisiéramos hacer referencia al elemento que contiene el número 4, su posición seria tabla[1][0].
Y si quisiéramos hacer referencia al elemento que contiene el numero 3, su posición sería tabla[2][2].

Ingeniería Química Docente: Ing. Héctor Hernández García


8
Programación
Tecnológico de Estudios Unidad VI
Superiores de Jocotitlán
Arreglos y datos complejos

Dada esta explicación, pienso que el código del ejemplo anterior es demasiado comprensible ya que tiene
comentarios explícitos, y de no ser así, pues para eso estoy en clase con ustedes para despejar cualquier duda.

Los siguientes ejemplos también son de matrices o arreglos bidimensionales, ojala y los lean detenidamente y
los comprendan.

//Programa de ejemplo del uso de arreglos Bidimensionales


//Por: Ing. Héctor Hernández García.
//Diciembre de 2010.
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>//Biblioteca contenedora de la función srand() y rand()
#include <time.h>//Biblioteca contenedora de la función time()
int matriz[4][5];
int mayor,menor,i,j,numero;
void main (){
clrscr();//Instrucción para borrar la pantalla
cout <<"Programa que muestra el contenido de una matriz de 4 x 5"<<endl;
cout <<"Los Números de dicha Matriz son generados aleatoriamente"<<endl;
cout <<"Además, muestra los valores Mayor y Menor de la matriz"<<endl<<endl;
srand( time ( NULL ));//establece la semilla del generador de números aleatorios
//Agregamos los elementos a la matriz mediante números aleatorios
for (i=0; i<4; i++){
for (j=0; j<5; j++){
//Genera un número aleatorio entre 10 y 99
numero = 10 + ( rand() % 90 );
matriz[i][j]=numero;
}
}
//Mostramos en la pantalla el contenido de la Matriz
cout<<"|";;
for (i=0; i<4; i++){
for (j=0; j<5; j++){
cout <<matriz[i][j]<<"|";
}
cout<<endl;
if (i<3){
cout<<"|";
}
}

Ingeniería Química Docente: Ing. Héctor Hernández García


9
Programación
Tecnológico de Estudios Unidad VI
Superiores de Jocotitlán
Arreglos y datos complejos

//En esta parte buscamos los valores mayor y menor


mayor = matriz[0][0];
menor = matriz[0][0];
for ( i=0; i<4; i++){
for ( j=0; j<5; j++){
if (matriz[i][j]>mayor){
mayor = matriz[i][j];
}
if (matriz[i][j] < menor){
menor = matriz[i][j];
}
}
}
//Mostramos los valores Mayor y Menor de la Matriz
cout<<endl;
cout<<"El mayor es: "<<mayor<<endl;
cout<<"El menor es: "<<menor;
getch();
}

//Programa de ejemplo del uso de arreglos Bidimensionales


//Por: Ing. Héctor Hernández García.
//Diciembre de 2010.
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>//Biblioteca contenedora de la función srand() y rand()
#include <time.h>//Biblioteca contenedora de la función time()
int i,j,k;
int MatrizA[3][3],MatrizB[3][3],MatrizProd[3][3];
void main(){
cout <<"Programa que muestra el producto de 2 Matrices de 3 x 3"<<endl;
cout <<"Los elementos de las matrices son ingresados por el usuario"<<endl<<endl;
//Solicitamos al usuario los elementos de la MatrizA
cout<<"Ingresando elementos de la Matriz A"<<endl;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
cout<<"Ingrese el elemento "<<i<<","<<j<<" de la Matriz A: ";
cin>>MatrizA[i][j];

Ingeniería Química Docente: Ing. Héctor Hernández García


10
Programación
Tecnológico de Estudios Unidad VI
Superiores de Jocotitlán
Arreglos y datos complejos

}
}
//Solicitamos al usuario los elementos de la MatrizB
cout<<endl<<endl<<"Ingresando elementos de la Matriz B"<<endl;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
cout<<"Ingrese el elemento "<<i<<","<<j<<" de la Matriz B: ";
cin>>MatrizB[i][j];
}
}
//Mostramos en la pantalla el contenido de la MatrizA
cout<<endl;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
cout <<MatrizA[i][j]<<"\t";
}
cout<<endl;
}
cout<<endl<<"\tX"<<endl;
//Mostramos en la pantalla el contenido de la MatrizB
cout<<endl;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
//cout <<MatrizB[i][j]<<"|";
cout <<MatrizB[i][j]<<"\t";
}
cout<<endl;
}
cout<<endl<<"\t="<<endl;
//Realizamos el producto de la MatrizA y MatrizB
for(i=0;i<3;i++){
for(j=0;j<3;j++){
MatrizProd[i][j]=0;
for(k=0;k<3;k++){
MatrizProd[i][j]=MatrizProd[i][j]+(MatrizA[i][k]*MatrizB[k][j]);
}
}
}
//Mostramos el producto de las Matrices MatrizProd
cout<<endl;

Ingeniería Química Docente: Ing. Héctor Hernández García


11
Programación
Tecnológico de Estudios Unidad VI
Superiores de Jocotitlán
Arreglos y datos complejos

for(i=0;i<3;i++){
for(j=0;j<3;j++){
cout<<MatrizProd[i][j]<<"\t";
}
cout<<endl;
}
getch();
}

Bueno pues hasta aquí termina lo relacionado a los arreglos, espero y le hayan entendido aunque sea a un
80%, si no es así, pues en clase lo veremos mucho mejor.

Los arreglos son una forma básica de manipular datos en la programación


Además, los arreglos están en todos lados
Un policía de transito se arregla con un conductor para no infraccionarlo
Los seres humanos se arreglan para verse guapos
Si tu compu se descompone, pues la llevas al técnico para que la arregle
Si repruebas, lamento decirte que eso si no tiene arreglo
¡No es cierto!, si tiene arreglo
El arreglo se llama “Examen Extraordinario”

Por: Ing. Héctor Hernández García

Ingeniería Química Docente: Ing. Héctor Hernández García


12

You might also like