Anda di halaman 1dari 5

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE ING. DE SISTEMAS E INFORMATICA

ARREGLOS DINÁMICOS

Para los arreglos de debe especificar su tamaño en el momento de escribir el


programa, pues se definen como estructuras estáticas.
Esto puede producir falta o desperdicio de memoria en nuestro programa, pues
debemos estimar el tamaño que necesitaremos y este no se puede cambiar.
Los arreglos dinámicos evitan este problema, pues podemos crear los arreglos con
el tamaño requerido en tiempo de ejecución.

CASO:

Crear un vector dinámico de enteros.


Guardar n notas en el vector dinámico.
Hallar el promedio de las notas almacenadas en el vector.
Mostrar las notas
Usar subprogramas.

#include <iostream>

using namespace std;


void llenarVD(int *vD, int t);
void mostrarVD(int *vD, int t);
float hallarProm(int *vD, int t);

int main( ){

int *p, alumnos;

cout<<"Cantidad de alumnos: "; cin>>alumnos;


//Asignar memoria
p=new int[alumnos];

llenarVD(p,alumnos);
mostrarVD(p,alumnos);
cout<<endl;

cout<<"Promedio: "<<hallarProm(p,alumnos);
cout<<endl;
//Liberar memoria

-1-
delete [ ]p;
system("pause");
}

void llenarVD(int *vD, int t){


int i;
/* Se puede usar como un arreglo común
for(i=0;i<t;i++)
cin>>vD[i];
*/
for(i=0;i<t;i++){
cout<<"Nota "<<i+1<<" ";
cin>>*(vD+i);
}
}

float hallarProm(int *vD, int t){


int tot, i;
tot=0;
for(i=0;i<t;i++)
tot+=*(vD+i);

return 1.0*tot/t;

void mostrarVD(int *vD, int t){


int i;
/* Se puede usar como un arreglo común
for(i=0;i<t;i++)
cout<<vD[i]<<" ";
*/
for(i=0;i<t;i++)
cout<<*(vD+i)<<" ";
}

-2-
CASO:

Crear un arreglo bidimensional dinámico.


Ingresar datos al arreglo
Hallar el promedio de los valores.
Mostrar los datos
Eliminar el arreglo.
Usar subprogramas.

#include <iostream>

using namespace std;

void llenarMD(int **mD, int f, int c);


void mostrarMD(int **mD, int f,int c);
float hallarProm(int **mD, int f, int c);
void eliminarMD(int **mD, int f);

int main( ){

int **m, fil, col,i;

cout<<"Cantidad de filas: "; cin>>fil;


cout<<"Cantidad de columnas: "; cin>>col;
//Asignar memoria
m=new int*[fil];
for(i=0;i<fil;i++)
m[i]=new int[col];

llenarMD(m,fil,col); cout<<endl;
mostrarMD(m,fil,col); cout<<endl;
cout<<"Promedio: "<<hallarProm(m,fil,col);

//Liberar memoria
eliminarMD(m,fil);
cout<<endl;
system("pause");
}

void llenarMD(int **mD, int f, int c){


int i, j;

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

-3-
for(j=0;j<c;j++){
cout<<"Nota "<<i+1<<","<<j+1<<" ";
cin>>*(*(mD+i)+j);
}
}

float hallarProm(int **mD, int f, int c){


int tot,i,j;
float p;
tot=0;

for(i=0;i<f;i++)
for(j=0;j<c;j++)
tot+=*(*(mD+i)+j);

return 1.0*tot/(f*c);

void mostrarMD(int **mD, int f, int c){


int i,j;

for(i=0;i<f;i++){
for(j=0;j<c;j++)
cout<<*(*(mD+i)+j)<<" ";
cout<<endl;
}
}

void eliminarMD(int **mD, int f){


int i;

for(i=0;i<f;i++)
delete[ ] mD[i];

delete[ ] mD;

-4-
EJERCICIOS

Usando subprogramas, programa principal, paso de parámetros y arreglos


dinámicos resuelva ambos ejercicios, primero empleando vector y luego
empleando matriz:
1. Hallar la posición del mayor valor.
2. Buscar un dato ingresado por usuario. Mostrar la posición en la que se
encuentra. Si el dato no está en el arreglo mostrar un mensaje.

-5-

Anda mungkin juga menyukai