tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
15
ZUGRIFFE
1032
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    lyon64 lyon64 ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    13
    Hallo,

    ich mache im Moment einen Kurs Visual C++/CLI und bin an einer Aufgabe, bei dieser ich ein paar Tipps benötigen könnte. Da ich diesen Kurs rein privat mache und beruflich nie umsetze, tue ich auch niemanden weh, wenn ich es über dieses Forum versuche

    Es soll am nachfolgenden Code das Listenende beim Einfügen nicht immer neu ermittelt, sondern neue Elemente direkt am Ende eingefügt werden.

    Vorgaben:
    Keine Änderung der Klasse
    300 Elemente am Listenende einfügen



    #include "stdafx.h"

    using namespace System;

    ref class listenelement {
    String ^daten;
    listenelement ^next;
    public:
    Void datenSetzen(String ^datenneu);
    Void anhaengen(String ^datenneu);
    Void ausgeben();
    };

    //die Zeichenkette in das Element schreiben
    Void listenelement::datenSetzen(String ^datenneu) {
    daten=datenneu;
    }

    //neues Element am Ende der Liste anhängen
    Void listenelement::anhaengen(String ^datenneu) {
    //hat next den Wert nullptr?
    //dann ein neues Element anhängen
    if (next == nullptr) {
    next = gcnew listenelement;
    next->daten=datenneu;
    //nullptr wird automatisch zugewiesen!
    }
    //sonst die Methode für next noch einmal aufrufen
    else
    next->anhaengen(datenneu);
    //nur zur Veranschaulichung
    Console::WriteLine("Daten {0} wurden eingefügt.",datenneu);
    }

    //Alle Elemente der Liste ausgeben
    Void listenelement::ausgeben() {
    //den ersten Eintrag ausgeben
    Console::WriteLine("{0}",daten);
    //wenn das Ende nicht erreicht ist, die Methode für next erneut aufrufen
    if (next != nullptr)
    next->ausgeben();
    }

    int main(array<System::String ^> ^args)
    {
    //Handle auf den Anfang der Liste
    listenelement ^listenanfang;

    //Handle auf das Ende der Liste
    listenelement ^listenende;

    //das erste Element per Hand erzeugen
    listenanfang = gcnew listenelement;
    //Zeichenkette in das erste Element schreiben
    listenanfang->datenSetzen("Element 1");

    //in einer Schleife mehrere Elemente anfügen
    for (Int32 schleife=1;schleife<301;schleife++)
    listenanfang->anhaengen("Element "+schleife);

    //die Liste ausgeben
    listenanfang->ausgeben();

    return 0;
    }


    Gruß
    lyon64
     

  2. #2
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.358
    Blog-Einträge
    4
    Zitat Zitat von lyon64 Beitrag anzeigen
    Es soll am nachfolgenden Code das Listenende beim Einfügen nicht immer neu ermittelt, sondern neue Elemente direkt am Ende eingefügt werden.
    Du musst einfach nur deine Schleife in der main ändern:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    // Das Handle listenende brauchst du nicht mehr
    listenelement ^aktuellesElement = listenanfang;
     
    //in einer Schleife mehrere Elemente anfügen
    for (Int32 schleife=1;schleife<301;schleife++) 
    {
      listenanfang->anhaengen("Element "+schleife);
      aktuellesElement = next;
    }
    (Ich kenne mich in C# nicht aus, nur in C++, Syntax-Fehler könnten drin sein)
    Und poste bitte nächstes Mal dein Code in den C++-Tags: [cpp][/cpp].
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  3. #3
    lyon64 lyon64 ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    13
    Hallo ComFreek,

    danke, für Deine schnelle Antwort. Ich lerne seit März Visual C++/CLI und kenne nicht alle Begriffe.
    Was meinst Du mit Und poste bitte nächstes Mal dein Code in den C++-Tags: .
    Wie geht das bzw. was soll ich genau tun?

    Gruß
    lyon64
     

  4. #4
    badday badday ist offline Mitglied Brokat
    Registriert seit
    Dec 2009
    Beiträge
    321
    Blog-Einträge
    1
    Code cpp:
    1
    
    Dein Code

    [cppd]Dein Code[/cppd]
    -> Dein Code einfach zwischen ] und [ schreiben. Dazu einfach wie im Zitat, nur die "d" entfernen

    Gruß,

    badday
     
    Galaxy under Fire - 24/7 Online-Real-Time-Strategy-Game - servers are already running - Wir suchen einen Texturier für 3D-Modelle (bei Interesse einfach PM ;) )

  5. #5
    lyon64 lyon64 ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    13
    Hallo badday,

    danke, für Deine Antwort. Ich habe mich heute registrieren lasse, also erster Tag für mich.
    Sorry, dass ich mich so blöd anstelle, aber ich kann noch nicht nachvollziehen, wie Du das
    mit dem blauen Balken (Code cpp gemacht hast. Muss mich noch damit befassen, bevor
    ich Fragen stelle.

    Gruß
    lyon64
     

  6. #6
    badday badday ist offline Mitglied Brokat
    Registriert seit
    Dec 2009
    Beiträge
    321
    Blog-Einträge
    1
    Wenn du das Zwischen die beiden Tags (Tags sind [xxx] zum öffnen und [/xxx] zum schließen) schreibst, wird das alles automatisch gemacht, ich habe also mit dem blauen Balken nichts zu tun

    Gruß,

    badday
    lyon64 bedankt sich. 
    Galaxy under Fire - 24/7 Online-Real-Time-Strategy-Game - servers are already running - Wir suchen einen Texturier für 3D-Modelle (bei Interesse einfach PM ;) )

  7. #7
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.358
    Blog-Einträge
    4
    Hier sind die meisten BB-Codes (aber nicht die Code-Tags) aufgelistet: Hilfe->BB-Code Liste

    @badday: Es gibt das [noparse][/noparse]-Tag, um BB-Codes unformatiert darzustellen.

    @lyon64: Ist das Problem jetzt gelöst? Oder hast du noch Fragen?
    lyon64 bedankt sich. 
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  8. #8
    lyon64 lyon64 ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    13
    Hallo ComFreek,

    ich glaube, so ist es richtig. Leider haben die Änderungen im Programm nicht das gewünschte Ergebnis gebracht.

    Gruß
    lyon64

    [ccp]#include "stdafx.h"

    using namespace System;

    ref class listenelement {
    String ^daten;
    listenelement ^next;
    public:
    Void datenSetzen(String ^datenneu);
    Void anhaengen(String ^datenneu);
    Void ausgeben();
    };

    //die Zeichenkette in das Element schreiben
    Void listenelement::datenSetzen(String ^datenneu) {
    daten=datenneu;
    }

    //neues Element am Ende der Liste anhängen
    Void listenelement::anhaengen(String ^datenneu) {
    //hat next den Wert nullptr?
    //dann ein neues Element anhängen
    if (next == nullptr) {
    next = gcnew listenelement;
    next->daten=datenneu;
    //nullptr wird automatisch zugewiesen!
    }
    //sonst die Methode für next noch einmal aufrufen
    else
    next->anhaengen(datenneu);
    //nur zur Veranschaulichung
    Console::WriteLine("Daten {0} wurden eingefügt.",datenneu);
    }

    //Alle Elemente der Liste ausgeben
    Void listenelement::ausgeben() {
    //den ersten Eintrag ausgeben
    Console::WriteLine("{0}",daten);
    //wenn das Ende nicht erreicht ist, die Methode für next erneut aufrufen
    if (next != nullptr)
    next->ausgeben();
    }

    int main(array<System::String ^> ^args)
    {
    //Handle auf den Anfang der Liste
    listenelement ^listenanfang;

    //das erste Element per Hand erzeugen
    listenanfang = gcnew listenelement;
    //Zeichenkette in das erste Element schreiben
    listenanfang->datenSetzen("Element 1");

    //in einer Schleife mehrere Elemente anfügen
    for (Int32 schleife=2;schleife<4;schleife++)
    listenanfang->anhaengen("Element "+schleife);

    //die Liste ausgeben
    listenanfang->ausgeben();

    return 0;
    }
    [/ccp]
     

  9. #9
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.358
    Blog-Einträge
    4
    Jetzt hast du dich beim schließenden Tag verschrieben, das ist echt Pech

    Zu deinem Code:
    Du hast doch gar nicht meinen Teil übernommen.
    Versuche mal folgendes:
    Code cpp:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    
    #include "stdafx.h"
     
    using namespace System;
     
    ref class listenelement {
    String ^daten;
    listenelement ^next;
    public:
    Void datenSetzen(String ^datenneu); 
    Void anhaengen(String ^datenneu);
    Void ausgeben();
    };
     
    //die Zeichenkette in das Element schreiben
    Void listenelement::datenSetzen(String ^datenneu) {
    daten=datenneu;
    }
     
    //neues Element am Ende der Liste anhängen
    Void listenelement::anhaengen(String ^datenneu) {
    next = gcnew listenelement;
    next->datenSetzen(datenneu);
    //nur zur Veranschaulichung
    Console::WriteLine("Daten {0} wurden eingefügt.",datenneu);
    }
     
    //Alle Elemente der Liste ausgeben
    Void listenelement::ausgeben() {
    //den ersten Eintrag ausgeben
    Console::WriteLine("{0}",daten);
    //wenn das Ende nicht erreicht ist, die Methode für next erneut aufrufen
    if (next != nullptr)
    next->ausgeben();
    }
     
    int main(array<System::String ^> ^args)
    {
    //Handle auf den Anfang der Liste
    listenelement ^listenanfang;
    listenelement ^aktuellesElement;
     
    //das erste Element per Hand erzeugen
    listenanfang = gcnew listenelement;
    //Zeichenkette in das erste Element schreiben
    listenanfang->datenSetzen("Element 1");
    aktuellesElement = listenAnfang;
     
    //in einer Schleife mehrere Elemente anfügen
    for (Int32 schleife=1;schleife<301;schleife++) 
    {
      listenanfang->anhaengen("Element "+schleife);
      aktuellesElement = next;
    }
    //die Liste ausgeben
    listenanfang->ausgeben();
     
    return 0;
    }
    lyon64 bedankt sich. 
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  10. #10
    lyon64 lyon64 ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    13
    Hallo ComFreek,

    danke, für Deine Hilfe. Ich habe noch listenAnfang in listenanfang geändert und
    bei "error C2065: 'next': nichtdeklarierter Bezeichner" werde ich versuchen alleine
    klar zu kommen.

    Gruß
    lyon64
     

  11. #11
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.358
    Blog-Einträge
    4
    Ich habe den Fehler gefunden.
    ==>Wenn du ihn wissen willst, musst du diese Box markieren
    Achtung Spoiler:

    In der Schleife muss vor next das hier: listenanfang->
    lyon64 bedankt sich. 
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  12. #12
    lyon64 lyon64 ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    13
    Hallo ComFreek,

    tolle Sache mit . Wieder etwas gelernt.
    Habe es so gemacht, wie Du geschrieben hast, trotzdem ist noch ein Fehler drin.
    Ich versuche, diesen zu finden.

    Gruß
    lyon64


    Code cpp:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    
     
    #include "stdafx.h"
     
    using namespace System;
     
    ref class listenelement {
    String ^daten;
    listenelement ^next;
     
    public:
    Void datenSetzen(String ^datenneu); 
    Void anhaengen(String ^datenneu);
    Void ausgeben();
    };
     
    //die Zeichenkette in das Element schreiben
    Void listenelement::datenSetzen(String ^datenneu) {
    daten=datenneu;
    }
     
    //neues Element am Ende der Liste anhängen
    Void listenelement::anhaengen(String ^datenneu) {
    //hat next den Wert nullptr?
    //dann ein neues Element anhängen
    if (next == nullptr) {
    next = gcnew listenelement;
    next->daten=datenneu;
    //nullptr wird automatisch zugewiesen!
    }
    //sonst die Methode für next noch einmal aufrufen
    else
    next->anhaengen(datenneu);
    //nur zur Veranschaulichung
    Console::WriteLine("Daten {0} wurden eingefügt.",datenneu);
    }
     
    //Alle Elemente der Liste ausgeben
    Void listenelement::ausgeben() {
    //den ersten Eintrag ausgeben
    Console::WriteLine("{0}",daten);
    //wenn das Ende nicht erreicht ist, die Methode für next erneut aufrufen
    if (next != nullptr)
    next->ausgeben();
    }
     
    int main(array<System::String ^> ^args)
    {
    //Handle auf den Anfang der Liste
    listenelement ^listenanfang;
    listenelement ^aktuellesElement;
     
    //das erste Element per Hand erzeugen
    listenanfang = gcnew listenelement;
    //Zeichenkette in das erste Element schreiben
    listenanfang->datenSetzen("Element 1");
    aktuellesElement = listenanfang;
     
    //in einer Schleife mehrere Elemente anfügen
    for (Int32 schleife=1;schleife<301;schleife++) 
    {
    listenanfang->anhaengen("Element "+schleife);
    aktuellesElement = listenanfang->next;
    }
    //die Liste ausgeben
    listenanfang->ausgeben();
     
    return 0;
    }
     

  13. #13
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Und welcher Fehler? Wie lautet die Compilermeldung?
     

  14. #14
    lyon64 lyon64 ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    13
    Hallo Sheel,

    die Fehlermeldung war:

    1>.\Test1.cpp(61) : error C2248: "listenelement::next": Kein Zugriff auf private Member, dessen Deklaration in der listenelement-Klasse erfolgte.

    Gruß
    lyon64
     

  15. #15
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.358
    Blog-Einträge
    4
    Du greifst in der For-Schleife (in main()) auf next zu.
    Ersetze das einfach durch die Funktion anhaengen.
    lyon64 bedankt sich. 
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

Ähnliche Themen

  1. Einfach verkettete Liste mit Objekte rückwärts
    Von lyon64 im Forum .NET Café
    Antworten: 7
    Letzter Beitrag: 03.12.11, 01:44
  2. C++/CLI einfach verkettete Liste
    Von Nyoko im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 10.06.09, 18:19
  3. Antworten: 2
    Letzter Beitrag: 27.04.09, 19:13
  4. Antworten: 19
    Letzter Beitrag: 06.03.09, 11:35
  5. Einfach verkettete Liste
    Von lernen.2007 im Forum Java
    Antworten: 1
    Letzter Beitrag: 25.04.05, 09:27