-
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
-
11.09.10 15:24 #2
Du musst einfach nur deine Schleife in der main ändern:
(Ich kenne mich in C# nicht aus, nur in C++, Syntax-Fehler könnten drin sein)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; }
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 erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
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
-
Code cpp:
1
Dein Code
-> Dein Code einfach zwischen ] und [ schreiben. Dazu einfach wie im Zitat, nur die "d" entfernen[cppd]Dein Code[/cppd]
Gruß,
baddayGalaxy 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 ;) )
-
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
-
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ß,
baddayGalaxy 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 ;) )
-
11.09.10 16:40 #7
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?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 erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
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]
-
11.09.10 17:30 #9
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; }
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 erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
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.09.10 17:49 #11
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->
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 erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
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; }
-
Und welcher Fehler? Wie lautet die Compilermeldung?
-
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
-
12.09.10 10:08 #15
Du greifst in der For-Schleife (in main()) auf next zu.
Ersetze das einfach durch die Funktion anhaengen.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 erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
Ähnliche Themen
-
Einfach verkettete Liste mit Objekte rückwärts
Von lyon64 im Forum .NET CaféAntworten: 7Letzter Beitrag: 03.12.11, 01:44 -
C++/CLI einfach verkettete Liste
Von Nyoko im Forum C/C++Antworten: 6Letzter Beitrag: 10.06.09, 18:19 -
einfach verkettete Liste -> Element löschen
Von Shinzo im Forum JavaAntworten: 2Letzter Beitrag: 27.04.09, 19:13 -
C++ einfach Verkettete Liste - Objekte einfügen
Von traknoxx im Forum C/C++Antworten: 19Letzter Beitrag: 06.03.09, 11:35 -
Einfach verkettete Liste
Von lernen.2007 im Forum JavaAntworten: 1Letzter Beitrag: 25.04.05, 09:27



5Danke

Zitieren


Login






