das Sortiern der Liste A ist - glaub ich - nicht das Problem für cDAG, sondern, dass in den anderen Listen dieselbe 'Reihenfolgeveränderung' durchgeführt werden soll.
Offensichtlich stehen die Daten in den Listen in einem inhaltlichen Zusammenhang. Spricht denn etwas dagegen, einfach eine Klasse zu definieren, die die Daten zusammenfasst und diese zu sortieren?
setze an der Stelle einen Haltepunkt, lass dir die Werte deiner Variaben anzeigen (überwachen) und führe das Programm schrittweise weiter aus.
Dann weißt du, was dein Programm macht und warum es das tut.
Im übrigen ergibt die Bedingung:
((AkP < 2) || (AkP == 0))
keinen Sinn, weil AkP==0 immer erfüllt ist, wenn AkP<2 wahr ist.
Im Übrigen ist es für uns schwer einen logischen Fehler zu finden, ohne zu wissen, was das Programm überhaupt machen soll.
ich bin leider erst mit etwas Verzögerung dazu gekommen, mir die Lösungen anzusehen.
Funktionieren tun beide. Die Lösung von D4rkScr43m läuft dabei wesentlich performanter ab (auch als meine Lösung).
Da seine Lösung zudem etwas schneller kam, erhält er den Zuschlag für die nächste Aufgabe.
da wir zuvor schon bei einer Springeraufgabe waren, hier meine Aufgabe:
Gesucht ist eine Funktion, die einen Lösungsweg für das Springerproblem für ein 8x8 Feld liefert.
Als Parameter soll die Funktion die Koordinaten des Startfeldes empfangen.
Viel Spaß
Gwinn
Edit: Um die Laufzeit nicht zu sehr in die Höhe zu treiben soll es genügen, wenn als Startpunkt eine Ecke vorgegeben wird.
ich hoffe ich habe keine Fehlerquellen übersehen.
Ungültige Argumente führen in meiner Version zu einer entsprechenden Exception.
Die Funktion nimmt als Argumente nichtnegative Zahlen und Basen von 2 bis 62.
Statt einer Exception könnte man auch den Ausgabestring entsprechend ändern. In Hinblick auf eine Anwendung gehe ich jedoch davon aus, dass man zuerst an dem Ergebniss der Berechnung interessiert ist. Deshalb habe ich als Rückgabewert die Quersumme gewählt und schreibe den Ausgabestring in den Parameter str.
public static int Quersumme(Int32 zahl, Int32 basis, out String str)
{
Int32 quersumme = 0;
Int32 ziffer;
StringBuilder strbuilder = new StringBuilder();
Int32 restzahl = zahl;
if ((basis > 62) || (basis < 2))
throw new ArgumentOutOfRangeException("Die Basis muss zwischen 2 und 62 liegen.");
if (zahl < 0)
throw new ArgumentOutOfRangeException("Die Quersumme ist nur für natürliche Zahlen definiert.");
while (restzahl > 0)
{
ziffer = restzahl % basis;
quersumme += ziffer;
if (ziffer < 10)
strbuilder.Insert(0, ziffer);
else
if (ziffer > 35)
strbuilder.Insert(0, (char)(ziffer + 61));
else
strbuilder.Insert(0, (char)(ziffer + 55));
restzahl = (restzahl - ziffer) / basis;
}
str = zahl.ToString() + "= " + strbuilder.ToString() + " base " + basis.ToString() + " -> Quersumme " + quersumme.ToString();
return quersumme;
}
eine halbe Lösung wäre es, das ganze nicht als Währung zu formatieren sondern als Zahl mit vorgestelltem Dollarzeichen.
$ #.##0,00
Eine halbe Lösung ist es deswegen, weil du dann noch immer einen Tausenderpunkt und ein Dezimalkomma hast und nicht andersherum, wie es in den USA richtig wäre.
for (uint x = 1; x ≤ y; x++)
{
facy = fack * x; // Fakultät von (n-i) wird berechnet.
}
Es müsste heißen:
for (uint x = 1; x ≤ y; x++)
{
facy = facy * x; // Fakultät von (n-i) wird berechnet.
}
Dann funktioniert es auch mit deinem Quellcode. Das hättest du mit Hilfe von ein paar Haltepunkten und dem Debugger auch herausfinden können.
Darüber hinaus wirst du bei größerem n auf Grenzen stoßen, weil die Fakultäten die du berechnest schnell zu einem Speicherüberlauf führen werden. Für den Binomialkoeffizienten brauchst du auch gar nicht die ganze Fakultät, sondern nur das produkt der ersten (oder letzten, je nach dem ob man mit 1 oder mit n zu multiplizieren beginnt) i Glieder. Da darfst du dir aber selbst mal Gedanken machen...
das was du beschreibst könnte ggf. die Folge eines Gimbal Lock sein.
Vermeiden kannst du das, indem du die Rotation statt mit einer 3D-Rotationsmatrix mit einem Quaternion berechnest.
Eine Anleitung dazu findest du z.B. im Quaternion Tutorial.
Auch wenn es dort um die Rotation des Objekts und nicht der Kamera geht...
bist du sicher, dass du die rictige Funktion benutzt?
spline2dbuildbicubic ist gedacht für Splines in zwei Veränderlichen (Ordinaten x und y) So wie es mir aber scheint, möchtest du aber auf eine Funktion in einer Veränderlichen fitten und müsstest dafür
spline1dbuildcubic benutzen.
dieser Code erstellt ein leeres Worksheet, in dem die erste Zeile eingefroren ist.
Der Knackpunkt dabei ist die Pane, die in die SheetView eingefügt wird.
Um auf diesen Code zu kommen, kannst du dir einfach ein Excel-Dokument erstellen, das die von dir gewünschte Form hat, und dann mit dem Open XML SDK Productivity Tool den Code dazu erstellen lassen (Reflect Code).
da steckt garkein Vodoo hinter. Setz doch einfach mal einen Haltepunkt in die Zeile, die den Fehler auswirft und lass den Debugger starten.
Die ersten beiden Ebenen laufen ohne weiteres durch, doch dann kommst du in der dritten Ebene auf author:
author hat ein Child, nämlich "Gambardella, Matthew". Das Progemm läuft also in den Block der If-Bedingung und versucht dort auf das erste Element der Attributes-Liste zuzugreifen. author hat aber gar keine Attribute. Deshalb liefert Attributes null zurück und der Zugriff auf Attributes[0] schlägt fehl, was dir der Debugger mit
Fehler
System.NullReferenceException: Object reference not set to an instance of an object.
um die Ohren haut.
Bevor du also um Hilfe schreist, was denn falsch gelaufen sein könnte, bemüh doch erst einmal die Bordmittel von VisualStudio.
[Edith schreibt] Alternativ kann man natürlich auch den Code auf das Leave und das Enter Ereignis aufteilen, dann wird der Farbwechsel nur durchgeführt, wenn das TreView den Fokus erhält bzw verliert.
zu Canoonet hab ich folgendes in den AGBs gefunden:
Zitat
Urheberrecht
Sämtliche Rechte an der im Rahmen dieses Online-Angebots entwickelten Software, den zugrunde liegenden Datenbanken und sonstigen Inhalten liegen bei der Canoo Engineering AG, soweit nicht ausdrücklich ein anderer Urheber oder Rechtsinhaber genannt wird. Die Rechte der Inhalte des Bedeutungswörterbuchs liegen bei der Universität Tübingen. Jede Verwendung der Software, der Daten oder der sonstigen Inhalte außer in der Form, wie sie unter www.canoo.net angeboten und ermöglicht wird, ist nicht erlaubt. Es ist insbesondere nicht gestattet, jedwede Art von Inhalten per Script oder auf andere Weise automatisiert abzufragen.
Eine Scriptabfrage ist also ausdrücklich nicht erlaubt.
ich hab mal nen kleinen Workaround dafür geschrieben.
Die Idee ist, im Hauptfenster für den MenuStrip das ItemAdded Ereignis abzufangen und das hinzugefügte Item unsichtbar zu machen.
Damit man überhaupt noch Items hinzufügen kann, hab ich noch ein Steuer-Flag spendiert.
public partial class Form1 : Form
{
private int counter = 0;
private bool canAddItem = true;
public Form1()
{
InitializeComponent();
canAddItem = false;
}
private void menuStrip1_ItemAdded(object sender, ToolStripItemEventArgs e)
{
if (!canAddItem)
e.Item.Visible = false;
}
}
leider scheint es so, dass sich die ListView bei der Verwendung von Gruppen nicht wie erwartet verhält.
Die Items werden nämlich grundsätzlich in der Reihenfolge dargestellt, in der sie der Gruppe hinzugefügt werden und nicht nach der Reihenfolge in der sie in der Items-Auflistung stehen.
Im Übrigen fügt dein Codebeispiel das Item zweimal in die Groups[0] ein. Das erste mal bei der Erstellung und danach noch einmal mit Insert.
Ein Workaround für das Problem wäre, die Gruppe für alle Elemente aus Groups[0] erst auf null zu setzen und danach wieder (in der richtigen Reihenfolge) auf Group[0].
@herbivore
Der Code funktioniert bei mir auch, wenn ich ihn im Konstruktor verwende. Wenn ich ihn in eine Funktion schreibe, die später ausgeführt wird, funktioniert es nicht mehr.
Wenn ListView.View auf List gesetzt ist, dann funktioniert der Code auch wie erwartet, doch dann ist ja gerade die Gruppierungsfunktion wieder weg.
total spiechert nur einen Verweis auf das jeweilige Points-Object, das ihm übergeben wird. deshalb musst du für Points immer eine neue Liste erstellen, wenn du eine neue Linie zeichnen möchtest.