elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda con arreglo bidimensional dinámico en IDE DevC++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con arreglo bidimensional dinámico en IDE DevC++  (Leído 8,015 veces)
finger10

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Duda con arreglo bidimensional dinámico en IDE DevC++
« 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


« Última modificación: 1 Septiembre 2011, 18:40 pm por finger10 » En línea

LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: Duda con arreglo bidimensional dinámico en IDE DevC++
« Respuesta #1 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;


« Última modificación: 1 Septiembre 2011, 21:01 pm por LearningSpanishProgrammer » En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda con arreglo bidimensional dinámico en IDE DevC++
« Respuesta #2 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
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
finger10

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Re: Duda con arreglo bidimensional dinámico en IDE DevC++
« Respuesta #3 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ú
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines