Ausgabe
-
Ok leute jetzt sieht der code so aus:
#include <string> #include <iostream> /* Dabei soll eine Veranstaltung mittels einer Struktur Event beschrieben werden und alle Veranstaltungen der Agentur als verkettete Liste von Events. Da sich ein zweites Projektteam mit dem Entwurf der Struktur Event befasst, müssen Sie für die Entwicklung zunächst einen einfachen Prototypen hierfür implementieren. Als Minimalanforderung sollte der Prototyp neben dem Zeiger auf das nächste Element - eine Bezeichnung des Events - die Anzahl der vorhandenen Sitzplätze - die Anzahl der noch nicht verkauften Sitzplätze enthalten. */ struct event_t { event_t( std::string const &title, unsigned const tickets, unsigned const tickets_available, event_t *next = nullptr) : title( title ), tickets( tickets ), tickets_available( tickets_available ), next( next ) {} bool is_sellout() const { return tickets_available == 0; } std::string title; unsigned tickets; unsigned tickets_available; event_t *next; }; std::ostream & operator<<( std::ostream & os, event_t const &event ) { os << "Event \"" << event.title << "\"\nTickets:\t" << event.tickets << "\nTickets available:\t" << event.tickets_available; return os; } /* eine Funktion void ausgabe(…) welche die Daten eines Events am Bildschirm anzeigt. Der Parameter kann geeignet gewählt werden */ void print_event( event_t const & event ) { std::cout << event << '\n'; } /* eine Funktion void ausgabeListe( Event* start) welche alle Events der Liste am Bildschirm anzeigt, wobei das erste Element als Parameter übergeben wird. */ void print_event_list( event_t const & first_event ) { event_t const *current = &first_event; print_event( *current ); if (current->next) print_event_list( *current->next ); } /* eine Funktion void ausgabeListeAusverkauft( Event* start) welche alle Events der Liste am Bildschirm anzeigt,die ausverkauft sind. Das erste Element wird wieder als Parameter übergeben. */ void print_event_list_sellout( event_t const & first_event ) { event_t const *current = &first_event; if( current->is_sellout() ) { print_event( *current ); } if (current->next) print_event_list( *current->next ); } /* Testen Sie die Funktionen mittels eines geeigneten Treibers. Dabei kann eine Liste von mindestens 4 verkettetten Events fest vorgegeben werden (muss nicht eingelesen werden). */ int main() { event_t event_four( "foobarbaz", 2000, 2000 ); event_t event_three( "foobar", 1000, 0, &event_four ); event_t event_two( "bar", 5000, 4500, &event_three ); event_t event_one( "foo", 10000, 0, &event_two ); std::cout << "event_two:\n"; print_event( event_two ); std::cout << "\nEvent list:\n"; print_event_list( event_one ); std::cout << "\nEvent list sellout:\n"; print_event_list_sellout( event_one ); }Es werden aber immer noch errors angezeigt.
Mein programm zeigt mir immer noch error an an dieser Zeile:
event_t( std::string const &title, unsigned const tickets, unsigned const tickets_available, event_t *next = nullptr).
Und hier:
event_t event_four( "foobarbaz", 2000, 2000 );Was ist hier falsch?
-
Ohne zu wissen, was die Fehlermeldung genau besagt (
): ersetze nullptr durch NULL oder 0 oder sag deinem Compiler, dass du C++11 verwendest.
-
und was für ein fehler wird dir angezeigt? keine Ahnung wieso du die nicht postest, ist doch das naheliegenste
-
Ok leute ich poste euch jetzt mal die fehlermeldung.
C:\\12\main.cpp|16|error: 'null' was not declared in this scope|
C:\\12\main.cpp||In function 'int main()':|
C:\
\12\main.cpp|82|error: call to 'event_t::event_t(const string&, unsigned int, unsigned int, event_t*)' uses the default argument for parameter 4, which is not yet defined|
||=== Build finished: 2 errors, 0 warnings (0 minutes, 0 seconds) ===|Ich hab jetzt null eingesetzt aber das zeigt mir ja wie ihr eben sieht wieder Fehler an.
#include <string> #include <iostream> /* Dabei soll eine Veranstaltung mittels einer Struktur Event beschrieben werden und alle Veranstaltungen der Agentur als verkettete Liste von Events. Da sich ein zweites Projektteam mit dem Entwurf der Struktur Event befasst, müssen Sie für die Entwicklung zunächst einen einfachen Prototypen hierfür implementieren. Als Minimalanforderung sollte der Prototyp neben dem Zeiger auf das nächste Element - eine Bezeichnung des Events - die Anzahl der vorhandenen Sitzplätze - die Anzahl der noch nicht verkauften Sitzplätze enthalten. */ struct event_t { event_t( std::string const &title, unsigned const tickets, unsigned const tickets_available, event_t *next = null) : title( title ), tickets( tickets ), tickets_available( tickets_available ), next( next ) {} bool is_sellout() const { return tickets_available == 0; } std::string title; unsigned tickets; unsigned tickets_available; event_t *next; }; std::ostream & operator<<( std::ostream & os, event_t const &event ) { os << "Event \"" << event.title << "\"\nTickets:\t" << event.tickets << "\nTickets available:\t" << event.tickets_available; return os; } /* eine Funktion void ausgabe(…) welche die Daten eines Events am Bildschirm anzeigt. Der Parameter kann geeignet gewählt werden */ void print_event( event_t const & event ) { std::cout << event << '\n'; } /* eine Funktion void ausgabeListe( Event* start) welche alle Events der Liste am Bildschirm anzeigt, wobei das erste Element als Parameter übergeben wird. */ void print_event_list( event_t const & first_event ) { event_t const *current = &first_event; print_event( *current ); if (current->next) print_event_list( *current->next ); } /* eine Funktion void ausgabeListeAusverkauft( Event* start) welche alle Events der Liste am Bildschirm anzeigt,die ausverkauft sind. Das erste Element wird wieder als Parameter übergeben. */ void print_event_list_sellout( event_t const & first_event ) { event_t const *current = &first_event; if( current->is_sellout() ) { print_event( *current ); } if (current->next) print_event_list( *current->next ); } /* Testen Sie die Funktionen mittels eines geeigneten Treibers. Dabei kann eine Liste von mindestens 4 verkettetten Events fest vorgegeben werden (muss nicht eingelesen werden). */ int main() { event_t event_four( "foobarbaz", 2000, 2000 ); event_t event_three( "foobar", 1000, 0, &event_four ); event_t event_two( "bar", 5000, 4500, &event_three ); event_t event_one( "foo", 10000, 0, &event_two ); std::cout << "event_two:\n"; print_event( event_two ); std::cout << "\nEvent list:\n"; print_event_list( event_one ); std::cout << "\nEvent list sellout:\n"; print_event_list_sellout( event_one ); }Ich hoffe ihr könnt mir bei der beseitigung des Problems helfen.
Danke für eure Geduld und hilfe.
-
Was machst du eigentlich, wenn der Lehrer von dir erklärt haben will, wie das Programm funktioniert?
-
Ich weiß es nicht, aber hoffentlich nimmt er es auf.^^
Entweder NULL oder nullptr, Kevin.
-
C:\\12\main.cpp|16|error: 'null' was not declared in this scope|
C:\\12\main.cpp||In function 'int main()':|
C:\
\12\main.cpp|82|error: call to 'event_t::event_t(const string&, unsigned int, unsigned int, event_t*)' uses the default argument for parameter 4, which is not yet defined|Das schöne an Compilern ist, dass sie dir teilweise völlig eindeutige Fehlermeldungen liefern. Merke: Der Compiler hat immer Recht (außer es ist VC++)!
Und du benutzt CodeBlocks (mit MinGW?)'null' was not declared in this scope
Es gibt
NULL(Makro aus der C-Standardbibliothek, achte auf die Großschreibung),nullptr(Objekt des Typsnullptr_t, Teil der C++11-Standardbibliothek).
Welches meinst du?
-
Ja danke leute ich habe einfach= 0 eingesetzt und es funktioniert.
Gibt es keinen leichteren weg diese Aufgabe zu lösen damit man es versteht?
Weil so bringt ja nicht viel
-
Weiss jemand wie ich die Aufgabe ein wenig einfacher lösen könnte zumindest den Anfangs teil de Aufgabe?
-
...
-
Hallo swordfish kannst du mir nicht bitte helfen und wenigstens einen kleinen Ansatz zu den zwei Funktionen am Anfang geben den Rest mache ich dann alleine. Zumindest versuche ich es.
Ich versteh gar nicht wie ich eine liste von Events erstellen kann. Daher frage ich auch nach einem einfachen Code.
-
Kevin23 schrieb:
[...] helfen [...]
Besorg dir das oder das irgendwoher. Was auch immer gut kommt: Im Unterricht aufpassen.