Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: finger10 en 1 Septiembre 2011, 18:26 pm



Título: Duda con arreglo bidimensional dinámico en IDE DevC++
Publicado por: finger10 en 1 Septiembre 2011, 18:26 pm
Buen día amigos del foro, estamos trabajando actualmente en donde estudio con arreglos y matrices y la duda que tengo es como declarar arreglos bidimensionales dinámicos. Los arreglos los he podido implementar de la siguiente manera y me funciona bien:

Código:
#include<iostream>
using namespace std;

main()
{  
   int n;
   cout<<"Ingrese el numero de elementos del arreglo : ";
   cin>>n;
   cout<<endl;
    
   int *A=(int*)malloc(n*sizeof(int));
  
   for(int i=0;i<n;i++)
   {  
      cout<<"A["<<i<<"] = ";
      cin>>A[i];
   }
     
   cout<<endl;
   system("PAUSE");
}
 

Lo que me falta es poder implementar las matrices. Espero puedan absolver mi duda, muchas gracias XD


Título: Re: Duda con arreglo bidimensional dinámico en IDE DevC++
Publicado por: LearningSpanishProgrammer en 1 Septiembre 2011, 20:55 pm
Conozco dos soluciones, cual es mejor para tu problema no sei

La primera es mas rapida pero es muy arduo de utilizar, lo segundo necesita de dos lecturas en la memoria para cada 'read' or 'write' en el vector

Citar
   /**
    * Forma uno:
    **/
   int i = 0, j = 0;
   int lineas = 5, columnas = 5;
   int * matrix = (int *) malloc(sizeof(int) * lineas * columnas);
   /* matrix[j] */
   matrix[i * columnas + j] = 15;

   /*
    * Forma dos:
    */
   int ** m2 = (int **) malloc(sizeof(int *) * lineas);
   for (int i = 0; i < lineas; ++i)
      m2 = (int *) malloc(sizeof(int) * columnas);

   m2[j] = 15;


Título: Re: Duda con arreglo bidimensional dinámico en IDE DevC++
Publicado por: rir3760 en 1 Septiembre 2011, 23:35 pm
Para la forma dos que indica LearningSpanishProgrammer debes utilizar la forma usual:
Código
  1. m2[i][j] = 69; // Solo por poner un ejemplo
Donde el indice "i" debe estar en el rango 0 .. lineas-1 y el indice "j" en el rango 0 .. columnas-1.

Pero si estas utilizando C++ tal vez sea mejor utilizar la clase "vector" a menos que, por ejemplo, sea un ejercicio de clase. Deberías explicar en detalle exactamente la intencion del programa.

Un saludo


Título: Re: Duda con arreglo bidimensional dinámico en IDE DevC++
Publicado por: finger10 en 2 Septiembre 2011, 17:01 pm
Muchas gracias por sus respuestas, estamos empezando a programar, hemos visto arreglos unidimensionales y bidimensionales, como escuche que se podía hacer un mejor uso de la memoria, de alli mi interés por hacer mis códigos algo mejor.

Con respecto a la pregunta de rir3760 aún no estoy trabajando con clases.

Voy a ver como me va con los códigos, les vuelvo a agradecer es la primera vez que realizo una consulta en este foro y en verdad me han ayudado, saludos desde Perú