Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-02-2008
BC++ BC++ is offline
Miembro
 
Registrado: ene 2008
Posts: 44
Poder: 0
BC++ Va por buen camino
Matriz dinamica

hola amigos del foro, nuevamente preguntando y agradeciendo su colaboracion, tema del dia.
matrices dinamicas

lo unico q estuve haciendo hasta el momento fueron array dinamicos
del tipo
const int SIZE=4;
int * A;
A=new int[SIZE];

delete []A;

me preguntaba como seria el codigo para trabajar con una matriz dinamica, las estaticas las manejo

int Matriz[][];

pero las dinamicas no tngo idea

si alguien me facilitaria un codigo pequeño, como definir una int matiz de 2 x2
dinamicamente, cargarla .y borrarla.

muchisimas gracias

BC++
Responder Con Cita
  #2  
Antiguo 05-02-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Por ejemplo:
Crear matriz de nombres (tipo char)

Código:
int N = 10; //Numero de nombres    
char** Nombres = new char*[N];
for(int n=0; n<N; n++)
    Nombres[n] = strnewdup(Nom[n]); //carga cada elemento...
Borrar matriz:
Código:
for(int n=0; n<NNombres; n++) delete Nombres[n]; // Libera de uno en uno...
delete Nombres;
Otra forma de borrar matriz:
Código:
delete [] Nombres; // Libera toda la matriz...
Saludos.
Responder Con Cita
  #3  
Antiguo 11-02-2008
M@R!N@ M@R!N@ is offline
Miembro
 
Registrado: feb 2008
Posts: 21
Poder: 0
M@R!N@ Va por buen camino
Bueno, no se que tan tarde llegué, pero va, tal vez a alguien le sirva ^_^

**Para declarar una matriz dinámica pues haces lo siguiente...

//suponiendo que sea de 2x2 como dices...

int **valor;

valor=new int *[2];
for(int i=0;i<2;i++)
{
valor[i]=new int[2];
}

y ya queda lista tu variable para usarla, ahora para liberarla podríamos decir que es lo mismo, pero al revés, jajaja...

for(int i=0;i<2;i++)
{
delete[] valor[i];
}
delete[] valor;

eso es todo, espero que sea de ayuda...
Responder Con Cita
  #4  
Antiguo 11-02-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Que tal,
Yo en lugar de usar estos metodos de creacion de "matrices" dinamicas, usaría una lista de objetos TList que a asu vez puede una lista de listas, asi no importa cuanto crezca la matriz, ni la dimension, solo basta con ObjLista->Add(x) y listo.

Saludos
Responder Con Cita
  #5  
Antiguo 20-02-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Ya... Eso es seguramente lo más práctico, pero no es C++ sino un buen uso de las VCL.

Las matrices dinámicas, y en general el uso de punteros es programación de bajo nivel. Esto da gran potencia y velocidad al código, a cambio de tener que estar pendiente del "control" y asignación de memoria.

Según la tarea a realizar, puede ser mas interesante una u otra forma de afrontar el problema.


Saludos.

Última edición por escafandra fecha: 20-02-2008 a las 18:10:33.
Responder Con Cita
  #6  
Antiguo 20-02-2008
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
Hola

Hace mucho hice una dll a la cual le pasaba una matriz dinámica por referencia

Esta es una parte del código de la dll

Código Delphi [-]
#include 
#include 
#include 
#include "util1.h"

void __stdcall tred2( double *a_, int n, int np, double *d_, double *e_);

BOOL WINAPI DllMain( HINSTANCE hinstDLL ,DWORD dwReason ,LPVOID lpReserved )
{
   // Perform actions based on the reason for calling.
   switch( dwReason )
   {
   case DLL_PROCESS_ATTACH:
       // Initialize once for each new process.
       // Return FALSE to fail DLL load.
       break;

   case DLL_THREAD_ATTACH:
       // Do thread-specific initialization.
       break;

   case DLL_THREAD_DETACH:
       // Do thread-specific cleanup.
       break;

   case DLL_PROCESS_DETACH:
       // Perform any necessary cleanup.
       break;
   }
       return TRUE;
}

void __stdcall tred2( double *a_, int n, int np, double *d_, double *e_)
{
/* Local variables */
  double *a=(double *)a_ /* [np*np] elements  */;
  double *d=(double *)d_ /* [np] elements  */;
  double *e=(double *)e_ /* [np] elements  */;
  static double f,g,h,hh,scale;
  static int i,j,k,l;


#define aind(i1,i2) (((i2)-1)*np+(i1)-1)

        if (n > 1)
        {
          i=n;
          while(((i<2) && (i>n))||((i>=2) && (i<=n)))
          {
            l=i-1;
            h=0.0;
            scale=0.0;
            if (l > 1)
            {
             for (k=1;k<=l;k++) 
              {
                scale=scale+fabs(a[aind(i,k)]);
              }
lo que estaba tratando de hacer era calcular autovectores,e tc

Salu2
Responder Con Cita
  #7  
Antiguo 21-02-2008
BC++ BC++ is offline
Miembro
 
Registrado: ene 2008
Posts: 44
Poder: 0
BC++ Va por buen camino
gracias!

muchas gracias a todos =)
Responder Con Cita
  #8  
Antiguo 24-10-2011
omarodalis omarodalis is offline
No confirmado
NULL
 
Registrado: oct 2011
Posts: 15
Poder: 0
omarodalis Va por buen camino
Smile Yo hice esto

mm.. bueno yo necesitaba una matriz igual que fuera dinamica la asignacion de su tamaño... bueno... esto fué lo que hice esto ........

double* datosObtenidos = new double[ListBox1->GetCount()];
for (int i = 0; i <sizeof(datosObtenidos); i++)
{
datosObtenidos[i] = ListBox1->Items->Strings[i].ToDouble();
}
Variant Excel,Libro,Hoja,Celda;
Excel = CreateOleObject("Excel.Application");



y funciona... bueno... es todo saludossss
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
determinante de una matriz baby Varios 1 31-05-2007 14:22:28
matriz de controles santiago14 Varios 14 01-05-2007 06:00:58
matriz de 4ª dimension? (MAJ) La Taberna 7 30-04-2007 21:26:53
matriz dinámica de string triniti OOP 4 20-07-2004 13:31:52
Guardar matriz? danytorres Varios 1 27-10-2003 04:10:23


La franja horaria es GMT +2. Ahora son las 04:48:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi