017
02.11.2016, 20:54 Uhr
~Julia_w
Gast
|
ich würde jetzt noch gerne die Ausgabe: Monat 1: Miete = 10 ¤; Tanken = 40 ¤ ausgeben. Wie verknüpfe ich den die beiden methoden auswerten(1) und auswerten(2) entsprechend? ich würde gerne eine weitere Methode auswerten(3) hinzufügen, doch komme ich mit der Trennung der Kategorie mit Kategoriebetrag pro Monat in Zuordnungsprobleme.....
C++: |
#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(const 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.at(0)=("Urlaub");} else if(p->ausgaben.kategorie=="Tanken"){ kategoriebetrag[1]=kategoriebetrag[1] +p->ausgaben.betrag; kategorie.at(1)=("Tanken");} else if(p->ausgaben.kategorie=="Miete"){ kategoriebetrag[2]=kategoriebetrag[2] +p->ausgaben.betrag; kategorie.at(2)=("Miete");} else if(p->ausgaben.kategorie=="Kleidung"){ kategoriebetrag[3]=kategoriebetrag[3] +p->ausgaben.betrag; kategorie.at(3)=("Kleidung");} else if(p->ausgaben.kategorie=="Sex"){ kategoriebetrag[4]=kategoriebetrag[4] +p->ausgaben.betrag; kategorie.at(4)=("Sex");} else if(p->ausgaben.kategorie=="Kino"){ kategoriebetrag[5]=kategoriebetrag[5] +p->ausgaben.betrag; kategorie.at(5)=("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 = "November"; ausgaben11.nummer =13; ausgaben11.betrag= 56; // entsprechenden Elemente in den Vector einfügen kategorie.push_back("Urlaub"); kategorie.push_back("Tanken"); kategorie.push_back("Miete"); kategorie.push_back("Kleidung"); kategorie.push_back("Sex"); kategorie.push_back("Kino"); 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; }
|
|