Anda di halaman 1dari 13

Abel Federico Pérez Hernández

ARREGLOS UNIDIMENSIONALES

Lista de valores relacionados de un mismo tipo de datos y que se almacena


empleando un nombre único de grupo. En C++, al nombre del grupo se le
conoce como nombre del arreglo.

Ejemplo

Temperatura
95.75
83.0
97.624
72.5
86.25

Este es un ejemplo específico de la instrucción declaratoria general del arreglo,


que tiene la siguiente sintaxis:

float temp[5]

Una buena práctica de programación consiste en definir como una constante el


número de elementos del arreglo antes de declararlo.

const int NUMELS = 5; // define una constante para el numero de elementos


float temp[NUMELS]; // declara el arreglo

Otros ejemplos:

const int NUMELS = 6;


int voltios[NUMELS]; // tiene reservado un espacio de almacenaje para seis
números enteros

const int TAMARREGLO = 4;


char codigo[TAMARREGLO];

const int TAMA = 100;


float cantidad[TAMA];

1
Abel Federico Pérez Hernández

Los elementos en el arreglo se almacenan en forma secuencial. Se tiene acceso


a cualquier elemento individual dando el nombre del arreglo y la posición del
elemento. A esta posición se le llama valor del índice o subíndice del elemento.
El primer elemento tiene índice 0, el segundo elemento tiene índice 1 y así
sucesivamente.

Dada la declaración: float temp[5]

temp[0] se refiere a la primera temperatura almacenada en el arreglo temp


temp[1] se refiere a la segunda temperatura almacenada en el arreglo temp
temp[2] se refiere a la tercera temperatura almacenada en el arreglo temp
temp[3] se refiere a la cuarta temperatura almacenada en el arreglo temp
temp[4] se refiere a la quinta temperatura almacenada en el arreglo temp

temp[0] temp[1] temp[2] temp[3] temp[4]

arreglo
temp

En los siguientes ejemplos se emplean los elementos del arreglo temp

temp[0] = 95.75;
temp[1] = temp[0] – 11.0;
temp[2] = 5.0 * temp[0];
temp[3] = 79.0;
temp[4] = (temp[1] + temp[2] – 3.1) / 2.2;

El subíndice contenido en llaves no necesita ser una constante en número


entero. Por ejemplo, si i y j son variables int, las siguientes variables de
subíndice son válidas

temp[i]
temp[2 * i]
temp[j - i]

2
Abel Federico Pérez Hernández

Una ventaja de emplear expresiones en número entero como subíndices es que


ello permite buscar en secuencia a través de un arreglo empleando un ciclo.

suma = temp[0] + temp[1] + temp[2] + temp[3] + temp[4];

Los valores de subíndice en esta instrucción pueden reemplazarse con un ciclo


for

suma = 0;
for ( i = 0; i < 5; i++)
suma = suma + temp[i];

Este código recupera en forma secuencial cada elemento del arreglo y lo agrega
a suma.

Suponga que quiere localizar el valor máximo en un arreglo de 1000 elementos


llamado voltios. El siguiente código hace esta tarea:

const int NUMELS = 1000;


maximo = voltios[0];
for ( i = 1; i < NUMELS; i++)
if ( voltios[i] > maximo)
maximo = voltios[i];

ENTRADA Y SALIDA DE DATOS PARA VALORES DE ARREGLO

A los elementos individuales del arreglo se les puede asignar valores en forma
interactiva empleando el objeto cin.

cin >> temp[0];


cin >> temp[1] >> temp[2] >> temp[3];

Un procedimiento alterno consiste en emplear un ciclo for para recorrer


cíclicamente el arreglo.

const int NUMELS = 5;


float temp[NUMELS];
for (i = 0; i < NUMELS; i++)
{
cout << (“introduzca una temperatura”);
cin >> temp[i];
}

3
Abel Federico Pérez Hernández

El código solicita al usuario cinco temperaturas. La primer temperatura


introducida se almacena en temp[0], la segunda en temp[1] y así sucesivamente.

En la salida de datos, los elementos individuales del arreglo se pueden


desplegar empleando el objeto cout o se pueden desplegar secciones completas
del arreglo al incluir la instrucción cout dentro de un ciclo.

cout << “El valor del elemento” << i << “es” << temp[i];

const int NUMELS = 20;

for (k = 5; k < NUMELS; k++)


cout << k << “ ” <<cantidad[k] << endl;

El siguiente ejemplo ilustra las técnicas de entrada y salida de datos empleando


un arreglo denominado temp, definido para almacenar cinco números enteros.
En el programa están incluidos dos ciclos for. El primero se utiliza para pasar
por cada elemento del arreglo y permite al usuario introducir valores
individuales al arreglo. El segundo ciclo for se utiliza para desplegar los valores
almacenados.

PROGRAMA 1

#include <iostream.h>
#include <conio.h>

int main()
{
clrscr();
const int MAXTEMPS = 5;
int i, temp[MAXTEMPS];

for (i = 0; i < MAXTEMPS; i++)


{
cout << "introduzca una temperatura: ";
cin>> temp[i];
}
cout << endl;
for (i = 0; i < MAXTEMPS; i++)
cout << "la temperatura " << i <<" " << "es: " << temp[i] << endl;

4
Abel Federico Pérez Hernández

getch();
return 0;
}

Observe cuidadosamente la diferencia entre el valor del índice desplegado y el


valor numérico almacenado en el elemento correspondiente del arreglo.

PROGRAMA 2

#include <iostream.h>
#include <conio.h>

int main()
{
clrscr();
const int MAXTEMPS = 5;
int i, temp[MAXTEMPS], total = 0;

for (i = 0; i < MAXTEMPS; i++)


{
cout << "introduzca una temperatura: ";
cin>> temp[i];
}
cout << "\nEl total de las temperaturas";
for (i = 0; i < MAXTEMPS; i++)
{
cout << " " << temp[i];
total = total + temp[i];
}
cout << " es " << total <<endl;
getch();
return 0;
}

INICIALIZACION DE ARREGLOS

Los elementos del arreglo se pueden inicializar dentro de las declaratorias. Por
ejemplo:

int temp[5] = {98, 87, 92, 79, 85};

5
Abel Federico Pérez Hernández

char codigos[6] = {´s´, ´a´, ´m´, ´p´, ´l´, ´e´};


double precios[7] = {10.96, 6.43, 2.58, 0.86, 5.89, 7.56, 8.22};

Una vez que se han asignado valores a los elementos del arreglo, ya sea por
medio de inicialización dentro de la instrucción declaratoria o empleando
lectura interactiva de datos, los elementos de datos se pueden procesar. El
siguiente código ilustra la inicialización de los elementos del arreglo dentro de
la declaración de éste y luego se utiliza un ciclo for para encontrar el valor
máximo almacenado en el arreglo.

PROGRAMA 3

#include <iostream.h>
#include <conio.h>

int main()
{
clrscr();
const int MAXELS = 5;
int i, max, nums[MAXELS] = {2, 18, 1, 27, 16};

max = nums[0];

for (i = 1; i < MAXELS; i++)


if (max < nums[i])
max = nums[i];

cout << "El maximo valor es : " << max << endl;

getch();
return 0;
}

6
Abel Federico Pérez Hernández

PROGRAMA 4

// Suma de dos vectores


#include <iostream.h>
#include <conio.h>
#include <stdio.h>

void main()
{
clrscr();
const int lim = 5;
int A[lim], B[lim], C[lim], i;
cout << "Dame los " << lim << " valores del arreglo A, "
<< "separados por espacios: ";
for (i = 0; i < lim; i++)
cin >> A[i];

cout << "\nDame los " << lim << " valores del arreglo B, "
<< "separados por espacios: ";
for (i = 0; i < lim; i++)
cin >> B[i];

cout << "\nLa suma es: " << endl;


for (i = 0; i<lim; i++)
{
C[i] = A[i] + B[i];
cout << C[i] << endl;
}
getch();
}

7
Abel Federico Pérez Hernández

ARREGLOS BIDIMENSIONALES

También se les llama tabla. Consta de renglones y columnas de elementos. Por


ejemplo, el arreglo de números

8 16 9 52
3 15 27 6
14 25 2 10

es un arreglo bidimensional de números enteros. Consta de 3 filas y cuatro


columnas. La declaración del arreglo es la siguiente:

int val[3][4];

De la misma forma, las declaraciones

float voltios[10][5]; // diez renglones, cinco columnas


char codigo[6][26]; // 6 renglones, 26 columnas

Tabla para diez renglones, cinco columnas

Como se ilustra en la tabla, el término val[1][3] identifica de manera única al


elemento en el renglón 1 y la columna 3.

Las variables de un arreglo bidimensional pueden emplearse en cualquier lugar


donde sean válidas.

8
Abel Federico Pérez Hernández

En los siguientes ejemplos se emplean elementos del arreglo val

vatios = val[2][3];
val[0][0] = 62;
numnuevo = 4 * (val[1][0] - 5);
sumaReng0 = val[0][0] + val[0][1] + val[0][2] + val[0][3];

La última instrucción hace que se sume el valor de los cuatro elementos del
renglón 0 y que la suma se almacene en la variable sumaReng0.

Los arreglos bidimensionales pueden inicializarse desde dentro de sus


instrucciones declaratorias. Por ejemplo, la declaración

int val [3][4] = { {8, 16, 9, 52},


{3, 15, 27, 6},
{14, 25, 2, 10} };

declara a val como un arreglo de números enteros con tres renglones y cuatro
columnas. Las llaves interiores pueden omitirse.

La inicialización

int val [3][4] = {8, 16, 9, 52, 3, 15, 27, 6, 14, 25, 2, 10};

es igualmente válida.

El siguiente código despliega todos los elementos de un arreglo bidimensional


de 3 por 4, empleando dos técnicas diferentes.

PROGRAMA 5

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <iomanip.h>

int main()

9
Abel Federico Pérez Hernández

{
clrscr();

const int NUMRENG = 3;


const int NUMCOL = 4;
int i,j;
int val[NUMRENG][NUMCOL] = {8, 16, 9, 52, 3, 15, 27, 6, 14,
25, 2, 10};
cout << "\nDespliegue del arreglo val por elemento explicito" <<endl
<< "\n" << setw(4) << val[0][0] << setw(4) << val[0][1]
<< setw(4) << val[0][2] << setw(4) << val[0][3]
<< "\n" << setw(4) << val[1][0] << setw(4) << val[1][1]
<< setw(4) << val[1][2] << setw(4) << val[1][3]
<< "\n" << setw(4) << val[2][0] << setw(4) << val[2][1]
<< setw(4) << val[2][2] << setw(4) << val[2][3];

cout << "\n\nDespliegue del arreglo val empleando ciclos for anidados" <<
endl;

for (i = 0; i < NUMRENG; i++)


{
cout << "\n";
for (j = 0; j < NUMCOL; j++)
cout << setw(4) << val[i][j];
}
cout << endl;
getch();
return 0;
}

El siguiente programa muestra el resultado de multiplicar cada elemento del


arreglo val por el número 10.

PROGRAMA 6

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <iomanip.h>

int main()

10
Abel Federico Pérez Hernández

{
clrscr();

const int NUMRENG = 3;


const int NUMCOL = 4;
int i,j;
int val[NUMRENG][NUMCOL] = {8, 16, 9, 52, 3, 15, 27, 6, 14,
25, 2, 10};

//multiplicar cada elemento por 10 y desplegarlo

cout << "\nDesplegar los elementos multiplicados";


for (i = 0; i < NUMRENG; i++)
{
cout << endl;
for (j = 0; j < NUMCOL; j++)
{
val[i][j] = val[i][j] * 10;
cout << setw(5) << val[i][j];
}
}
cout << endl;
getch();
return 0;
}

PROGRAMA 7

#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

main()
{
clrscr();
const int m=8;
int i,j;
int numeros[m][m];

for(i=0;i<m;i++)
for(j=0;j<m;j++)

11
Abel Federico Pérez Hernández

{
if (i==j)
numeros[i][j]=1;
else
numeros[i][j]=0;
}
cout<<"la matriz identidad es";
for(i=0;i<m;i++)
{
cout<<endl<<endl;
for(j=0;j<m;j++)
cout<<setw(8)<<numeros[i][j];
}
getch();
}

PROGRAMA 8

#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

main()
{
clrscr();
const int m=4;
int i,j;
int numeros[m][m];

cout<<"Introducir valores: ";


for(i=0;i<m;i++)
for(j=0;j<m;j++)
cin>>numeros[i][j];
cout<<endl;
cout<<"la matriz original es";
for(i=0;i<m;i++)
{
cout<<endl<<endl;
for(j=0;j<m;j++)
cout<<setw(8)<<numeros[i][j];
}
cout<<endl;

12
Abel Federico Pérez Hernández

cout<<endl;
cout<<"la matriz transpuesta es";
for(j=0;j<m;j++)
{
cout<<endl<<endl;
for(i=0;i<m;i++)
cout<<setw(8)<<numeros[i][j];
}
getch();
}

EJERCICIOS

Editar en C++ el programa 10.6 pag 547


Editar en C++ el programa 10.7 pag 551
Editar en C++ el programa 10.8 pag 552

Bibliografía

C++ para ingeniería y ciencias


Gary J. Bronson

CUESTIONARIO

1. Que es un arreglo unidimensional

2. Escriba 3 ejemplos de arreglos unidimensionales

3. Que es un arreglo bidimensional

4. Escriba 3 ejemplos de arreglos bidimensionales

5. Escriba 3 problemas en los cuales se usen los arreglos para su solución

6. Escriba 3 ejemplos de la declaración de arreglos unidimensionales


usando c++

7. Escriba 3 ejemplos de la declaración de arreglos bidimensionales usando


c++

13

Anda mungkin juga menyukai