fehlerhafter Zugriff auf String-Vector[i]
-
Servus Progger,
ich möchte gerne auf den Inhalt von "std::vectorstd::string kategorie" an der Stelle [i] mit printf oder cout zugreifen. Leider erhalte ich immer eine Felhermeldung an dieser Stelle:printf("in Kategorie: %s %2.2lf \n", kategorie.at(i) , kategoriebetrag[i]);Fehlermeldung: 191 [Warning] cannot pass objects of non-POD type `struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >' through `...'; call will abort at runtime
#include <cstdlib> #include <iostream> #include <string> #include <vector> // Ausgaben als Datenstruktur struct Ausgaben { std::string kategorie; std::string monat; int nummer; double betrag; double monatsbetrag; }; double monatsbetrag[12]; double kategoriebetrag[8]; int monate[13]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; std::vector<std::string> kategorie; // Grundgerüst class AusgabenListe { // Definition eines Listenelements class Listenelement { public: // Konstruktor Listenelement(Ausgaben ausgaben) { this->ausgaben.nummer = ausgaben.nummer; this->ausgaben.monat = ausgaben.monat; this->ausgaben.kategorie = ausgaben.kategorie; this->ausgaben.betrag = ausgaben.betrag; this->ausgaben.monatsbetrag = ausgaben.monatsbetrag; this->nachfolger = NULL; } // Das sind die Daten die wir verwalten wollen ( Datenbereich) Ausgaben ausgaben; // Zeiger auf den Nachfolger ( Zeiger) Listenelement *nachfolger; }; // Listenkopf Listenelement* kopf; // Listenende Listenelement* ende; public: // Konstruktor AusgabenListe(void) { kopf = ende = NULL; } // Destruktor ~AusgabenListe() { } // einen Ausgaben in die Liste einfügen void hinzufuegen(Ausgaben ausgaben) { // Ein neues Listenelement erstellen und mit 'ausgaben' initialisieren Listenelement *neuesListenelement = new Listenelement(ausgaben); // liste ist leer if(istLeer()) ende = kopf = neuesListenelement; else { // das letzte Element zeigt auf das neue Element ende->nachfolger = neuesListenelement; // das neue Element wird zum Letzten ende = neuesListenelement; } } // prüft ob die Liste leer ist bool istLeer() { return (kopf == NULL) ? true : false; } // Liste löschen void loeschen(void) { if(istLeer()) return; // solange der Zeiger nicht Null ist, also noch Elemente vorhanden sind... while(kopf->nachfolger != NULL) { // ...suche das vorletzte ELement Listenelement *vorletztesElement = kopf; while(vorletztesElement->nachfolger != ende) { vorletztesElement = vorletztesElement->nachfolger; } // lösche das letzte Element delete ende; // das vorletzte Element wird zum Letzten vorletztesElement->nachfolger = NULL; ende = vorletztesElement; } // zuletzt noch den Listenkopf löschen delete kopf; } // zeigt alle Listenelemente void elementeAnzeigen(void) { // aktueller Knoten Listenelement *p = kopf; // solange der Knoten nicht Null ist, also das Ende nicht erreicht ist... while(p != NULL) { // ...Inhalt ausgeben std::cout << "kategorie: "<< p->ausgaben.kategorie.c_str() << " monat: " << p->ausgaben.monat << " betrag: " << p->ausgaben.betrag << " nummer: " << p->ausgaben.nummer << std::endl; // der Nachfolger wird zum aktuellen Knoten p = p->nachfolger; } } //auswerten der Datensätze aus den Listenelement void auswerten1(void) { // aktueller Knoten Listenelement *p = kopf; while(p != NULL) { // ...Inhalt ausgeben if(p->ausgaben.monat=="Januar") monatsbetrag[0]=monatsbetrag[0]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Februar") monatsbetrag[1]=monatsbetrag[1]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="März") monatsbetrag[2]=monatsbetrag[2]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="April") monatsbetrag[3]=monatsbetrag[3]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Mai") monatsbetrag[4]=monatsbetrag[4]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Juni") monatsbetrag[5]=monatsbetrag[5]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Juli") monatsbetrag[6]=monatsbetrag[6]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="August") monatsbetrag[7]=monatsbetrag[7]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="September") monatsbetrag[8]=monatsbetrag[8]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Oktober") monatsbetrag[9]=monatsbetrag[9]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="November") monatsbetrag[10]=monatsbetrag[10]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Dezember") monatsbetrag[11]=monatsbetrag[11]+ p->ausgaben.betrag; // der Nachfolger wird zum aktuellen Knoten p = p->nachfolger; } for(int i=0; i<=11; i++) { printf("im Monat: %d %2.2lf \n", monate[i], monatsbetrag[i]); if(monatsbetrag[i]>500) printf("!!!!!!!!!!! Monatsbudget ueberschritten\n"); } } void auswerten2(void) { // aktueller Knoten Listenelement *p = kopf; while(p != NULL) { // ...Inhalt ausgeben if(p->ausgaben.kategorie=="Urlaub"){ kategoriebetrag[0]=kategoriebetrag[0] +p->ausgaben.betrag; kategorie.push_back("Urlaub");} else if(p->ausgaben.kategorie=="Tanken"){ kategoriebetrag[1]=kategoriebetrag[1] +p->ausgaben.betrag; kategorie.push_back("Tanken");} else if(p->ausgaben.kategorie=="Miete"){ kategoriebetrag[2]=kategoriebetrag[2] +p->ausgaben.betrag; kategorie.push_back("Miete");} else if(p->ausgaben.kategorie=="Kleidung"){ kategoriebetrag[3]=kategoriebetrag[3] +p->ausgaben.betrag; kategorie.push_back("Kleidung");} else if(p->ausgaben.kategorie=="Sex"){ kategoriebetrag[3]=kategoriebetrag[3] +p->ausgaben.betrag; kategorie.push_back("Sex");} else if(p->ausgaben.kategorie=="Kino"){ kategoriebetrag[3]=kategoriebetrag[3] +p->ausgaben.betrag; kategorie.push_back("Kino");} // der Nachfolger wird zum aktuellen Knoten p = p->nachfolger; } for(int i=0; i<kategorie.size(); i++) { printf("in Kategorie: %s %2.2lf \n", kategorie.at(i) , kategoriebetrag[i]); } } }; int main() { int i=0; // Beispielsätze Ausgaben ausgaben, ausgaben1, ausgaben2, ausgaben3, ausgaben4, ausgaben5, ausgaben6, ausgaben7, ausgaben8, ausgaben9, ausgaben10, ausgaben11; ausgaben.kategorie = "Miete"; ausgaben.monat = "Januar"; ausgaben.nummer = 10; ausgaben.betrag= 10; ausgaben1.kategorie = "Tanken"; ausgaben1.monat = "Januar"; ausgaben1.nummer = 1; ausgaben1.betrag= 40; ausgaben2.kategorie = "Kleidung"; ausgaben2.monat = "Februar"; ausgaben2.nummer = 4; ausgaben2.betrag= 100; ausgaben3.kategorie = "Tanken"; ausgaben3.monat = "Februar"; ausgaben3.nummer = 2; ausgaben3.betrag= 150; ausgaben4.kategorie = "Urlaub"; ausgaben4.monat = "April"; ausgaben4.nummer = 5; ausgaben4.betrag= 503; ausgaben5.kategorie = "Miete"; ausgaben5.monat = "Mai"; ausgaben5.nummer = 6; ausgaben5.betrag= 10; ausgaben6.kategorie = "Tanken"; ausgaben6.monat = "April"; ausgaben6.nummer = 7; ausgaben6.betrag= 40; ausgaben7.kategorie = "Kleidung"; ausgaben7.monat = "April"; ausgaben7.nummer = 3; ausgaben7.betrag= 100; ausgaben8.kategorie = "Tanken"; ausgaben8.monat = "Juli"; ausgaben8.nummer = 7; ausgaben8.betrag= 130; ausgaben9.kategorie = "Urlaub"; ausgaben9.monat = "April"; ausgaben9.nummer = 9; ausgaben9.betrag= 106; ausgaben10.kategorie = "Urlaub"; ausgaben10.monat = "Dezember"; ausgaben10.nummer = 10; ausgaben10.betrag= 56; ausgaben11.kategorie = "Sex"; ausgaben11.monat = "Novenmber"; ausgaben11.nummer =13; ausgaben11.betrag= 56; AusgabenListe ausgabene; ausgabene.hinzufuegen(ausgaben); ausgabene.hinzufuegen(ausgaben1); ausgabene.hinzufuegen(ausgaben2); ausgabene.hinzufuegen(ausgaben3); ausgabene.hinzufuegen(ausgaben4); ausgabene.hinzufuegen(ausgaben5); ausgabene.hinzufuegen(ausgaben6); ausgabene.hinzufuegen(ausgaben7); ausgabene.hinzufuegen(ausgaben8); ausgabene.hinzufuegen(ausgaben9); ausgabene.hinzufuegen(ausgaben10); ausgabene.hinzufuegen(ausgaben11); ausgabene.elementeAnzeigen(); ausgabene.auswerten1(); ausgabene.auswerten2(); ausgabene.loeschen(); std::cin.get(); return 0; }
-
Ich glaub mal, dass
%seinen C-String erwartet. Stattdessen übergibst du aber ein c++schesstd::string. Und dein Compiler checkt das in der Compile-Zeit.
-
Warum benutzt du nicht cout?
-
Fehlermeldung beo COUT:
main.cpp: In member function `void AusgabenListe::auswerten2()': main.cpp:193: error: `cout' undeclared (first use this function) main.cpp:193: error: (Each undeclared identifier is reported only once for each function it appears in.) main.cpp:193: error: expected `;' before ')' token#include <cstdlib> #include <iostream> #include <string.h> #include <vector> #include <stdio.h> // Ausgaben als Datenstruktur struct Ausgaben { std::string kategorie; std::string monat; int nummer; double betrag; double monatsbetrag; }; double monatsbetrag[12]; double kategoriebetrag[8]; int monate[13]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; std::vector<std::string> kategorie; // Grundgerüst class AusgabenListe { // Definition eines Listenelements class Listenelement { public: // Konstruktor Listenelement(Ausgaben ausgaben) { this->ausgaben.nummer = ausgaben.nummer; this->ausgaben.monat = ausgaben.monat; this->ausgaben.kategorie = ausgaben.kategorie; this->ausgaben.betrag = ausgaben.betrag; this->ausgaben.monatsbetrag = ausgaben.monatsbetrag; this->nachfolger = NULL; } // Das sind die Daten die wir verwalten wollen ( Datenbereich) Ausgaben ausgaben; // Zeiger auf den Nachfolger ( Zeiger) Listenelement *nachfolger; }; // Listenkopf Listenelement* kopf; // Listenende Listenelement* ende; public: // Konstruktor AusgabenListe(void) { kopf = ende = NULL; } // Destruktor ~AusgabenListe() { } // einen Ausgaben in die Liste einfügen void hinzufuegen(Ausgaben ausgaben) { // Ein neues Listenelement erstellen und mit 'ausgaben' initialisieren Listenelement *neuesListenelement = new Listenelement(ausgaben); // liste ist leer if(istLeer()) ende = kopf = neuesListenelement; else { // das letzte Element zeigt auf das neue Element ende->nachfolger = neuesListenelement; // das neue Element wird zum Letzten ende = neuesListenelement; } } // prüft ob die Liste leer ist bool istLeer() { return (kopf == NULL) ? true : false; } // Liste löschen void loeschen(void) { if(istLeer()) return; // solange der Zeiger nicht Null ist, also noch Elemente vorhanden sind... while(kopf->nachfolger != NULL) { // ...suche das vorletzte ELement Listenelement *vorletztesElement = kopf; while(vorletztesElement->nachfolger != ende) { vorletztesElement = vorletztesElement->nachfolger; } // lösche das letzte Element delete ende; // das vorletzte Element wird zum Letzten vorletztesElement->nachfolger = NULL; ende = vorletztesElement; } // zuletzt noch den Listenkopf löschen delete kopf; } // zeigt alle Listenelemente void elementeAnzeigen(void) { // aktueller Knoten Listenelement *p = kopf; // solange der Knoten nicht Null ist, also das Ende nicht erreicht ist... while(p != NULL) { // ...Inhalt ausgeben std::cout << "kategorie: "<< p->ausgaben.kategorie.c_str() << " monat: " << p->ausgaben.monat << " betrag: " << p->ausgaben.betrag << " nummer: " << p->ausgaben.nummer << std::endl; // der Nachfolger wird zum aktuellen Knoten p = p->nachfolger; } } //auswerten der Datensätze aus den Listenelement void auswerten1(void) { // aktueller Knoten Listenelement *p = kopf; while(p != NULL) { // ...Inhalt ausgeben if(p->ausgaben.monat=="Januar") monatsbetrag[0]=monatsbetrag[0]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Februar") monatsbetrag[1]=monatsbetrag[1]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="März") monatsbetrag[2]=monatsbetrag[2]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="April") monatsbetrag[3]=monatsbetrag[3]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Mai") monatsbetrag[4]=monatsbetrag[4]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Juni") monatsbetrag[5]=monatsbetrag[5]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Juli") monatsbetrag[6]=monatsbetrag[6]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="August") monatsbetrag[7]=monatsbetrag[7]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="September") monatsbetrag[8]=monatsbetrag[8]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Oktober") monatsbetrag[9]=monatsbetrag[9]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="November") monatsbetrag[10]=monatsbetrag[10]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Dezember") monatsbetrag[11]=monatsbetrag[11]+ p->ausgaben.betrag; // der Nachfolger wird zum aktuellen Knoten p = p->nachfolger; } for(int i=0; i<=11; i++) { printf("im Monat: %d %2.2lf \n", monate[i], monatsbetrag[i]); if(monatsbetrag[i]>500) printf("!!!!!!!!!!! Monatsbudget ueberschritten\n"); } } void auswerten2(void) { // aktueller Knoten Listenelement *p = kopf; while(p != NULL) { // ...Inhalt ausgeben if(p->ausgaben.kategorie=="Urlaub"){ kategoriebetrag[0]=kategoriebetrag[0] +p->ausgaben.betrag; kategorie.push_back("Urlaub");} else if(p->ausgaben.kategorie=="Tanken"){ kategoriebetrag[1]=kategoriebetrag[1] +p->ausgaben.betrag; kategorie.push_back("Tanken");} else if(p->ausgaben.kategorie=="Miete"){ kategoriebetrag[2]=kategoriebetrag[2] +p->ausgaben.betrag; kategorie.push_back("Miete");} else if(p->ausgaben.kategorie=="Kleidung"){ kategoriebetrag[3]=kategoriebetrag[3] +p->ausgaben.betrag; kategorie.push_back("Kleidung");} else if(p->ausgaben.kategorie=="Sex"){ kategoriebetrag[3]=kategoriebetrag[3] +p->ausgaben.betrag; kategorie.push_back("Sex");} else if(p->ausgaben.kategorie=="Kino"){ kategoriebetrag[3]=kategoriebetrag[3] +p->ausgaben.betrag; kategorie.push_back("Kino");} // der Nachfolger wird zum aktuellen Knoten p = p->nachfolger; } for(int i=0; i<kategorie.size(); i++) { //printf("in Kategorie: %s %2.2lf \n", kategorie.at(i) , kategoriebetrag[i]); cout<<kategorie.at(i); cout<<kategoriebetrag[i])<<endl; } } }; int main() { int i=0; // Beispielsätze Ausgaben ausgaben, ausgaben1, ausgaben2, ausgaben3, ausgaben4, ausgaben5, ausgaben6, ausgaben7, ausgaben8, ausgaben9, ausgaben10, ausgaben11; ausgaben.kategorie = "Miete"; ausgaben.monat = "Januar"; ausgaben.nummer = 10; ausgaben.betrag= 10; ausgaben1.kategorie = "Tanken"; ausgaben1.monat = "Januar"; ausgaben1.nummer = 1; ausgaben1.betrag= 40; ausgaben2.kategorie = "Kleidung"; ausgaben2.monat = "Februar"; ausgaben2.nummer = 4; ausgaben2.betrag= 100; ausgaben3.kategorie = "Tanken"; ausgaben3.monat = "Februar"; ausgaben3.nummer = 2; ausgaben3.betrag= 150; ausgaben4.kategorie = "Urlaub"; ausgaben4.monat = "April"; ausgaben4.nummer = 5; ausgaben4.betrag= 503; ausgaben5.kategorie = "Miete"; ausgaben5.monat = "Mai"; ausgaben5.nummer = 6; ausgaben5.betrag= 10; ausgaben6.kategorie = "Tanken"; ausgaben6.monat = "April"; ausgaben6.nummer = 7; ausgaben6.betrag= 40; ausgaben7.kategorie = "Kleidung"; ausgaben7.monat = "April"; ausgaben7.nummer = 3; ausgaben7.betrag= 100; ausgaben8.kategorie = "Tanken"; ausgaben8.monat = "Juli"; ausgaben8.nummer = 7; ausgaben8.betrag= 130; ausgaben9.kategorie = "Urlaub"; ausgaben9.monat = "April"; ausgaben9.nummer = 9; ausgaben9.betrag= 106; ausgaben10.kategorie = "Urlaub"; ausgaben10.monat = "Dezember"; ausgaben10.nummer = 10; ausgaben10.betrag= 56; ausgaben11.kategorie = "Sex"; ausgaben11.monat = "Novenmber"; ausgaben11.nummer =13; ausgaben11.betrag= 56; AusgabenListe ausgabene; ausgabene.hinzufuegen(ausgaben); ausgabene.hinzufuegen(ausgaben1); ausgabene.hinzufuegen(ausgaben2); ausgabene.hinzufuegen(ausgaben3); ausgabene.hinzufuegen(ausgaben4); ausgabene.hinzufuegen(ausgaben5); ausgabene.hinzufuegen(ausgaben6); ausgabene.hinzufuegen(ausgaben7); ausgabene.hinzufuegen(ausgaben8); ausgabene.hinzufuegen(ausgaben9); ausgabene.hinzufuegen(ausgaben10); ausgabene.hinzufuegen(ausgaben11); ausgabene.elementeAnzeigen(); ausgabene.auswerten1(); ausgabene.auswerten2(); ausgabene.loeschen(); std::cin.get(); return 0; } :confused: wie ich bereits gesagt habe, printf und cout funktionieren beide nicht....
-
Header inkludieren
-
Scope-Bezeichner dazuschreiben*
-
std::cout, wie alles andere auch, das nicht aus C kommt (und dafür müsste es eigentlich auch immer eine Deklaration mit std geben). Lass das printf generell weg, wenn du dir nicht in den Fuss schießen willst.
Kein string.h oder stdio.h, dafür aber string inkludieren.
-
Und das, was du eigentlich willst ist nur std::vector<Ausgabe>
-
Jetzt läuft es zwar, aber die ausgabe passt nicht ganz.
ich meine, ich hatte im November Sex für 56 €, stattdessen steht da aber: Miete 56 € und Kleidung 20 €

#include <cstdlib> #include <iostream> #include <string> #include <vector> #include <stdio.h> // Ausgaben als Datenstruktur struct Ausgaben { std::string kategorie; std::string monat; int nummer; double betrag; double monatsbetrag; }; double monatsbetrag[12]; double kategoriebetrag[8]; int monate[13]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; std::vector<std::string> kategorie; // Grundgerüst class AusgabenListe { // Definition eines Listenelements class Listenelement { public: // Konstruktor Listenelement(Ausgaben ausgaben) { this->ausgaben.nummer = ausgaben.nummer; this->ausgaben.monat = ausgaben.monat; this->ausgaben.kategorie = ausgaben.kategorie; this->ausgaben.betrag = ausgaben.betrag; this->ausgaben.monatsbetrag = ausgaben.monatsbetrag; this->nachfolger = NULL; } // Das sind die Daten die wir verwalten wollen ( Datenbereich) Ausgaben ausgaben; // Zeiger auf den Nachfolger ( Zeiger) Listenelement *nachfolger; }; // Listenkopf Listenelement* kopf; // Listenende Listenelement* ende; public: // Konstruktor AusgabenListe(void) { kopf = ende = NULL; } // Destruktor ~AusgabenListe() { } // einen Ausgaben in die Liste einfügen void hinzufuegen(Ausgaben ausgaben) { // Ein neues Listenelement erstellen und mit 'ausgaben' initialisieren Listenelement *neuesListenelement = new Listenelement(ausgaben); // liste ist leer if(istLeer()) ende = kopf = neuesListenelement; else { // das letzte Element zeigt auf das neue Element ende->nachfolger = neuesListenelement; // das neue Element wird zum Letzten ende = neuesListenelement; } } // prüft ob die Liste leer ist bool istLeer() { return (kopf == NULL) ? true : false; } // Liste löschen void loeschen(void) { if(istLeer()) return; // solange der Zeiger nicht Null ist, also noch Elemente vorhanden sind... while(kopf->nachfolger != NULL) { // ...suche das vorletzte ELement Listenelement *vorletztesElement = kopf; while(vorletztesElement->nachfolger != ende) { vorletztesElement = vorletztesElement->nachfolger; } // lösche das letzte Element delete ende; // das vorletzte Element wird zum Letzten vorletztesElement->nachfolger = NULL; ende = vorletztesElement; } // zuletzt noch den Listenkopf löschen delete kopf; } // zeigt alle Listenelemente void elementeAnzeigen(void) { // aktueller Knoten Listenelement *p = kopf; // solange der Knoten nicht Null ist, also das Ende nicht erreicht ist... while(p != NULL) { // ...Inhalt ausgeben std::cout << "kategorie: "<< p->ausgaben.kategorie.c_str() << " monat: " << p->ausgaben.monat << " betrag: " << p->ausgaben.betrag << " nummer: " << p->ausgaben.nummer << std::endl; // der Nachfolger wird zum aktuellen Knoten p = p->nachfolger; } } //auswerten der Datensätze aus den Listenelement void auswerten1(void) { // aktueller Knoten Listenelement *p = kopf; while(p != NULL) { // ...Inhalt ausgeben if(p->ausgaben.monat=="Januar") monatsbetrag[0]=monatsbetrag[0]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Februar") monatsbetrag[1]=monatsbetrag[1]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="März") monatsbetrag[2]=monatsbetrag[2]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="April") monatsbetrag[3]=monatsbetrag[3]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Mai") monatsbetrag[4]=monatsbetrag[4]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Juni") monatsbetrag[5]=monatsbetrag[5]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Juli") monatsbetrag[6]=monatsbetrag[6]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="August") monatsbetrag[7]=monatsbetrag[7]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="September") monatsbetrag[8]=monatsbetrag[8]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Oktober") monatsbetrag[9]=monatsbetrag[9]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="November") monatsbetrag[10]=monatsbetrag[10]+ p->ausgaben.betrag; else if(p->ausgaben.monat=="Dezember") monatsbetrag[11]=monatsbetrag[11]+ p->ausgaben.betrag; // der Nachfolger wird zum aktuellen Knoten p = p->nachfolger; } for(int i=0; i<=11; i++) { printf("im Monat: %d %2.2lf \n", monate[i], monatsbetrag[i]); if(monatsbetrag[i]>500) printf("!!!!!!!!!!! Monatsbudget ueberschritten\n"); } } void auswerten2(void) { // aktueller Knoten Listenelement *p = kopf; while(p != NULL) { // ...Inhalt ausgeben if(p->ausgaben.kategorie=="Urlaub"){ kategoriebetrag[0]=kategoriebetrag[0] +p->ausgaben.betrag; kategorie[0]==("Urlaub");} else if(p->ausgaben.kategorie=="Tanken"){ kategoriebetrag[1]=kategoriebetrag[1] +p->ausgaben.betrag; kategorie.push_back("Tanken");} else if(p->ausgaben.kategorie=="Miete"){ kategoriebetrag[2]=kategoriebetrag[2] +p->ausgaben.betrag; kategorie.push_back("Miete");} else if(p->ausgaben.kategorie=="Kleidung"){ kategoriebetrag[3]=kategoriebetrag[3] +p->ausgaben.betrag; kategorie.push_back("Kleidung");} else if(p->ausgaben.kategorie=="Sex"){ kategoriebetrag[4]=kategoriebetrag[4] +p->ausgaben.betrag; kategorie.push_back("Sex");} else if(p->ausgaben.kategorie=="Kino"){ kategoriebetrag[5]=kategoriebetrag[5] +p->ausgaben.betrag; kategorie.push_back("Kino");} // der Nachfolger wird zum aktuellen Knoten p = p->nachfolger; } for(int i=0; i<kategorie.size(); i++) { std::cout<<kategorie.at(i); std::cout<<kategoriebetrag[i]<<"\n"; } } }; int main() { int i=0; // Beispielsätze Ausgaben ausgaben, ausgaben1, ausgaben2, ausgaben3, ausgaben4, ausgaben5, ausgaben6, ausgaben7, ausgaben8, ausgaben9, ausgaben10, ausgaben11; ausgaben.kategorie = "Miete"; ausgaben.monat = "Januar"; ausgaben.nummer = 10; ausgaben.betrag= 10; ausgaben1.kategorie = "Tanken"; ausgaben1.monat = "Januar"; ausgaben1.nummer = 1; ausgaben1.betrag= 40; ausgaben2.kategorie = "Kleidung"; ausgaben2.monat = "Februar"; ausgaben2.nummer = 4; ausgaben2.betrag= 100; ausgaben3.kategorie = "Tanken"; ausgaben3.monat = "Februar"; ausgaben3.nummer = 2; ausgaben3.betrag= 150; ausgaben4.kategorie = "Urlaub"; ausgaben4.monat = "April"; ausgaben4.nummer = 5; ausgaben4.betrag= 503; ausgaben5.kategorie = "Miete"; ausgaben5.monat = "Mai"; ausgaben5.nummer = 6; ausgaben5.betrag= 10; ausgaben6.kategorie = "Tanken"; ausgaben6.monat = "April"; ausgaben6.nummer = 7; ausgaben6.betrag= 40; ausgaben7.kategorie = "Kleidung"; ausgaben7.monat = "April"; ausgaben7.nummer = 3; ausgaben7.betrag= 100; ausgaben8.kategorie = "Tanken"; ausgaben8.monat = "Juli"; ausgaben8.nummer = 7; ausgaben8.betrag= 130; ausgaben9.kategorie = "Urlaub"; ausgaben9.monat = "April"; ausgaben9.nummer = 9; ausgaben9.betrag= 106; ausgaben10.kategorie = "Urlaub"; ausgaben10.monat = "Dezember"; ausgaben10.nummer = 10; ausgaben10.betrag= 56; ausgaben11.kategorie = "Sex"; ausgaben11.monat = "Novenmber"; ausgaben11.nummer =13; ausgaben11.betrag= 56; AusgabenListe ausgabene; ausgabene.hinzufuegen(ausgaben); ausgabene.hinzufuegen(ausgaben1); ausgabene.hinzufuegen(ausgaben2); ausgabene.hinzufuegen(ausgaben3); ausgabene.hinzufuegen(ausgaben4); ausgabene.hinzufuegen(ausgaben5); ausgabene.hinzufuegen(ausgaben6); ausgabene.hinzufuegen(ausgaben7); ausgabene.hinzufuegen(ausgaben8); ausgabene.hinzufuegen(ausgaben9); ausgabene.hinzufuegen(ausgaben10); ausgabene.hinzufuegen(ausgaben11); ausgabene.elementeAnzeigen(); ausgabene.auswerten1(); ausgabene.auswerten2(); ausgabene.loeschen(); std::cin.get(); return 0; }