wyliczenie wielowymiarowej tablicy obiektów

Odpowiedz Nowy wątek
2006-08-25 19:31
0

Mam jakas taka tablice Obiekty[int x,int y]
obiekty te generuja sie dynamicnie podczas dzialania kodu
i nie znam koncowych indeksow tej tablicy (przy czym tablica nie jest symetryczna znaczy sie jak jest obiekt o indeksie [1,5] to wcale nie musi byc obiektu [2,5] natomiast moze byc obiekt z indeksem [10,6])
teraz chcialbym sobie to zapisywac do pliku
i nie zabardzo wiem jak to wyliczyc jesli z Xem indeksem nie bede mial wiekszego problemu (bo wiem gdzie odczytac ostatni [a leca one po kolei])to mam problem z Y
moze foreach tylko nie wiem jak dla tablic wielowymiarowych na foreach sie robi petle

Pozostało 580 znaków

2006-08-25 21:04
0

Kazda tablica ma wlasciwosc Length, nie musisz wiec niczego zapamietywac.

Np.

int [][] tab = new int [15][];
for (int i=0 ; i<15; i++)
    tab[i] = new int [i];
Console.WriteLine(tab[2].Length);

da w wyniku 2.

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-08-26 10:19
0

Dzieki
ale jeszcze jak sie odniesc do takiej struktury [,] bo na tej[][] jest ok
poza tym widze ze to leci od 0 do size u mnie size [32,32] ale indeksy zwykle nie przekraczaja 10

 Panel[,] DDD= new Panel[32,32];

                for (int j = 0; j < DDD.Length ;j++ )
                {
                    MessageBox.Show(Convert.ToString(DDD.Length) + "  " + Convert.ToString(j));

                }

ten przyklad wyswietli 1024 msg
a chcialbym zeby dostac tylko dla tych elementow ktore naprawde zostaly utworzone

this.DDD[i,j] = new Panel();
this.Controls.Add(this.DDD[i,j]);

Pozostało 580 znaków

2006-08-26 22:25
0

Przyznam sie, ze pierwszy raz widze taki sposob deklaracji tablicy. No, ale jesli tak jest latwiej, to wymiar tablicy mozesz zdobyc tak:

    String [,] DDD= new String[32,31];
    Console.WriteLine(DDD.GetLength(0)+"");
    Console.WriteLine(DDD.GetLength(1)+"");

I nie rozumiem co znaczy

ten przyklad wyswietli 1024 msg
a chcialbym zeby dostac tylko dla tych elementow ktore naprawde zostaly utworzone

'naprawde utworzone' ?

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-08-27 12:57
0

juz tlumacz na [przykladzie o co chodzi

Panel[,] DDD= new Panel[32,32]; 
//  Nowa tablica paneli w ktorej przewidziane jest miejsce na 1024 elementy
 
void buduj()
{
this.DDD[0,0] = new Panel();
this.Controls.Add(this.DDD[0,0]);
this.DDD[0,1] = new Panel();
this.Controls.Add(this.DDD[0,1]);
this.DDD[0,2] = new Panel();
this.Controls.Add(this.DDD[0,2]);
 
this.DDD[1,0] = new Panel();
this.Controls.Add(this.DDD[1,0]);
this.DDD[1,1] = new Panel();
this.Controls.Add(this.DDD[1,1]);
 
this.DDD[2,0] = new Panel();
this.Controls.Add(this.DDD[2,0]);
this.DDD[2,1] = new Panel();
this.Controls.Add(this.DDD[2,1]);
this.DDD[2,2] = new Panel();
this.Controls.Add(this.DDD[2,2]);
this.DDD[2,3] = new Panel();
this.Controls.Add(this.DDD[2,3]);
}

W sumie powstalo w tablicy 9 paneli (u mnie panele generuja sie dynamicznie i nie wiem wlasnie ile ich jest i jakie maja indeksy (znam tylko pierwszy indeks czyli w tym przykladzie bede wiedzial ze mam pierwsze indeksy od 0 do 2))

chodzi mi o to ze chcialbym z tych dziewięciu paneli odczytac sobie wlasciwosci

.Length czy .GetLength() zwracaja mi zadeklarowany rozmiar tablicy czyli 32,32 lub 1024
po co mam zczytywac wlasciwosc 1024 elementow kiedy mam tylko 9

myslalem ze znajde jakis sposob ktory mi powie ze ostatni indeks dla DDD[2,] to 3 a dla DDD[1,] to 1
i dla DDD[0,] to 2

Pozostało 580 znaków

2006-08-27 19:04
0

W takim wypadku bedziesz musial po prostu przeleciec tablice z uwagi na warunek != null. Tablica w c# to tablica referencji i nie zapamietuje, ktore referencje zostaly zmienione, a ktore nie. Ten sposob jednak jest malo optymalny - lepiej bedzie przy tworzeniu zapamietywac najwyzszy dodany indeks.

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-08-27 20:57
0

dzieki

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0