Problemas con estructuras de datos en C#

Iniciado por dark_headhunter, 5 Junio 2011, 01:06 AM

0 Miembros y 1 Visitante están viendo este tema.

dark_headhunter

Hola amigos, en el siguiente código, parece que cometo una fallo:
Código (csharp) [Seleccionar]
   class estructura
   {
       public struct punto
       {
           int x;// redundante
           int y;
           bool marcado;
           Color color;
       }

       Form1 formPrincipal;
       imagen img;
       public estructura(Form1 form)
       {
           img = new imagen(img);//¿?
           formPrincipal = form;
           Matriz = new punto[(formPrincipal.Cuadro.Image.Width), (formPrincipal.Cuadro.Image.Height)];
       }

       public punto[,] Matriz;
       

       public void cargar(Bitmap img)
       {
           Color clr;
           int i, j;
           bool hecho = false;
           for (i = 0; i < img.Width; i++)
           {
               for (j = 0; j < img.Height; j++)
               {
                   clr = img.GetPixel(i, j);
                   Matriz[i][j].color = clr;
               }
           }
       }
       
   }


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.
La informacion es nuestra arma, el anonimato nuestra armadura

seba123neo

primero explica que se supone que queres hacer y despues si te tira algun error ese codigo ?
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

dark_headhunter

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.
La informacion es nuestra arma, el anonimato nuestra armadura

neoncyber

Te recomendaria que utilices generics, mas adelante puede ser necesario utilizar otro tipo de estructura, y tendrias que modificar varias lineas.

Saludos
Código (python) [Seleccionar]

#!/usr/bin/python
print "Visit:"
print "http:\\donkeysharp.blogspot.com"

dark_headhunter

Cita de: 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

Por favor, expláyese, me interesa.
La informacion es nuestra arma, el anonimato nuestra armadura

neoncyber

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 (csharp) [Seleccionar]

class Matriz<T>
{
   private T[,] datos;

   public Matriz<T>(int rows, int columns)
   {
       datos = new T[rows, columns];
   }
   public void SetElement(int row, int column, T item)
   {
        datos[row,column] = item;
   }
   // Lo metodos que necesites
}


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 (csharp) [Seleccionar]

void AlgunMetodo()
{
    Punto p;
    p.x = 1;
    p.y = 2;
    // Defines una matriz que guarde puntos
    Matriz<Punto> mp = new Matriz<Punto>(2,2);
    mp.SetElement(0,0, p);

    // Puedes definir otra matriz que guarde bitmaps por ejemplo
    Matriz<Bitmap> mbm = new Matriz<Bitmap>(2,2);
    ....
}



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
Código (python) [Seleccionar]

#!/usr/bin/python
print "Visit:"
print "http:\\donkeysharp.blogspot.com"