Hilfe bei Vektoren
-
Hallo, ich habe eine Tabelle mit verschiedenen Handyverträgen die verschiedene Eigenschaften(Freiminuten, preis pro Minute etc) haben, ich soll jetzt für jeden Vertrag mit 10 - 250 Minuten im Monat den Preis ausrechenen.
Die Aufgabenstellung sagt keine Arrays oder globalen Variablen (außer Konstanten).Bisher habe ich folgendes:
struct Vertrag { int grundGebühr; int inklusivMin; float preisJedeMin; }OhneBindung, Super30, Super50, Super100, Super250; //Vertragsnamen void calculateCost(Vertrag OhneBindung, vector <float> &OhneBindungPreis) { float preis = 0; for (int i = 10; i <= maxTime; i = i + 10) { preis = 0; preis = preis + OhneBindung.grundGebühr; preis = i * OhneBindung.preisJedeMin; //cout << "Monatliche Kosten bei " << i << " Minuten sind: " << preis << endl; OhneBindungPreis.push_back(preis); } } void printVector(vector <float> &OhneBindungPreis) { int Minuten = 0; for (int i : OhneBindungPreis) { Minuten = Minuten + 10; cout << "Monatliche Kosten bei " << Minuten << " Minuten sind: " << i << endl; } }In der main initialisiere ich meine Structs & Vectoren.
Jetzt müsste ich aber die Funktionen calculateCost & printVector für jedes struct/vector neu schreiben weil ich ja verschiedene Vektoren/structs übergebe.Aaaaaber, es ist im Prinzip ja immer die selbe Funktionsweise nur ändern sich da eben nur Variablen vom Struct und der Vektor heißt anders.
Ich bin mir sicher das geht eleganter, schlanker nur wüsste ich nicht wie.
Lg
-
Ich seh jetzt nicht wirklich deine Frage. Geb den Variablen doch einfach allgemeine Namen wie etwa
void calculateCost(Vertrag vertrag, vector<float>& preis)Gibt es einen Grund warum du den vector nicht als Rückgabewert nimmst? Das struct könnte man auch besser per const Referenz übergeben:
vector<float> calculateCost(const Vertrag& vertrag)
-
Obligatorischer Hinweis, dass Fließkommazahlen von den eingebauten Datentypen wohl die schlechteste Wahl zur Modellierung von Geld sind. Benutz etwas, das die diskrete Natur von Geld widerspiegelt, beispielsweise Ganzzahlen.