como vimos en el programa de arriba crear vectores de manera dinamica no es tan complicado si aprendemos a manejar constructores y destructores , pero con una matriz tenemos unos pasos de mas como veran en este programa que voy a pegar
* esta es una matriz dinamica fabricada
ppor medio de apuntadores*/
#include <iostream.h>
#include <conio.h>
class matriz//declaro la clase
{
int **apu;//Defino un doble apuntador ya que el primero llevara filas y el segundo columnas
int i,j,filas,columnas;//variables necesairas
public:
matriz();//constructor
~matriz();//destructor
void leer(void);//funcion
void mostrar(void);//funcion
};
matriz::matriz()
{
// al crear la matriz nesesariamente nesecitamos antes definir el numero de filas y columnas par que se realize bien el proceso
filas=columnas=j=i=0;//inicializando las variables
cout<<"Digite el numero de filas "<<endl;
cin>>filas;//el numero de filas
cout<<"Digite el numero de columnas "<<endl;
cin>>columnas;//numero de columnas
//proceso para crear una matriz dinamica
apu=new int*[filas];//aqui definimos el primer apuntador como que tendra las filas
for(int j=0;j<filas;j++)//ahora hacemos que el doble aputnador se asocie con las culumnas
{
apu[j]=new int [columnas];//aqui difinimos el segundo apuntador , las filas de la matriz
}
}
matriz::~matriz()//destructor
{
//al igual que el constructor en el quefinimos el primer apuntador para que se defina con las columnas aqui ahcemos lo mismo
for(j=0;j<filas;j++)
{
delete apu[j];//primero se destruyen el numero de columnas
delete apu;//una ves destruidor el numero de columnas se destruye el vector que a quedado ( el primer apuntador)
}
}
void matriz::leer(void)
{
//se ingresa los datos de la matriz
for(i=0;i<filas;i++)
{
for(int j=0;j<columnas;j++)
{
cout<<"Digite el dato "<<"["<<i+1<<"]["<<j+1<<"]"<<endl;
//como en c++ se tiene en cuenta desde la posicion cero entonces agregamos un mas a cada vector para que deverdad se vea el vector
cin>>apu[i][j];
}
cout<<endl;
}
}
void matriz::mostrar(void)
{
// se muestran los datos de la matriz
cout<<"Los datos de la matriz son"<<endl;
for( int i=0;i<filas;i++)
{
for( int j=0;j<columnas;j++)
{
cout<<apu[i][j]<<" ";
}
cout<<endl;//este cout es para se imprima en forma de matriz
}
}
int main()
{
matriz objeto;
objeto.leer();
objeto.mostrar();
getch();
return 0;
}
miércoles, 31 de agosto de 2011
martes, 30 de agosto de 2011
Crear un vector dinamico
muchas veces en general al crear vectores o matrices tenemos problemas con la difinicon ya que al manejarlas como variables estaticas no se puede satisfacer todas las nesecidades que en algun programa se nos puedan presentar asi que para eso estan las variables de tipo dinamicas las cuales cambian durante el tiempo de ejecucion del programa , para esto usamos apuntadores las cuales son variables que almacenan direcciones de variables mas no datos.
ejemplo
/*este es un pequeño programa que explica ocmo crear un vector dianmico
atraves de new y delete
*/
#include <iostream.h>
#include <conio.h>
class vector//creamos la clase
{
int *a; //un apuntador sencillo por ser un vector , recordemos que un apuntador se difine del mismo de las variables a las cuales va ha apuntar
int b,c;//definimos variables
public:
//nesesariamente los destructores y constructores deben llevar el nombre de clase y el destructor debe llevar el simbolo de la negacion
vector();//constructor para inicializar variables
~vector();//destructor para anularlas , siempre que se usen constructores se nesecita un destructor
void leer(void);//funcion para ingresar datos
void mostrar(void);//funcion para mostrar datos
};
vector::vector()//definicion del constructor
{
b=c=0; //se inicializan los valores, es decir darles el valor inicial de 0 que luego cambia en la ejcucion de este
cout<<"digite el tamaño"<<endl;
cin>>c;//se ingresa el tamaño del vector
a=new int [c];
//aqui construimos el vector al asignarselo al puntero con la intruccion new que significa que le dara un valor dinamico a el vector
//siempre se debe usar este metodo con vectores
}
vector::~vector()//definicion del destructor
{
delete a;//delete lo que hace es terminar con el uso de esta
}
void vector::leer(void)//definicion de ingresar datos
{
//vemos las intrucciones tipicas para ingresar los datos de un vector
for(int i=0;i<c;i++)
{
cout<<"digite el dato "<<i<<endl;
cin>>a[i];
}
}
void vector::mostrar(void)
{
//vemos las intrucciones tipicas para mostrar un vector
cout<<"los datos son "<<endl;
for(int i=0;i<c;i++)
{
cout<<" "<<a[i];
}
}
int main()
{
/*
Talves una pregunta que tengas es porque el constructor y destructor no se llaman
en el main , pero aunque estas son funciones no nesecitan llamarse ni tampoco un orden de difinicon
ya que c/c++ ya sabe en que momento ejecutarla*/
vector objeto;//Esta es la creacion del objeto
//invocacion de las funciones
objeto.leer();
objeto.mostrar();
getch();
return 0;
}
ejemplo
/*este es un pequeño programa que explica ocmo crear un vector dianmico
atraves de new y delete
*/
#include <iostream.h>
#include <conio.h>
class vector//creamos la clase
{
int *a; //un apuntador sencillo por ser un vector , recordemos que un apuntador se difine del mismo de las variables a las cuales va ha apuntar
int b,c;//definimos variables
public:
//nesesariamente los destructores y constructores deben llevar el nombre de clase y el destructor debe llevar el simbolo de la negacion
vector();//constructor para inicializar variables
~vector();//destructor para anularlas , siempre que se usen constructores se nesecita un destructor
void leer(void);//funcion para ingresar datos
void mostrar(void);//funcion para mostrar datos
};
vector::vector()//definicion del constructor
{
b=c=0; //se inicializan los valores, es decir darles el valor inicial de 0 que luego cambia en la ejcucion de este
cout<<"digite el tamaño"<<endl;
cin>>c;//se ingresa el tamaño del vector
a=new int [c];
//aqui construimos el vector al asignarselo al puntero con la intruccion new que significa que le dara un valor dinamico a el vector
//siempre se debe usar este metodo con vectores
}
vector::~vector()//definicion del destructor
{
delete a;//delete lo que hace es terminar con el uso de esta
}
void vector::leer(void)//definicion de ingresar datos
{
//vemos las intrucciones tipicas para ingresar los datos de un vector
for(int i=0;i<c;i++)
{
cout<<"digite el dato "<<i<<endl;
cin>>a[i];
}
}
void vector::mostrar(void)
{
//vemos las intrucciones tipicas para mostrar un vector
cout<<"los datos son "<<endl;
for(int i=0;i<c;i++)
{
cout<<" "<<a[i];
}
}
int main()
{
/*
Talves una pregunta que tengas es porque el constructor y destructor no se llaman
en el main , pero aunque estas son funciones no nesecitan llamarse ni tampoco un orden de difinicon
ya que c/c++ ya sabe en que momento ejecutarla*/
vector objeto;//Esta es la creacion del objeto
//invocacion de las funciones
objeto.leer();
objeto.mostrar();
getch();
return 0;
}
Suscribirse a:
Comentarios (Atom)