Data">
Semana 10 - Arreglos - Unidimensionales
Semana 10 - Arreglos - Unidimensionales
Semana 10 - Arreglos - Unidimensionales
Unidimensionales
Temario
Definición
Declaración e Inicialización
Elementos de un Arreglo
Lectura y Escritura de Arreglos
Búsqueda Secuencial
Ordenamiento
Problema:
int main()
{ int *VNotas; // Arreglo para almacenar las 5 notas
VNotas= new int[5];
//Ingreso de Datos
for(int i=0;i<5;i++)
{ cout<<“Ingrese Nota “ << i+1<< “: “;
cin>>VNotas[i];
}
Nombrepuntero=new Tipodato[cantidad];
Declaración y creación de un arreglo unidimensional63
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
float * ptrfloat;
2. Asignar dinámicamente
los espacio de memoria
donde se almacenarán los
10 datos float.
ptrfloat=new float[10];
Como funciona New
1. Definir un puntero a float llamado ptrfloat
float * ptrfloat;
ptrfloat=new float[10];
De manera general:
i-ésimo elemento
Vec[i]
Para un valor de i entre 0 y N-1
Inicializar un arreglo unidimensional
2 19
5 10
6 16
Inicializar un arreglo unidimensional
2 0
19 for(int i=0; i<7; i++)
3 0
20 {
4 0
11
Vec[i]=0;
0
10
}
5
6 0
16
Arreglos como punteros
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;
…..
}
Arreglos como punteros
Si se le asignó dinámicamente la
memoria a un arreglo, cómo se
libera????
Arreglos como punteros
delete [ ] Nombrepuntero;
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 0;
}
Mostrar datos de un 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;
}
Generar Aleatoriamente datos a un Arreglo
Opción 1:
Por ejemplo, si deseamos generar números al azar en un
arreglo usando el método srand y rand.
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;
}
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;
}
Sumar los elementos de un arreglo
int main()
{ int nele; //numero de elementos del arreglo
int *Vec = new int[10]; // Arreglo que almacenara los datos
int suma;
//Lectura y Validación del Numero de elementos
…
//Lectura de los datos del arreglo
…
//Suma de los elementos
suma=0;
for(int i = 0; i< nele; i++)
suma + = Vec[i];
Mayor
<
elemento
V
e 29 18 59 75 91
c
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?....
Buscar un elemento
num 6
4
Vec 89 36 15 64 37 19 28
0 1 2 3 4 5 6
89 36 15
V
e 89 36 15
i j c >
Vec
0 0 Vec[j
[i]
1 1 ]
2 2
Ordenamiento