[C#] Dubbele 2 dimensionale array

Pagina: 1
Acties:

  • JvdS
  • Registratie: December 2003
  • Laatst online: 23-11-2025
Stel, ik wil de volgende data in een tijdelijke variabele:
0 a 0,01
0 b 0,00
0 c 0,02
0 d 0,01

...

2 a 0,0
2 b 0,01
2 c 0,0

etc etc
Eerste rij met getallen zijn de asci waarden van het alfabet (0 tm 25 (+97)).
Tweede rij zijn de letters a t/m z en de derde rij is een waarde tussen de 1e 2 letters.

Nu is mijn vraag, hoe kan ik dit het beste opslaan?
Ik heb een gedeelte eerst in PHP gemaakt. Dat ging vrij simpel, omdat je met PHP een array met floats kunt sorteren en als keys gewoon karakters kunt gebruiken.

Ik heb het geprobeerd op te slaan in een 2 dimensionale float array, maar dan loop ik tegen het probleem aan met terugzoeken. Het moet namelijk makkelijk mogelijk zijn om te kijken welke waarde er voorkomt bij bv. letter C naar D.

Iemand suggesties?

  • Vedett.
  • Registratie: November 2005
  • Laatst online: 19-02 19:21
Je zou dit kunnen oplossen door een dictionary te gebruiken en aan de waarde van die dictionary nog een dictionary mee te geven. Maar dat wordt wel redelijk onoverzichtelijk en dus ook ingewikkelder.

als ik jou was zou ik een object creëren dat intern 3 array's of lists bij houd.

CustomList data = new CustomList();
data.add(0,'a',0,01);
.......


Het voordeel van de eerste oplossing is dat je een soort van boomachtige structuur hebt. Het tweede is simpeler en voldoet als je enkel met 'platte' data moet werken.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Het ligt er aan hoe je precies wil zoeken. Je kan bijvoorbeeld het volgende doen als je er alleen sequentieel door heen wilt lopen en je eerste rij altijd oplopend is.
C#:
1
List< KeyValuePair< char, float > > list;

Zo bevat elk element in je lijst een keyvalue pair met als key een char en als value een float.

Als je random door je data wilt springen kan je het ook bijvoorbeeld zo doen
C#:
1
Dictionary<int,Dictionary<char,float>> dicttionary;


als je altijd getallen van 0...25 hebt kun je ook een array van Dictionary's gebruiken
C#:
1
Dictionary<char,float>[] list = new Dictionary<char,float>[26];


Er zijn zo veel mogenlijkheden om het op te lossen. Het ligt er een beetje aan wat je precies wilt.

[ Voor 34% gewijzigd door Woy op 20-06-2006 18:34 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 14-02 12:54
Mij lijkt het een beter idee de data in een struct of class te stoppen, kan je 'm ook nog IComparable maken :)

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
riezebosch schreef op dinsdag 20 juni 2006 @ 19:52:
Mij lijkt het een beter idee de data in een struct of class te stoppen, kan je 'm ook nog IComparable maken :)
Dat kan natuurlijk ook. Het ligt er een beetje aan wat de ondelinge verhouding van de gegevens is wat het handigst is om te doen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”