Está en la página 1de 13

UNIVERSIDAD NACIONAL MICAELA

BASTIDAS DE APURÍMAC
INGENIERÁ INFORMÁTICA Y SISTEMAS

ESTRUCTURA DE DATOS

ARREGLOS DINÁMICOS

Ing. Francisco Cari Incahuanaco


ARREGLO DINÁMICO

CONCEPTO:

Un array diná mico es aquel cuyo tamañ o se


define dentro de la ejecució n del programa, de
esta manera se crearan tantos espacios de
memoria como el usuario lo requiera y no
tendremos falta o derroche de memoria
Una dimensión
Int n=0;//siempre es aconsejable inicializar las
variables
cin>>n;
int *A=new int [ n] //donde N será espicificado por el
usuario

Sin embargo estos punteros deben ser eliminados


puesto que luego de la ejecució n aun mantiene esos
espacios de memoria reservados, para eliminar
usamos delete.
Arreglo dinámico sin tipo definido
#include<conio.h>
#include<iostream.h>
main()
{ int *p, n, i;
cout<<"ingrese el tamaño del arreglo: "; cin>>n;
p= new int;
for(i=0;i<n;i++)
{ cout<<"Valor para la posicion "<<"["<<i<<"]:";
cin>>p[i];
}
for(i=0;i<n;i++)
{ cout<<"["<<i<<"]:"<<*(p+i)<<endl;
}
return 0;
}
Arreglo dinámico con tipo definido
#include "iostream.h"
typedef int* ApuntInt;
int main()
{ ApuntInt p;
int n,i;
cout<<"cuantos desea ingresar";
cin>>n;
p=new int ;
for(i=0;i<=n;i++)
{ cout<<"["<<i<<"]: ";
cin>>p[i];
}
  for(i=0;i<=n;i++)
{ cout<<*(p+i)<<endl;
}
return 0;
}
Método de ordenamiento insertion sort con Array
Dinámico
 #include "iostream.h"
typedef int* ApuntInt;
int main()
{ ApuntInt p;
int n,i,k,aux;
cout<<"cuantos desea ingresar: ";
cin>>n;
p=new int ;
for(i=1;i<=n;i++)
{ cout<<"["<<i<<"]: ";
cin>>p[i];
}
for(i=2; i<=n;i++)
{ aux=p[i];
k=i-1;
Método de ordenamiento insertion sort con Array
Dinámico
while((k>=1)&&(aux<p[k]))
{ p[k+1]=p[k];
k=k-1;
}
p[k+1]=aux;
}
for(k=1;k<=n;k++)
cout<<p[k]<<endl;
return 0;
 }
Dos dimensiones
int n, m;
cin>>m;
cin>>n;
int **A=new int * [m];
for(int i=0; i<m; i++)
{ A[i]=new int[n];
}
Arreglo bidimensional
Aquí estamos creando un puntero a punteros, es decir
creamos un puntero a un vector de punteros, los
cuales apuntan a un espacio de memoria.
Arreglo bidimensional
Para emplear esta matriz lo hacemos igual que con
una matriz está tica es decir, lo que si es engorroso es
tener que liberar la memoria al emplear este tipo de
arreglos o matrices para este caso(2 dimensiones),
bien lo haremos de la siguiente manera:

for(int i=0; i<n; i++)


{ delete[] A[i];
}
delete A[i];
matriz dinámica
#include "iostream.h"
#include "conio.h"
typedef double* Mitipo;
int main()
{ int i,j,f,c;
Mitipo *M;
cout << "Introduce el numero de filas :"; cin >> f;
cout << "Introduce el numero de columnas :"; cin >> c;
// creamos la matriz !
M = new double* [f];
for (i = 0; i < f; i++)
M[i] = new double[c];
// Comprobamos
if (!M)
{ cout << "No se puede reservar el espacio" << endl;
return 1;
}
cout << "Introduciendo los elementos de la matriz" << endl;
for (i = 0; i < f; i++)
{ for (j = 0; j < c; j++)
{ cout <<" M["<<i<<"]["<<j<<"]:";
cin >> M[i][j];
}
}
cout << "Mostrando los elementos de la matriz" << endl;
for (i = 0; i < f; i++)
{ for (j = 0; j < c; j++)
cout << M[i][j] << " ";
cout << endl;
}
// delete [] M;
getch();
}
Ejercicios:
1. Desarrollar un programa para realizar la
transpuesta de una matriz diná mica.

2. Desarrollar un programa para realizar la


multiplicació n de dos matrices diná micas.

3. Desarrollar un programa para realizar la


determinante de una matriz diná mica.

También podría gustarte