1. Forum
    1. Unerledigte Themen
  2. Artikel
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  4. Blog
    1. Artikel
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Blog-Artikel
  • Seiten
  • Erweiterte Suche
  1. StageTwo - Deine Wohlfühloase
  2. Developer & GFX Section
  3. Coding Allgemein

Blutiger Anfänger in C#

    • [C#]
  • libiza
  • 13. Oktober 2013 um 14:31
  • SroSuchtie
    Profi
    Reaktionen
    4
    Punkte
    3.534
    Beiträge
    665
    • 23. Januar 2014 um 08:25
    • #41

    Wie mach ich das denn z.b.? Unser Lehrer hat uns das nicht wirklich erklärt und im inet habe ich keine Erklärung gefunden die ich verstanden habe.

  • hangman
    Play more with Claymore!
    Reaktionen
    899
    Punkte
    36.569
    Beiträge
    6.942
    Geburtstag
    1. Oktober 1985 (41)
    Geschlecht
    Männlich
    Wohnort
    Schwobaländle
    Beruf
    Genie, nebenberuflich allwissend
    Hobbys
    User unterdrücken
    • 23. Januar 2014 um 08:39
    • Offizieller Beitrag
    • #42

    bool IstZahl(char Zeichen)
    {
    return Zeichen > 48 && Zeichen < 57;
    }

    so als pseudocode. chars sollten ihrem ascii wert entsprechen. also wenn du char 48 hast, sollte es eine 0 sein. ich bin aber auf c++ gepolt, laut threadtitel gehts um c#. aber soviel anders kann das nicht sein.

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)


    1355?mode=raw

    Skill ist, wenn Luck zur Gewohnheit wird

    • Vorheriger offizieller Beitrag
    • Nächster offizieller Beitrag
  • SroSuchtie
    Profi
    Reaktionen
    4
    Punkte
    3.534
    Beiträge
    665
    • 23. Januar 2014 um 08:55
    • #43

    Ich lerne auch c++ wollte nur keinen neuen thread auf machen
    Aber danke wenn ich zuhause bin probierte ich es aus

  • libiza
    Schüler
    Reaktionen
    1
    Punkte
    761
    Beiträge
    138
    Geschlecht
    Männlich
    • 23. Januar 2014 um 11:14
    • #44
    Zitat von hangman

    bool IstZahl(char Zeichen)
    {
    return Zeichen > 48 && Zeichen < 57;
    }
    so als pseudocode. chars sollten ihrem ascii wert entsprechen. also wenn du char 48 hast, sollte es eine 0 sein. ich bin aber auf c++ gepolt, laut threadtitel gehts um c#. aber soviel anders kann das nicht sein.

    Bin im ersten Semester Wirtschaftsinformatik und unser Professor in Programmieren I meinte, dass wir uns NIE die ASCII Werte merken sollen sondern anstatt 65 für A einfach 'A' schreiben sollen. Es verbessere die Lesbarkeit des Codes ungemein

  • hangman
    Play more with Claymore!
    Reaktionen
    899
    Punkte
    36.569
    Beiträge
    6.942
    Geburtstag
    1. Oktober 1985 (41)
    Geschlecht
    Männlich
    Wohnort
    Schwobaländle
    Beruf
    Genie, nebenberuflich allwissend
    Hobbys
    User unterdrücken
    • 23. Januar 2014 um 13:56
    • Offizieller Beitrag
    • #45

    klar, hast du bestimmt recht. das war jetzt so ausm kopf. es gibt viel schlimmere designsünden als nen ascii code hinzuschreiben statt dem char. aber das wird dir auch noch begegnen.

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)


    1355?mode=raw

    Skill ist, wenn Luck zur Gewohnheit wird

    • Vorheriger offizieller Beitrag
    • Nächster offizieller Beitrag
  • libiza
    Schüler
    Reaktionen
    1
    Punkte
    761
    Beiträge
    138
    Geschlecht
    Männlich
    • 21. April 2014 um 20:18
    • #46

    Ich bräuchte mal wieder eure Hilfe ^^

    Hab hier ne Liste und muss die in umgekehrter Reihenfolge ausgeben. Nun gut, das ausgeben wäre kein Problem, aber nun soll die Revertfunktion welche ich schreiben soll nicht den umgekehrten string zurückgeben sondern eine neue Liste.
    Kurz gesagt: Ich hab eine Liste mit aufsteigend sortierten Zahlen und muss diese Liste absteigend sortieren.

    Aufgabenstellung: Bei der Implementierung können Sie eine neue Listeninstanz erzeugen, in
    die dann - basierend auf den Daten der ursprünglichen Liste - sukzessiv
    neue Elemente in umgekehrter Reihenfolge eingefügt werden. Die o. g.
    Methode Revert gibt dann eine Referenz auf die neu erstellte Liste zurück (siehe Testcode unten).

    Zitat
    Code
    IntList sortedList = new IntList();
    sortedList.InsertSorted(5);
    sortedList.InsertSorted(2);
    sortedList.InsertSorted(5);
    sortedList.InsertSorted(7);
    sortedList.InsertSorted(3);
    Console.WriteLine("Sorted list: {0}", (string)sortedList);
     
    Console.WriteLine("Reverted sorted list: {0}", (string)sortedList.Revert());

    Mein Ansatz bisher:

    Spoiler anzeigen
    C#
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace Praktikum4DoppeltverketteteListe
    {
        class LElement
        {
            int zahl;
            LElement next;
            LElement prev;
    
    
            public LElement(int _zahl)
            {
                zahl = _zahl;
                next = null;
            }
    
    
            public int Zahl
            {
                get { return zahl; }
            }
            public LElement Next
            {
                get { return next; }
                set { next = value; }
            }
            public LElement Prev
            {
                get { return prev; }
                set { prev = value; }
            }
        }
    
    
        class IntList
        {
            // Variablen müssen static sein um im explicit operator aufgerufen werden zu können
            static LElement root;
            static LElement last;
            public IntList()
            {
                root = null;
                last = null;
            }
    
    
            public void InsertSorted(int zahl)
            {
                LElement neu = new LElement(zahl);
    
    
                // Leere Liste
                if (root == null)
                {
                    root = neu;
                }
                else
                {
                    // Vor dem ersten Element
                    if (neu.Zahl < root.Zahl)
                    {
                        neu.Next = root;
                        root = neu;
                    }
                    else
                    {
                        // Mittendrin einfügen
                        LElement lfd = root;
    
    
                        while (lfd.Next != null && lfd.Next.Zahl < neu.Zahl)
                        {
                            lfd = lfd.Next;
                        }
                        neu.Next = lfd.Next;
                        lfd.Next = neu;
                    }
                }
            }
            // (string) kann durch diese Funktion für IntListen verwendet werden
            public static explicit operator string(IntList Liste)
            {
                string sorted = "";
                LElement lfd = root;
                while (lfd != null)
                {
                    sorted = sorted + lfd.Zahl + " ";
                    lfd = lfd.Next;
                }
                return sorted;
            }
    
    
            //public string Revert()
            //{
            //    string inverted = "";
            //    LElement lfd = root;
    
    
            //    // Fügt die lfd.Zahl vorne an 
            //    while (lfd != null)
            //    {
            //        inverted = lfd.Zahl + " " + inverted;
            //        lfd = lfd.Next;
            //    }
            //    return inverted;
            // 
            //}
        }
    
    
        class Program
        {
            static void Main(string[] args)
            {
                IntList sortedList = new IntList();
                sortedList.InsertSorted(5);
                sortedList.InsertSorted(2);
                sortedList.InsertSorted(5);
                sortedList.InsertSorted(7);
                sortedList.InsertSorted(3);
    
    
                Console.WriteLine("Sorted list: {0}", (string)sortedList);
                Console.WriteLine("Reverted sorted list: {0}", (string)sortedList.Revert());
            }
        }
    }
    Alles anzeigen

  • hangman
    Play more with Claymore!
    Reaktionen
    899
    Punkte
    36.569
    Beiträge
    6.942
    Geburtstag
    1. Oktober 1985 (41)
    Geschlecht
    Männlich
    Wohnort
    Schwobaländle
    Beruf
    Genie, nebenberuflich allwissend
    Hobbys
    User unterdrücken
    • 21. April 2014 um 21:31
    • Offizieller Beitrag
    • #47

    du willst nur die liste von hinten durchgehen und in eine neue speichern? gibts in c# keine reverse iteratoren?

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)


    1355?mode=raw

    Skill ist, wenn Luck zur Gewohnheit wird

    • Vorheriger offizieller Beitrag
    • Nächster offizieller Beitrag
  • libiza
    Schüler
    Reaktionen
    1
    Punkte
    761
    Beiträge
    138
    Geschlecht
    Männlich
    • 21. April 2014 um 22:23
    • #48
    Zitat von hangman

    du willst nur die liste von hinten durchgehen und in eine neue speichern? gibts in c# keine reverse iteratoren?

    Genau das möchte ich... Jedoch selber schreiben ;)

  • hangman
    Play more with Claymore!
    Reaktionen
    899
    Punkte
    36.569
    Beiträge
    6.942
    Geburtstag
    1. Oktober 1985 (41)
    Geschlecht
    Männlich
    Wohnort
    Schwobaländle
    Beruf
    Genie, nebenberuflich allwissend
    Hobbys
    User unterdrücken
    • 21. April 2014 um 22:28
    • Offizieller Beitrag
    • #49

    also sowas?
    pseudocode:

    list meineListe //gegeben
    list meineListeVonHinten //gesucht
    for(list::reverse_iterator it = meineListe.rbegin(); it != meineListe.rend(); ++it)
    {
    meineListeVonHinten.insert(it);
    }

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)


    1355?mode=raw

    Skill ist, wenn Luck zur Gewohnheit wird

    • Vorheriger offizieller Beitrag
    • Nächster offizieller Beitrag
  • libiza
    Schüler
    Reaktionen
    1
    Punkte
    761
    Beiträge
    138
    Geschlecht
    Männlich
    • 21. April 2014 um 22:33
    • #50

    In etwa so ausgedrückt:
    Ich bekomme meineListe übergeben und möchte diese Liste umdrehen und wieder zurückgeben.
    Ich weiß wie ich meine Liste durchgehe ( auch von hinten) aber nicht wie ich diese in der gewünschten Reihenfolge in einer neuen speichern bzw. meine alte Liste so verändern kann. Das ist der Knackpunkt

  • hangman
    Play more with Claymore!
    Reaktionen
    899
    Punkte
    36.569
    Beiträge
    6.942
    Geburtstag
    1. Oktober 1985 (41)
    Geschlecht
    Männlich
    Wohnort
    Schwobaländle
    Beruf
    Genie, nebenberuflich allwissend
    Hobbys
    User unterdrücken
    • 27. April 2014 um 17:22
    • Offizieller Beitrag
    • #51

    na einfach von hinten durchgehen und in eine neue liste der reihe nach einfügen, siehe mein pseudocode oben. verstehe grad das problem nicht.

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)


    1355?mode=raw

    Skill ist, wenn Luck zur Gewohnheit wird

    • Vorheriger offizieller Beitrag
  • libiza
    Schüler
    Reaktionen
    1
    Punkte
    761
    Beiträge
    138
    Geschlecht
    Männlich
    • 27. April 2014 um 19:12
    • #52

    Das Problem beim "Pseudocode" war, das ich das ja wieder sortiert einfüge.
    Aber ich muss ja die Zeiger ändern.
    also
    root = last
    root. next = last.prev
    etc etc

    Hab das jetzt so gelöst:

    Code
    public IntList Revert()
            {
                IntList inverted = new IntList();
                LElement lfd = last;
                LElement hilfe;
    
    
                //Tauscht alle Elemente zwischen root und last
                while (lfd != null)
                {
                    hilfe = lfd.Prev;
                    lfd.Prev = lfd.Next;
                    lfd.Next = hilfe;
    
    
                    lfd = lfd.Next;
                }
                // Tauscht die ersten und letzten Elemente
                inverted.root = last;
                inverted.last = root;
    
    
                return inverted;
            }
    Alles anzeigen

  • javaest
    [Banned]
    Reaktionen
    14
    Punkte
    1.184
    Beiträge
    200
    Geschlecht
    Männlich
    Wohnort
    Wipperfürth
    Beruf
    Dachdecker
    • 27. April 2014 um 19:35
    • #53

    Warum lässt du nicht die Länger der Liste abfragen und tauscht dann Index 0 mit Liste.length -1 aus?

  1. Datenschutzerklärung
  2. Impressum