2Danke
ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
1651
1651
EMPFEHLEN
-
Hallo,
habe eine neue Aufgabe eingestellt, die fast fertig ist, allerdings nur fast
Eine einfach verkettete Liste mit Objekte rückwärts ausgeben.
Vorgabe:
keine doppelt verkettete Liste erstellen
es soll die Methode ausgabeRueckwaerts () erstellen, die sich rekursiv aufruft
das Programm soll 5 Elemente vorwärts und dieselben Elemente rückwärts ausgeben
Mein code: ACHTUNG: Programm geht nicht ************!!
[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();
void ausgebenRueckwaerts ();
};
//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();
}
// *** NEU *** Alle Elemente rückwärts ausgeben ***rekursiv***
void listenelement::ausgebenRueckwaerts()
{
if(next != nullptr)
next->ausgebenRueckwaerts();
Console::WriteLine("{0}",next);
}
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=2;schleife<6;schleife++)
listenAnfang->anhaengen("Element "+schleife);
//die Liste ausgeben
listenAnfang->ausgeben();
//die Liste rückwärts ausgeben
listenEnde->ausgebenRueckwaerts();
return 0;
}
[/ccp]
Wer kann mir hier einen Tipp geben.
Danke und Gruß
lyon64
-
Ersetze die Runde Klammer bei [cpp) durch eine eckige, sonst kann man es kaum lesen!
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 ;) )
-
Hallo badday,
konnte meine Aufgabe lösen. Anbei mein Ergebnis.
)
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();
void ausgebenRueckwaerts ();
};
//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();
}
// *** NEU *** Alle Elemente rückwärts ausgeben ***rekursiv***
void listenelement::ausgebenRueckwaerts()
{
if(next != nullptr)
{
next->ausgebenRueckwaerts();
}
Console::WriteLine("{0}",daten);
}
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");
//Listenanfang auf Listenende setzen
listenEnde = listenAnfang;
//in einer Schleife mehrere Elemente anfügen
for (Int32 schleife=2;schleife<6;schleife++)
listenEnde->anhaengen("Element "+schleife);
//die Liste ausgeben
listenAnfang->ausgeben();
//die Liste rückwärts ausgeben
listenAnfang->ausgebenRueckwaerts();
return 0;
} [/ccp]
-
Und bitte auch cpp statt ccp
-
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 69 70 71 72 73 74 75 76 77 78 79 80 81
#include "stdafx.h" using namespace System; ref class listenelement { String ^daten; listenelement ^next; public: void datenSetzen(String ^datenneu); void anhaengen(String ^datenneu); void ausgeben(); void ausgebenRueckwaerts (); }; //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(); } // *** NEU *** Alle Elemente rückwärts ausgeben ***rekursiv*** void listenelement::ausgebenRueckwaerts() { if(next != nullptr) next->ausgebenRueckwaerts(); Console::WriteLine("{0}",daten); } 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"); listenEnde=listenAnfang; //in einer Schleife mehrere Elemente anfügen for (Int32 schleife=2;schleife<6;schleife++) listenAnfang->anhaengen("Element "+schleife); //die Liste ausgeben listenAnfang->ausgeben(); //die Liste rückwärts ausgeben listenEnde->ausgebenRueckwaerts(); Console::Read(); return 0; }
sooo ich hatte bzw habe diese aufgabe auch und dein Quelltext ist schon inordnung nur du darfst bei der ausgebe nicht Console::WriteLine("{0}",NEXT)schreiben sonder Daten dann klappt es habe mal den Quell text mit Kopiert.... im Übrigen bei der ersten Aufgabe hing ich auch 20 stunden an genau dem selben Problem und die Fragestllung ist bei mir die selbe gewesen XD
-
Danke, dass du doch noch eine Lösung bringst.
Durch die fehlende Reaktion vom Fragesteller hab ich den Thread gar nicht mehr angeschaut...
Was aber bei euch beiden der Fall ist:
Ihr verwendet C++/CLI, als eine .NET-Sprache.
Das ist kein C++, auch wenns im Namen vorkommt.
...Nur als Info.
GrußNetiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Ehm auch wenn sich grade alle die das lesen denken Boa das weiß doch jeder......Aber ich frag Trotzdem mal....Wo is der Unterscheid zwischen C++ Und C++/CLI....****?
-
C++/CLI ist eine von Microsoft entwickelte Sprache, die ursprünglich dafür gedacht war,
die Klassen von C# mit C++-Syntax zu mischen.
Also die C#-Funktionalität mit C++-Schreibweise für den Code.
Das hatte MS eigentlich vor.
Den C#-Klassenteil haben sie geschafft, den Rest nicht.
Die Syntax/Schreibweise von C++/CLI ist jetzt weder die von C# noch C++,
sondern was eigenes neues.
...Wenn man die (nicht sehr beliebte) Schreibweise mal wegdenkt,
ist der Funktionsumfang von C++/CLI komplett gleich wie bei C#
und passt damit besser zu Java als C/C++.
C# wird übrigens allgemein als Programmierer-freundlicher angesehen...
Wenn man also bisher unwissend seine Winformsprogramme
in "C++" mit gcnew^ usw. geschrieben hat, tut man sich mit dem Umstieg
auf C# selbst einen Gefallen. Man wird sich sofort damit auskennen,
und das Programmieren geht etwas leichter.
Vor allem, wenn man zB. Java schon kennt.
Der einzige Grund, bei dem ich C++/CLI verwenden würde:
Wenn ich C++ und C# zusammen in ein Programm hängen will.
C++/CLI machts relativ einfach, den Verbindungsteil
zwischen den zwei Welten zu machen.
Lange Rede, kurzer Sinn: Bis auf den Namen haben die zwei Sprachen wenig gemeinsam.
Und mach dir keine Sorgen; weil du das nicht wusstest.
Bist bei Weitem nicht der Einzige.
Vor allem, weil das echte C++ und C++/CLI in Visual Studio beide als "C++" drin sind.
Vllt. will Microsoft ja so die Verwendung seiner Sprache erhöhen,
indem die Leute absichtlich verwirrt werden...
Von MS offiziell aus gibts den Namen "C++/CLI" meines Wissens gar nicht.
Fakt ist aber, dass es nicht C++ ist; deshalb hat sich irgendwie der Name mit CLI eingebürgert.
GrußNetiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
Ähnliche Themen
-
Einfach verkettete Liste mit Objekte
Von lyon64 im Forum C/C++Antworten: 15Letzter Beitrag: 12.09.10, 10:39 -
"Einfach verkettete Liste" rückwärts ausgeben
Von ddjm1984 im Forum C/C++Antworten: 5Letzter Beitrag: 10.12.09, 15:56 -
C++ Verkettete Liste rückwärts ausgeben.
Von vs1 im Forum C/C++Antworten: 14Letzter Beitrag: 06.07.09, 14:27 -
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





Zitieren

Login





