Está en la página 1de 38

ARREGLOS

Prof. GPR
Situación Problemática
• ¿Cómo sacar el promedio de 100 notas?
• ¿Definir 100 variables?
• ¿Como decirle al computador que
nota1..nota100 son todas notas?
• ¿Cómo acceder a todas?
¿Así?
void main(){
int nota1, nota2, nota3,……nota100;
. . .
}

para resolver esto usaremos ARREGLOS


¿Qué es un arreglo?
• Es una colección de elementos del mismo
tipo.
Notas 15 8 12 5 17 13 14 8

Nom R O S A \0=null
Arreglos
B[0][0] B[0][1] B[0][2]

A
B

A[0] A[1] A[2]

B[2][0] B[2][1] B[2][2]


Arreglos multidimensionales

1x3

Arreglo de tres variables 3x3x2

3x3 Arreglo de 18 variables


¿O arreglo de 2 arreglos de 3
arreglos de 3 variables?
Arreglo de 9 variables
¿O arreglo de 3 arreglos de 3 variables?
¿Qué es un vector?
• Es un array unidimensional
• Formado por una secuencia de datos del
mismo tipo
• El nombre del grupo es el nombre del vector.
• Los elementos de un vector se almacenan en
zonas contiguas de memoria y se puede
acceder a ellos de manera directa mediante
un índice o posición.
Para definir un vector se usa:
tipo nombre_vector[tamaño];
Ejemplos:
int numeros[4];
char letras[3];
float reales[12];
Ejemplo
Características de un arreglo
• Todos los elementos son del mismo tipo
• Tienen un tamaño definido que no cambiara
después de haber sido establecido
• Para acceder a cada elemento del arreglo se
usan subíndices

15 8 12 5 17 13 14 datos

0 1 2 3 4 5 6 índice
Ejemplo:
Temperatura
95.75
83.0
97.625
72.5
86.25
Ejemplo:
Temperatura
95.75 => Temperatura[0]
83.0 => Temperatura[1]
97.625 => Temperatura[2]
72.5 => Temperatura[3]
86.25 => Temperatura[4]
¿Cómo acceder a los a los
arreglos?
• Si son vectores se puede acceder a
todas con un ciclo for
• Si son matrices se puede acceder a
los datos con un doble ciclo for
Ejemplo:
Temperatura for(i=0;i<5;i++)
cin>>Temperatura[i];
Temperatura[0] 95.75

Temperatura[1] 83.0

Temperatura[2] 97.625

Temperatura[3] 72.5

Temperatura[4] 86.25
ESTRUCTURA DE DATOS ( ARREGLOS )

Es una colección finita, homogenea y ordenada de


elementos
Finita.- Indica el número máximo
Homogénea.- Son del mismo tipo (entero, reales,
caracteres)
Ordenada.- Llevan un orden consecutivo a través de un
índice

Ejem.- A= 34 45 12 05 93 Datos
(0) (1) (2) (3) (4) Índices
Arreglos

1005AA Nota 1 1005AA Nota 1


Nota 2
Nota 3
2FFF88 Nota 10.000 .
.
.

1005AA+10000 Nota 10.000


FF00B2 Nota 2

FF0F9D Nota 3
Arreglos

Nota 1
2
3 10.000
.
.
.

10.000
Definición de arreglos
<tipo> <nombre> [<tamaño>];

Cualquier Cualquier Corchetes Constante que


tipo válido nombre válido obligatorios especifica el
tamaño
Definición de arreglos
#define TAMAGNO 32

int nota1,nota2,…,nota10000;

int notas[10000];
float otro[TAMAGNO];
Char muchos[80];
Definición de arreglos
• El tamaño debe ser constante
• No se pueden utilizar variables para
especificar el tamaño.
• Se suelen utilizar constantes de
preprocesador.
Definición de arreglos

… #define tamagno 10000


int tamagno=10000; …
int notas[tamagno]; int notas[tamagno];
… …
Acceso a arreglos
• Como los arreglos definen “grupos”, es importante
poder acceder a los “integrantes” del arreglo.
• Cada “integrante” se representa por un índice
secuencial. Se les llama elementos.
• El índice varia entre 0 y (tamaño-1).
• Cada elemento es una variable común.
• Para acceder a una de estas variables (lectura y
escritura) se utiliza la notación “[<indice>]”
Acceso a arreglos
<arreglo>[<indice>] = <sentencia>;

Modificacion el elemento correspondiente al indice

<variable> = <arreglo>[<indice>];

Recuperación el elemento correspondiente al indice


EJEMPLOS
Ejemplo 2
Ejemplos:
1. Definir cinco elementos de un vector y
reportarlos.
2. Ingresar seis edades por teclado y
reportarlas usando arreglos.
3. Hacer un programa que pida 10
calificaciones por teclado y reporte la suma
de dichas calificaciones.
#include<iostream>
using namespace std;
int main()
{int edad[6],i;
for(i=0;i<6;i++){
cin>>edad[i];}
cout<<"Valores del arreglo"<<endl;
for(i=0;i<6;i++){
cout<<edad[i]<<endl;}
return 0;
}
Ejemplo
#include<iostream>
using namespace std;
int main()
{int i;
char cadena[6];
gets(cadena);
for(i=0;i<6;i++){
cout<<cadena[i]<<endl;}
return 0;
}
Acceso a arreglos
… Primer elemento del arreglo “notas”
int notas[10000];
Recupera el valor del primer elemento
notas[0]=0;
cout << notas[0]<<endl;
notas[1]=notas[0]+1;
cout<<notas[1])<<endl;

notas[10000]=notas[9999]+1;
cout<<notas[10000]<<endl;

Modifica el valor de la segunda variable
Ejemplo 1
int main(){
0
int numeros[10]; 1
int i; 2
numeros[0]=0;
3
for(i=1;i<10;i++) 4
numeros[i]=numeros[i-1]+1; 5
for(i=0;i<10;i++)
6
cout<<numeros[i]<<endl; 7
8
return 1;
}
9
…. Ejemplo 2
#include <math.h>
#define N 4

int main(){

int numeros[N];
int i;
double sum;
for(i=0;i<N;i++)
cin>>numeros[i]);
sum=0;
for(i=0;i<N;i++){
sum = sum + numeros[i];
}
return 0;
}
Ejemplo 3
#include <math.h>
#define N 4
int main(){
int numeros[N];
int i;
double sum, parit,pgeom;
sum=0;
pgeom=1;
for(i=0;i<N;i++){
sum = sum + numeros[i];
pgeom = pgeom * numeros[i];
}
parit = 1.0*sum / N;
pgeom = pow(pgeom, 1.0/N);

return 1;
}
Ejemplo 4
#include <math.h>
#define N 4

int main(){
int numeros[N];
int i;
int maximo, minimo;

minimo=1000;
maximo=0;
for(i=0;i<N;i++){
if(numeros[i]<minimo)
minimo=numeros[i];
if(numeros[i]>maximo)
maximo=numeros[i];
}
return 1;
}
Acceso a arreglos
• Solo se puede acceder a los indices entre el
cero y tamaño-1.
• Sin embargo, C no realiza un chequeo de
acceso a indices inválidos.
• ¿Qué pasa si accedemos a un indice
invalido?
• Veremos el analisis de arreglos como
punteros.

También podría gustarte