Semana 10 - Arreglos - Unidimensionales
Semana 10 - Arreglos - Unidimensionales
Semana 10 - Arreglos - Unidimensionales
Arreglos
Unidimensionales
07/03/2024 2024-1 1
CC126: Introducción a los Algoritmos
Temario
Definición
Declaración e Inicialización
Elementos de un Arreglo
Lectura y Escritura de Arreglos
Búsqueda Secuencial
Ordenamiento
07/03/2024 2024-1 2
CC126: Introducción a los Algoritmos
Problema:
07/03/2024 2024-1 3
CC126: Introducción a los Algoritmos
Solución
07/03/2024 2024-1 4
CC126: Introducción a los Algoritmos
07/03/2024 2024-1 5
CC126: Introducción a los Algoritmos
Solución con arreglos
07/03/2024 2024-1 6
CC126: Introducción a los Algoritmos
07/03/2024 2024-1 7
CC126: Introducción a los Algoritmos
Definición de Arreglo
Un arreglo es una estructura de datos que permite
almacenar datos del mismo tipo (int, double, char, etc.).
07/03/2024 2024-1 8
CC126: Introducción a los Algoritmos
Nombrepuntero=new Tipodato[cantidad];
07/03/2024 2024-1 10
CC126: Introducción a los Algoritmos
07/03/2024 2024-1 11
CC126: Introducción a los Algoritmos
Declaración de un arreglo unidimensional
Dirección Índice del Arreglo de
en Memoria Arreglo 7 valores
Primer valor del índice
Valor en Vec[0]
AB001 0 20
AB003 1
La dirección donde se
AB005 inicia Vec es : AB001
2
AB007 3 Vec La dirección de &Vec[0]
es AB001
AB009 15
4
AB00A
Vec <-> &Vec[0]
5
Valor en Vec[4]
AB00C 6
07/03/2024 2024-1 12
Último valor del índice (N-1)
CC126: Introducción a los Algoritmos
07/03/2024 2024-1 13
CC126: Introducción a los Algoritmos
Y queremos realizar lo
siguiente:
float * ptrfloat;
2. Asignar dinámicamente
los espacio de memoria
donde se almacenarán los
10 datos float.
ptrfloat=new float[10];
07/03/2024 2024-1 14
CC126: Introducción a los Algoritmos
1. Definir un puntero a float llamado ptrfloat
float * ptrfloat;
07/03/2024 2024-1 15
CC126: Introducción a los Algoritmos
float * ptrfloat;
Mediante un algoritmo de
selección se busca un
espacio de memoria para
alojar al puntero
07/03/2024 2024-1 16
CC126: Introducción
Arreglos a los Algoritmos
como unteros
ptrfloat=new float[10];
07/03/2024 2024-1 17
CC126: Introducción a los Algoritmos
07/03/2024 2024-1 18
CC126: Introducción a los Algoritmos
Sea Vec un arreglo de 10 valores enteros
V
e 89 36 15 64 37 29 18 59 75 91
ci 0 1 2 3 4 5 6 7 8 9
07/03/2024 2024-1 19
CC126: Introducción a los Algoritmos
V
e 89 36 15 64 . . . . . .
N
ci 0 1 2 3 . . . . . -
1
De manera general:
i-ésimo elemento
Vec[i]
Para un valor de i entre 0 y N-1
07/03/2024 2024-1 20
CC126: Introducción a los Algoritmos
07/03/2024 2024-1 21
CC126: Introducción
Inicializar a los
un arreglo Algoritmos
unidimensional
2 19
5 10
6 16
07/03/2024 2024-1 22
CC126: Introducción a los Algoritmos
2 0
19 for(int i=0; i<7; i++)
3 20
0 {
4 0
11
Vec[i]=0;
0
10
}
5
6 0
16
07/03/2024 2024-1 23
CC126: Introducción a los Algoritmos
Ejemplo
Asignarle memoria dinámica a un puntero a un dato
del int de 100 posiciones.
int main()
{int *Arreglo;
Arreglo= new int[100];
for (int i=0;i<100;i++)
Arreglo[i]=i;
…..
}
07/03/2024 2024-1 24
CC126: Introducción a los Algoritmos
Si se le asignó dinámicamente la
memoria a un arreglo, cómo se
libera????
07/03/2024 2024-1 25
CC126: Introducción a los Algoritmos
delete [ ] Nombrepuntero;
07/03/2024 2024-1 26
CC126: Introducción a los Algoritmos
07/03/2024 2024-1 27
2024-1
int main()
{ int nele; //numero de elementos del arreglo
int *Vec = new int[10]; // Arreglo que almacenara las
edades
//Lectura y Validación del Numero de elementos
do{
cout<<“Ingrese el numero de alumnos: ”;
cin>>nele;
}while(nele<=0 || nele>10);
//Lectura de edades en el arreglo
for(int i=0;i<nele;i++) //el índice empieza en 0
{ cout<<“Ingrese Edad “ << i+1 <<“ : “;
cin>>Vec[i]; //ingreso de datos
}
_getch();
return
07/03/2024 0; 2024-1 28
CC126: Introducción a los Algoritmos
Mostrar datos de un Arreglo
Siguiendo con el ejemplo anterior, si deseamos mostrar las
edades almacenadas en el arreglo.
int main()
{ int nele; //numero de elementos del arreglo
int *Vec = new int[10]; // Arreglo que almacenara las edades
//Lectura y Validación del Numero de elementos
…
//Lectura de edades en el arreglo
…
//Mostrar las edades almacenadas en el arreglo
cout<<“El arreglo tiene los siguientes datos :\n”;
for(int i=0;i<nele;i++)
cout<<“Edad “ << i+1 << “ = “ << Vec[i] << “\n ”;
_getch();
return 0;
}
07/03/2024 2024-1 29
2024-1
int main()
{ int nele; //numero de elementos del arreglo
int *X = new int[10]; // Arreglo que almacenara los datos
//Lectura y Validación del Numero de elementos
…
//Generar aleatoriamente los datos del arreglo
srand(time_t(0));
for (int i=0;i< nele;i++)
X[i]=rand() ;
_getch();
return 0;
}
07/03/2024 2024-1 30
CC126: Introducción a los Algoritmos
Generar Aleatoriamente datos a un Arreglo
Opción 2:
Por ejemplo, si deseamos generar notas al azar en un arreglo
usando el método Random::Random().Next( , ). En Visual Studio
C++.
int main()
{ int nele; //numero de elementos del arreglo
int *Vec = new int[10]; // Arreglo que almacenara los datos
//Lectura y Validación del Numero de elementos
…
//Generar aleatoriamente los datos del arreglo
for(int i=0;i<nele;i++)
{ Vec[i]=Random::Random().Next(0,20);
Sleep(20);
}
_getch();
return 0;
} 07/03/2024 2024-1 31
2024-1
ci 0 1 2 3 4
07/03/2024 2024-1 33
CC126: Introducción a los Algoritmos
Mayor
elemento
V
e 29 18 59 75 91
07/03/2024 2024-1 34
CC126: Introducción a los Algoritmos
El mayor de un arreglo
int main()
{ int nele; //numero de elementos del arreglo
int *Vec = new int[10]; // Arreglo que almacenara los
datos
int max;
//Lectura y Validación del Numero de elementos
…
//Lectura de los datos del arreglo
…
//Hallar el mayor de los elementos
int max = Vec[0];
for(int i = 1; i< nele; i++)
if (Vec[i] > max)
max = Vec[i];
cout<<“El mayor elemento es : ” << max;
_getch();
return 0;
} Y el menor elemento?....
07/03/2024 2024-1 35
CC126: Introducción a los Algoritmos
num 6
4
Vec 89 36 15 64 37 19 28
0 1 2 3 4 5 6
Buscar un elemento
i
Ejercicios
07/03/2024 2024-1 37
2024-1
Ejercicio
CC126: Introducción
1 – Repetido a los Algoritmos
07/03/2024 2024-1 38
2024-1
Ejercicio 2 - Aprobados
07/03/2024 2024-1 39
2024-1
Ejercicio 3 - Promedio
07/03/2024 2024-1 40
2024-1
Ejercicio 4 - Frecuencia
07/03/2024 2024-1 41
2024-1
Ordenamiento
Los arreglos son estructuras de datos cuya
información no está, necesariamente, ordenada.
07/03/2024 2024-1 42
2024-1
Ordenamiento
• Sea Vec un arreglo de 3 datos enteros que tiene la
siguiente información
89 36 15
07/03/2024 2024-1 43
2024-1
Ordenamiento
V
e 89 36 15
i j c >
Vec
0 0 Vec[j
[i]
1 1 ]
2 2
07/03/2024 2024-1 44
CC126: Introducción a los Algoritmos
Ordenamiento
07/03/2024 2024-1 45