Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: dark_headhunter en 5 Junio 2011, 01:06 am



Título: Problemas con estructuras de datos en C#
Publicado por: dark_headhunter en 5 Junio 2011, 01:06 am
Hola amigos, en el siguiente código, parece que cometo una fallo:
Código
  1.    class estructura
  2.    {
  3.        public struct punto
  4.        {
  5.            int x;// redundante
  6.            int y;
  7.            bool marcado;
  8.            Color color;
  9.        }
  10.  
  11.        Form1 formPrincipal;
  12.        imagen img;
  13.        public estructura(Form1 form)
  14.        {
  15.            img = new imagen(img);//¿?
  16.            formPrincipal = form;
  17.            Matriz = new punto[(formPrincipal.Cuadro.Image.Width), (formPrincipal.Cuadro.Image.Height)];
  18.        }
  19.  
  20.        public punto[,] Matriz;
  21.  
  22.  
  23.        public void cargar(Bitmap img)
  24.        {
  25.            Color clr;
  26.            int i, j;
  27.            bool hecho = false;
  28.            for (i = 0; i < img.Width; i++)
  29.            {
  30.                for (j = 0; j < img.Height; j++)
  31.                {
  32.                    clr = img.GetPixel(i, j);
  33.                    Matriz[i][j].color = clr;
  34.                }
  35.            }
  36.        }
  37.  
  38.    }

No sé si es en la definición, en el acceso a la matriz, o en el acceso a los registros.

Gracias y un saludo.


Título: Re: Problemas con estructuras de datos en C#
Publicado por: seba123neo en 5 Junio 2011, 02:10 am
primero explica que se supone que queres hacer y despues si te tira algun error ese codigo ?


Título: Re: Problemas con estructuras de datos en C#
Publicado por: dark_headhunter en 5 Junio 2011, 05:44 am
Quiero hacer una estructura con la que aplicar algoritmos a fotos, para ello quiero hacer una matriz en la cual cada punto sea un struct como el que defino.


Título: Re: Problemas con estructuras de datos en C#
Publicado por: neoncyber en 5 Junio 2011, 05:51 am
Te recomendaria que utilices generics, mas adelante puede ser necesario utilizar otro tipo de estructura, y tendrias que modificar varias lineas.

Saludos


Título: Re: Problemas con estructuras de datos en C#
Publicado por: dark_headhunter en 5 Junio 2011, 06:34 am
Te recomendaria que utilices generics, mas adelante puede ser necesario utilizar otro tipo de estructura, y tendrias que modificar varias lineas.

Saludos

Por favor, expláyese, me interesa.


Título: Re: Problemas con estructuras de datos en C#
Publicado por: neoncyber en 5 Junio 2011, 17:20 pm
Las estructuras genericas quiere decir que pueden almacenar cualquier tipo de dato, las colecciones genericas en el BCL estan en el namespace System.Collections.Generics.

Ahora en caso de que ninguna de estas colecciones te sean de utilidad, puedes implementar tus propias colecciones genericas.

En tu caso para la matriz podrias tener algo similar a esto:

Código
  1. class Matriz<T>
  2. {
  3.   private T[,] datos;
  4.  
  5.   public Matriz<T>(int rows, int columns)
  6.   {
  7.       datos = new T[rows, columns];
  8.   }
  9.   public void SetElement(int row, int column, T item)
  10.   {
  11.        datos[row,column] = item;
  12.   }
  13.   // Lo metodos que necesites
  14. }
  15.  

El anterior code sirve para la definicion de una clase generica, ahora te explico que significa. Pues bien, donde dice "T", se reemplazara por cualquier tipo que voz especifiques a la hora de instanciar objetos de esta clase, ahora para instanciar objetos es lo siguiente, y aqui te muestro la utilidad, por ejemplo voz necesitas que tu matriz sea de estructuras punto, pero en algun momento podrias decidir que no sean estructuras punto, sino bitmap por ejemplo:
Código
  1. void AlgunMetodo()
  2. {
  3.    Punto p;
  4.    p.x = 1;
  5.    p.y = 2;
  6.    // Defines una matriz que guarde puntos
  7.    Matriz<Punto> mp = new Matriz<Punto>(2,2);
  8.    mp.SetElement(0,0, p);
  9.  
  10.    // Puedes definir otra matriz que guarde bitmaps por ejemplo
  11.    Matriz<Bitmap> mbm = new Matriz<Bitmap>(2,2);
  12.    ....
  13. }
  14.  


De todos modos si necesitas saber mas sobre generics, puedes ver la documentacion oficial de MSDN:

http://msdn.microsoft.com/en-us/library/512aeb7t.aspx

Saludos