Wie kommt es zu dieser Ausgabe und wo liegt der Fehler?
-
Hallo zusammen,
ich habe den folgenden Code :
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#include <iostream>
using namespace std;int main()
{struct Dieseltyp
{ float liter ;
float preisproliter;
};double GesamtDiesel;
float Dieselpreis;
float Oelmenge;
float Gesamtkosten;
float Reifenkosten;
float Reperaturkosten;
float Versicherungskosten;
float KfZSteuer;cout << "Oelmenge :";
cin >> Oelmenge;cout << "Reifenkosten:";
cin >> Reifenkosten;cout << "Reparaturkosten:";
cin >> Reperaturkosten;cout << "Versicherungskosten:";
cin >> Versicherungskosten;cout << "KfZ-Steuer:";
cin >> KfZSteuer;float Oelpreis = 5.67;
Dieseltyp Diesel [4] = {
(4258.00 , 1.53),
(3987.00 , 1.62),
(4813.00 , 1.57),
(4353.00 , 1.65)};
GesamtDiesel = (Diesel[0].liter + Diesel[1].liter + Diesel[2].liter +
Diesel[3].liter);Dieselpreis = 0.25 * (Diesel[0].preisproliter + Diesel[1].preisproliter +
Diesel[2].preisproliter + Diesel[3].preisproliter) ;Gesamtkosten = (GesamtDiesel*Dieselpreis) + (Oelmenge*Oelpreis) + Reifenkosten + Reperaturkosten + Versicherungskosten + KfZSteuer;
cout<<"Gesamtkosten:" << Gesamtkosten;
system ("pause");
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Aber: Das Ergebnis ist doch irgendwie nicht ganz das, was es sein sollte..?
Das Ziel ist ja: Die einzelnen Dieselliterwerte zu einem durchschnittlichem "preisproliter" zu berechnen.mhh.... Hilfe !
Wo liegt der Fehler?Vielen Dank für Eure Mühe und liebe Grüße
KaTinka
-
Verwende bitte die cpp-Tags (links unter den Smileys), dann liest sich vielleicht sogar jemand dein Programm durch. Ich mache das mal beim ersten Mal für dich:
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #include <iostream> using namespace std; int main () { struct Dieseltyp { float liter; float preisproliter; }; double GesamtDiesel; float Dieselpreis; float Oelmenge; float Gesamtkosten; float Reifenkosten; float Reperaturkosten; float Versicherungskosten; float KfZSteuer; cout << "Oelmenge :"; cin >> Oelmenge; cout << "Reifenkosten:"; cin >> Reifenkosten; cout << "Reparaturkosten:"; cin >> Reperaturkosten; cout << "Versicherungskosten:"; cin >> Versicherungskosten; cout << "KfZ-Steuer:"; cin >> KfZSteuer; float Oelpreis = 5.67; Dieseltyp Diesel[4] = { (4258.00, 1.53), (3987.00, 1.62), (4813.00, 1.57), (4353.00, 1.65) }; GesamtDiesel = (Diesel[0].liter + Diesel[1].liter + Diesel[2].liter + Diesel[3].liter); Dieselpreis = 0.25 * (Diesel[0].preisproliter + Diesel[1].preisproliter + Diesel[2].preisproliter + Diesel[3].preisproliter); Gesamtkosten = (GesamtDiesel * Dieselpreis) + (Oelmenge * Oelpreis) + Reifenkosten + Reperaturkosten + Versicherungskosten + KfZSteuer; cout << "Gesamtkosten:" << Gesamtkosten; system ("pause"); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Sieht doch gleich viel schöner aus
. Und jetzt gucke ich mir mal an, was da falsch läuft.
-
Wenn du den durchschnittlichen Preis pro Liter haben willst, wieso errechnest du ihn nirgendwo?
-
Also wenn ich dein Programm laufen lasse, bekomme ich (beispielsweise) folgende Ausgabe:
Oelmenge :100 Reifenkosten:100 Reparaturkosten:100 Versicherungskosten:100 KfZ-Steuer:100 sh: pause: not found Gesamtkosten:969.534Das ist auch genau das, was ich vom Programmcode her erwarten würde. Was erwartest du denn?
-
Die Initialisierung deiner Diesel-Objekte geht voll schief.
Und wenn du für dich komiusche Werte erhältst musst du da ansetzen wo dir was komisch vorkommt...
Z.B. so:cout << Diesel[0].liter << " " << Diesel[0].preisproliter << endl;Gib den Diesel-Struct nen Konstruktor und es passt...
-
l'abra d'or schrieb:
Gib den Diesel-Struct nen Konstruktor und es passt...
Es reicht auch, die Klammern richtig zu setzen:
Dieseltyp Diesel[4] = { {4258.00, 1.53}, {3987.00, 1.62}, {4813.00, 1.57}, {4353.00, 1.65} };So funktioniert es und diese Art der Initialisierung müsste auch durch den Standard gedeckt sein.
Die Moral von der Geschichte: Geschweifte Klammern, nicht runde Klammern für die Initialisierung von Arrays.
-
Hallo ,
@ SeppJ: Die geschweiften Klammern sind die Lösung, DANKE!!!
!!!Werde in Zukunft auch die CPP-Tags mitreinpasten. Bin Anfängerin, sorry.
Aber klar, ja, das ist sinnvoll.Allen anderen auch schönen Dank für die Antworten

Viele Grüße
KaTinka