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


  • Mod

    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?


  • Mod

    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.534
    

    Das 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...


  • Mod

    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


Anmelden zum Antworten