tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
  1. #1
    Benutzerbild von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin kuhlmaehn sorgt für eine eindrucksvolle Atmosphäre
    Registriert seit
    May 2003
    Beiträge
    592
    Hi!
    Sorry für den blöden Titel ;(

    Ich habe mehere geometrische Figuren, welche aus unterschiedlich vielen Punkten bestehen.
    Es sind auch immer unterschiedliche viele Figuren.
    Diese Daten lese ich aus einer Textdatei aus und will sie dann in ein Array schreiben.
    Die Koordinatenpunkte kann ich ja wunderbar in ein Array schreiben. Da ich ja mehere Figuren habe will ich auch für jede ein eigenes Array haben, nur weiss ich ja vorher nicht wieviele.
    Also brauch ich irgendetwas wo ich, wenn die Textdatei geladen wird, die Daten reinschreibe.
    Ich stelle mir das so vor:
    Daten(1,1) gibt die erste Koordinate der ersten Figur aus. Daten (1,2) die 2. Koordinate usw.
    Das Problem ist nur, dass ja jede Figur unterschiedlich viele Koordinaten hat. also würde zB das erste nur bis (1,5) gehen, das 2. jedoch bis (2,12).
    Also, ich weiss vorher nicht wie viele Figuren und auch nicht wie viele Koordinaten jede der Figuren hat. Wie kann ich das am besten speichern?
    Danke!

  2. #2
    Benutzerbild von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.729
    Hallo.

    Zum Problem mit der Arraygröße: Nimm eine dynamische Liste. ArrayList (System.Collections.ArrayList) oder besser eine generische List (System.Collections.Generic.List).

    Wenn du jetzt eine Liste von Listen von Punkten haben willst, könnte das so aussehen:

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    using System.Collections.Generic;
    using System.Drawing;
    ...
    List<List<Point>> figures = new List<List<Point>>();
     
    List<Point> fig1 = new List<Point>();
    fig1.Add(new Point(10, 10));
    fig1.Add(new Point(20, 20));
     
    figures.Add(fig1);

    Statt der Liste mit Punkten könntest auch einen GraphicsPath benutzen ;D - Oder eine eigene Klasse .. je nachdem was du brauchst..

    lg,..
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet.
    Klickt oben auf Chat, oder verbindet zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // BlogEngine.net Extensions

  3. #3
    Benutzerbild von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin kuhlmaehn sorgt für eine eindrucksvolle Atmosphäre
    Registriert seit
    May 2003
    Beiträge
    592
    Danke
    Mh, und wie kann ich dann dadrauf zugreifen? Nicht so schön übersichtlich wie wenn es ein Array wäre oder?
    Ach Mensch das sind alles so viele neue Sachen das ich gar nicht vorankomme ;(
    Vielleicht guck ich mir wirklich mal ganz genau den GraphicsPath an bevor ich irgendwas unnötiges einbaue
    Bei deinem Code versteh ich wieder mal gar nichts.. seit wann gibt es denn bei C# < und > !?
    Achjah.. und ich dachte immer ich kann mir jede Programmiersprache schnell draufschaffen -.-

  4. #4
    Benutzerbild von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.729
    Zugriff erfolgt wie bei einem Array..

    Code csharp:
    1
    2
    
    List<Point> afigure = figures[0];
    Point p1 = afigure[0];

    Zu Generics hab ich dir gestern schon einen Link gegeben. Das Feature gibts, ich glaub ich habs auch schon erwähnt, seit C# 2.0. (.net 2.0, VisualStudio 2005 .. )
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet.
    Klickt oben auf Chat, oder verbindet zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // BlogEngine.net Extensions

  5. #5
    Benutzerbild von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin kuhlmaehn sorgt für eine eindrucksvolle Atmosphäre
    Registriert seit
    May 2003
    Beiträge
    592
    Mh und wie kann ich dann unterscheiden um welche Figur es sich gerade handelt?
    Es soll auch möglich sein zB zwei Figuren zu einer zu Verbinden indem ich bei jeder Figur eine Linie angebe und die Figuren dann an diesen Linien zusammengefügt werden (zB das aus zwei Quadraten ein Rechteck wird wird, oder aus zwei Dreicken ein Trapez oder eine Raute)
    Dafür muss ich ja dann auch die Koordinaten neu anordnen oder? Und danach sollten die neuen Koordinaten bzw. die neue Figur dann auch anstelle der beiden in dem Array oder der Liste stehen.
    Bei der Liste bzw. deinem Code ist mir irgendwie nicht klar wie ich das anstellen soll.
    Ein Array finde ich irgendwie viel anschaulicher.
    Ist die Liste oder der Grafikpath dafür wirklich geeignet? Ich hoffe nicht dann muss ich da nicht durchsteigen X(

  6. #6
    Benutzerbild von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.729
    Eine Liste ist nichts anderes als ein dynamisches Array.. da kannst ohne Probleme neue Punkte einfügen, ohne das du Stress mit der Arraygröße bekommst.

    Beschäftige dich mal genauer mit den ganzen Sachen die bisher erwähnt wurden, und probier manche Sachen einfach mal aus..
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet.
    Klickt oben auf Chat, oder verbindet zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // BlogEngine.net Extensions

  7. #7
    Benutzerbild von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin kuhlmaehn sorgt für eine eindrucksvolle Atmosphäre
    Registriert seit
    May 2003
    Beiträge
    592
    Mh ok das klingt gut, dann muss ich mich da wohl oder übel mal vernünftig reinarbeiten =)
    Vielen Dank bis hier

  8. #8
    Benutzerbild von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin kuhlmaehn sorgt für eine eindrucksvolle Atmosphäre
    Registriert seit
    May 2003
    Beiträge
    592
    So, nach etlichem Lesen und Probieren später bin ich mir eigentlich sicher, dass das was ich gerne hätte nicht geht oder ich es (mal wieder) nicht verstanden habe.

    Die Liste ist erstmal super für mein Vorhaben. Mein Problem ist nur nachwievor, dass ich gerne für jede Figur eine eigene Liste hätte, aber vorm Programmstart nicht weiss wie viele.
    Ich dachte jetzt an sowas:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    List<int>[] bla = new List<int>()[2];
     
                bla[0].Add(1);
                bla[0].Add(2);
                bla[0].Add(3);
     
                bla[1].Add(1);
                bla[1].Add(2);
                bla[1].Add(3);
    Was natürlich nicht geklappt hat

    Gibt es denn irgendeine Möglichkeit das so zu machen?
    Danke!

    [Edit]
    Ok ich löse das jetzt mit einer temporären Liste wo ich was zwischenspeichere. Das müsste auch gehen.
    Es würde mich aber immernoch interessieren ob das von oben funktioniert
    Geändert von kuhlmaehn (11.07.07 um 11:15 Uhr)

  9. #9
    Benutzerbild von Razorhawk
    Razorhawk Razorhawk ist offline Webdesigner und MSP Razorhawk hat eine blütenweiße Weste
    Registriert seit
    Aug 2002
    Ort
    Berlin
    Beiträge
    1.363
    Eine Möglichkeit wäre folgende


    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
     
    ArrayList arrList = new ArrayList();
     
    ArrayList.Add(new List<int>());
    ArrayList.Add(new List<int>());
     
    ArrayList[0]).Add(1);
    ArrayList[0]).Add(2);
    ArrayList[0]).Add(3);
     
    ArrayList[1].Add(1);
    ArrayList[1].Add(2);
    ArrayList[1].Add(3);
     
    /* Inhalt des Arrays:
     
    1 2 3 
    1 2 3
     
     
    Der Zugriff geht dann wie folgt
    */
     
    ((List<int>)ArrayList[0])[0] = 11;
    ((List<int>)ArrayList[1])[0] = 111;
     
    /* Inhalt des Arrays:
     
    11 2 3
    111 2 3
    */

Ähnliche Themen

  1. ganzen array ohne Kommata
    Von DocHentai im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 23.01.07, 15:50
  2. Array ohne Schleife kopieren
    Von Lifmor im Forum Visual Basic 6.0
    Antworten: 5
    Letzter Beitrag: 06.06.05, 22:44
  3. Array ohne Grössenangabe
    Von cibal_gina im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 01.06.05, 18:17
  4. Antworten: 8
    Letzter Beitrag: 01.08.04, 11:23
  5. C#: Array ohne definierte länge:
    Von MSuter im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 09.09.02, 13:21

Lesezeichen

Lesezeichen