miércoles, 31 de agosto de 2011

Ahora con matrices dinamicas

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;
}

3 comentarios: