04 Arreglos Unidimensionales Teoría
04 Arreglos Unidimensionales Teoría
04 Arreglos Unidimensionales Teoría
Unidad 04
Arreglos Unidimensionales
Unidad 04
Arreglos Unidimensionales
Objetivos
Definicin
Declaracin e Inicializacin
Elementos de un Arreglo
Lectura y Escritura de Arreglos
Bsqueda Secuencial
Arreglos Paralelos
Problema:
Elaborar un programa en Lenguaje C que lea
5 notas de un Alumno y luego las imprima en
orden inverso al ingresado
void main()
{ int Nota1,Nota2,Nota3,Nota4,Nota5; // Variables para almacenar las
5 notas
//Ingreso de Datos
cout<<
cout<<
cout<<
cout<<
cout<<
Ingrese
Ingrese
Ingrese
Ingrese
Ingrese
Nota
Nota
Nota
Nota
Nota
1
2
3
4
5
;
;
;
;
;
cin>>Nota1;
cin>>Nota2;
cin>>Nota3;
cin>>Nota4;
cin>>Nota5;
5
4
3
2
1
:
:
:
:
:
<<
<<
<<
<<
<<
Nota5;
Nota4;
Nota3;
Nota2;
Nota1;
Definicin de Arreglo
es
Declaracin de un arreglo
unidimensional
En C, para poder utilizar un arreglo
primero hay que declararlo
Al declarar un arreglo unidimensional
se reserva, en la memoria RAM, el
espacio suficiente para almacenar
todos los valores
La cantidad de memoria que se reserva
esta dada por el tamao del tipo de
dato y la cantidad de elementos del
Supongamos
que
tenemos
siguiente variable:
Tipodato *Nombrepuntero;
Usando New sera de la siguiente
forma:
Nombrepuntero=new
Tipodato[cantidad];
la
Declaracin de un arreglo
unidimensional
Veamos el siguiente ejemplo:
Sea Vec un arreglo de enteros con 7
posiciones:
int *Vec = new int[7];
Si suponemos que un dato entero
ocupa 2 bytes.
Tendramos lo siguiente:
Declaracin de un arreglo
unidimensional
Direccin
en Memoria
ndice del
Arreglo
Arreglo de
7 valores
AB001
AB003
AB005
AB007
AB009
AB00A
20
Valor en Vec[0]
Vec
La direccin de
&Vec[0] es AB001
15
Valor en Vec[4]
AB00C
La direccin donde
se inicia Vec es :
AB001
la
realizar
lo
float * ptrfloat;
En este caso la variable ptrfloat
es una variable esttica, por lo
tanto ocupar una posicin de
memoria dentro de la zona
esttica.
Imaginemos
que
el
espacio de color azul es el
asignado para alojar a la
variable ptrfloat
Al
ser
una
asignacin
dinmica se le asignar un
espacio dentro del HEAP
78A1
78B1
Mediante un algoritmo de
seleccin se busca 10 espacios
contnuos de memoria para
alojar los 10 datos segn el tipo
al que apunta el puntero
Elementos de un Arreglo
Sea Vec un arreglo de 10 valores
enteros
Vec
89
36
15
64
37
29
18
59
75
91
Vec[0]
Vec[1]
Vec[9]
89
36
91
Elementos de un Arreglo
Vec
89
36
15
64
. N-1
De manera general:
i-simo elemento
Vec[i]
ndice del
Arreglo
Vec
14
19
20
11
10
16
Vec
0
14
0
5
0
19
20
0
0
11
0
10
0
16
Arreglos como
punteros
Si
se
le
asign
dinmicamente la memoria a
un
arreglo,
cmo
se
libera????
Arreglos como
punteros
Si hemos utilizado new para
asignar debemos utilizar delete
para liberar
delete [ ] Nombrepuntero;
Debemos anteponer los corchetes
al nombre de la variable del tipo
puntero
al
azar
en
un
void main()
{ int nele; //numero de elementos del arreglo
int *X = new int[10]; // Arreglo que almacenara los datos
//Lectura y Validacin del Numero de elementos
Vec
29
18
59
75
91
29
<
18 59 75 91
Mayor de un arreglo
void main()
{ int nele; //numero de elementos del arreglo
int *Vec = new int[10]; // Arreglo que almacenara los
datos
int max;
//Lectura y Validacin del Numero de elementos
Y el menor
elemento?....
Buscar un elemento
num
Vec
64
89
36
15
64
37
19
28
i
//Lectura y Validacin del Numero de elementos
//Lectura de los datos del arreglo
//Bsqueda de un dato
encontrado=0; //falso
for(int i = 0; i < nele; i++){
if(Vec[i] == num)
encontrado=1; //verdad
}
if (encontrado ==1) cout<<Se encontr el dato;
else cout<<No se encontr el dato;
Ejercicios
Ejercicio 1 Repetido
Elaborar un programa que busque un numero
dentro de un arreglo e imprima el numero
de veces que se encontr
Para ello el programa debe solicitar:
El Numero de elementos nele del Arreglo
Un Arreglo de enteros Vec
Un Numero num a buscar
Ejercicio 2 - Aprobados
Elaborar un programa que imprima las notas
aprobatorias que hay dentro de un arreglo
de Notas.
Para ello el programa debe solicitar:
El Numero de elementos nele del Arreglo
Un Arreglo de enteros Vnotas
Ejercicio 3 - Promedio
Elaborar un programa que devuelva el
promedio de notas de un alumno. Sabiendo
que la menor nota no debe ser considera
para el promedio
Para ello el programa debe solicitar:
El Numero de elementos nele del Arreglo
Un Arreglo de notas del alumno Vnotas
Ejercicio 4 - Frecuencia
Elaborar un programa que dado un Arreglo
de Notas de un saln de 40 alumnos
devuelva un Arreglo de Frecuencia de
Notas
Para ello el programa debe solicitar:
Un Arreglo de notas del saln VSalon
Ordenamiento
Ordenamiento
89
36
15
Ordenamiento
Vec
i
1
2
1
2
89
36
15
Ordenamiento
Dado un vector Vec[] de enteros y un numero
de elementos nele. El cdigo de ordenamiento
ascendente sera.
int aux; //un temporal que ayuda al intercambio
for(int i=0;i<nele-1;i++)
{
for(int j=i+1;j<nele;j++)
if (Vec[i]>Vec[j])
{ aux=Vec[i];
Vec[i]=Vec[j];
Vec[j]=aux;
}
}
Arreglos Paralelos
18
15
17
18 16
VPesos
89
46
55
64 65
Vedades
18
15
17
18 19
VPesos
89
46
55
64
76
_getch();
}
Lenguaje C que
Edades de 10
e imprima solo
son mayores de