Laden...

Liste zweidimensionaler Punkte in einer ArrayList

Erstellt von cmfrank vor 5 Jahren Letzter Beitrag vor 4 Jahren 1.688 Views
Thema geschlossen
C
cmfrank Themenstarter:in
1 Beiträge seit 2019
vor 5 Jahren
Liste zweidimensionaler Punkte in einer ArrayList

Hallo zusammen,

ich bin noch relativ unvertraut mit der Programmierung in C# und stehe nun zum üben vor der Aufgabe, eine Liste zweidimensionaler Punkte in einer ArrayList zu sortieren.
Ein Punkt P1 ist dabei "kleiner" als ein zweiter Punkt P2, falls P1 . y < P2 . y. Falls P1 . y == P2. y, werden die x-Koordinaten vergleichen.
Ich habe das Programm dazu schon geschrieben. Es soll zehn zufällig erzeugte Punkte sortieren und diese jeweils vor und nach der Sortierung auf der Konsole ausgeben. Leider funktioniert das Programm noch nicht ganz. Kann mir jemand sagen, wo ich Fehler gemacht habe? 🙂


using System;
using System.Collections;

public class Point {
     public int x;
     public int y;

     public Point(int x, int y) {
          x = x;
          y = y;
     }
     public string ToString() {
          return x + "," + y;
            }
}
public class ArrayListTest {

     public static void Main(string [] args) {

        ArrayList AL = new ArrayList();
        Random R = new Random();
        for (int i = 0; i < 10; i++) {
            Point p = new Point(R.Next(50), R.Next(50));
            AL.Add(p);
        }
        PrintValues(AL);
        AL.Sort();
        PrintValues(AL);
   }

public static void PrintValues( IEnumerable myList ) {
           foreach ( Object obj in myList )
              Console.WriteLine( "{0}", obj );
           Console.WriteLine();
     }
}

T
461 Beiträge seit 2013
vor 5 Jahren

Hallo,

was du hier versuchst ist, Klassenobjekte zu sortieren und nicht die Klassenobjekte durch seine Klassen-properties.

Das ArrayList.Sort nimmt dir diese Arbeit nicht ab!

Es wird dir nicht viel übrig bleiben als selbst zu sortieren.
Jetzt stellt sich die Frage, wie deine Aufgabe deklariert ist? Gibt es da Vorgaben?

Grüße

Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄

3.003 Beiträge seit 2006
vor 5 Jahren

Bitte, bitte ArrayList nicht mehr verwenden. Die Klasse ist eigentlich seit der Einführung von generic collections vor 13 Jahren veraltet.

Kurzes Tutorial, das den Umstieg skizziert

Wenn du mit Hilfe von generics sichergestellt hast, dass alle Objekte in deiner Sammlung vom selben Typ sind, dann kannst du sie auch viel einfacher sortieren, indem du nur noch angibst, wie zwei Elemente dieses Typs zu vergleichen sind. Für solche Vergleiche gibt es auch schon eine Vorgabe: Comparison<T>. Damit benutzt du dann die Sort(Comparison<T>)-Methode deiner generischen Liste.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

G
1 Beiträge seit 2019
vor 4 Jahren

ich habe die gleiche Aufgabe wie cmfrank gestellt bekommen. Im von cmfrank C#-Code sind laut der Aufgabenstellung drei Fehler enthalten.

Kann mir jemand weiterhelfen wo die drei Fehler sind, um es zum laufen zu bringen?

16.807 Beiträge seit 2008
vor 4 Jahren

Hi, das Forum ist nicht dazu da, dass es Deine Hausaufgaben macht.
[Hinweis] Wie poste ich richtig? 4.2. Wälzt nicht eure Aufgaben auf uns ab

Aber gut zu wissen, dass cmfrank hier offenbar das Forum ausnutzen und hinters Licht führen wollte.

Thema geschlossen