Briefmarkenautomat--> brauche dringend hilfee!!!!



  • hi,

    bin neu in diesem Forum und bin ein Anfänger, was c++ anbelangt.
    Ich muss ein programm schreiben, bei der Ein Briefmarken-Automat die üblichen Postwertzeichen ausgeben soll. Nachdem der Briefmarkentyp ausgewählt wurde , kann der eingeworfene Geldbetrag eingegeben werden. Zur Vereinfachung nimmt der Automat
    nur 2-Euro-Stücke entgegen. Daraufhin wird die Anzahl der ausgegebenen Marken und das Rückgeld berechnet und ausgegeben.

    Ich sitze an der Aufgabe schon seit paar tagen, komme aber zu keinem endgültigen Ergebnis. Ich weiß zwar, dass es mit arrays geht, aber ich weiß nicht wie ich die Auswahl den dazugehörigen preis zuweisen kann. Wenn z.B. die die Auswahl 3 gewählt wird, soll er den dazugehörige Preis zuweisen und die mögliche Menge mittels modulo ausrechnen.

    ---------------------------------------------------------------------------

    #include<iostream.h>
    #include<iomanip.h>
    #include<conio.h>
    #include<math.h>

    class automat
    { public:

    float euro;
    int z;
    float h;
    char auswahl;
    float p[];
    char v1, v2, v3, v4, v5;

    void markentyp_auswaehlen();
    void anzahl_der_verfuegbaren_2_eu_stuecke_eingeben();
    void anzahl_der_marken_berechnen_und_ausgeben();
    void rueckgeld_auszahlen();
    };

    void automat::markentyp_auswaehlen()
    {
    cout<<"Welche Briefmarke wollen sie kaufen: \n" << endl;
    cout << "1 = 45 ct (postkarte)\n"
    << "2 = 55 ct\n"
    << "3 = 90 ct\n"
    << "4 = 145 ct\n"
    << "5 = 220 ct\n\n"
    << "ihre Wahl bitte "; cin >> auswahl;
    cout << endl << endl;
    }

    void automat::anzahl_der_verfuegbaren_2_eu_stuecke_eingeben()
    {
    cout << "der Automat nimmt heute leider nur 2 euro stucke entgegen." << endl
    << "Bitte die Anzahl ihrer verfuegbaren 2 euro stuecke eingeben: "; cin >> euro;

    }

    void automat::anzahl_der_marken_berechnen_und_ausgeben()
    {
    float p[5]={0.45, 0.55, 0.90, 1.45, 2.20};
    char v1='1', v2='2', v3='3', v4='4', v5='5';

    if(auswahl==v1) {h=euro2/p[0]; cout << "sie erhalten " << h << " zu " << p[0] << endl;}
    else if (auswahl==v2) {h=euro
    2/p[1]; cout << "sie erhalten " << h << " zu " << p[1] << endl;}
    else if(auswahl==v3) {h=euro2/p[2]; cout << "sie erhalten " << h << " zu " << p[2] << endl;}
    else if(auswahl==v4) {h=euro
    2/p[3]; cout << "sie erhalten " << h << " zu " << p[3] << endl;}
    else if(auswahl==v5) {h=euro*2/p[4]; cout << "sie erhalten " << h << " zu " << p[4] << endl;}
    else cout << endl;

    }
    void automat::rueckgeld_auszahlen()
    {

    }

    int main()
    {

    automat briefmarken;
    briefmarken.markentyp_auswaehlen();
    briefmarken.anzahl_der_verfuegbaren_2_eu_stuecke_eingeben();
    briefmarken.anzahl_der_marken_berechnen_und_ausgeben();
    briefmarken.rueckgeld_auszahlen();

    cout<<"\n\nProgrammende...\n";
    cin.get();cin.get(); return(0);
    }



  • Wenn du Hilfe benötigst, solltest du nicht so viele Ausrufezeichen eingeben, sondern deine Frage verständlich formulieren.

    Wenn ich deine Frage richtig verstehe, möchtest du die Nachkommastellen los werden:

    "sie erhalten 17.7778 zu 0.45"

    soll zu

    "sie erhalten 17 zu 0.45"

    werden. Dazu musst du nur die Definition von "float h" nach "int h" ändern.

    Warum benutzt du iostream.h und iomanip.h? Das ist uralt (vor 1998). Aktuelle Compiler verwenden iostream und iomanip ohne ".h".



  • hi,

    bin grad unter stress, weil ich am dienstag die c++ klausur schreibe. Es tut mir leid, dass die Frage nicht verständlich ausgedrückt ist. Meine Frage ist, wie kann das Programm mit array schreiben. Programm soll so funktionieren:

    -----------------------------------------------------------------------------------------------------------------

    Welche Brifmarke wollen sie:

    1 = 45 ct (postkarte)
    2 = 55 ct (standardbrief)
    3 = 90 ct (kompaktbrief)
    4 = 145 ct (großbrief)
    5 = 220 ct (maxibrief)

    ihre Wahl bitte: ....... (bspw. 3) //wahl zwischen 1 bis 5

    Der Automat nimmt heute leider nur 2 euro stucke entgegen.

    Bitte die Anzahl ihrer verfuegbaren 2 euro stuecke eingeben: (bspw. 4)

    Sie erhalten (bspw. 😎 Marken zu (bwsp. 0.9 ct)

    Ihr Rückgeld beträgt (bspw. 0.8 ct)

    ------------------------------------------------------------------------------------------------------------------

    Mein Ansatz war mit if else Bedingungen, aber ist sehr lästig und man baut leicht fehler ein.
    Es soll aber auch mit array funktionieren können. Ich weiß nicht wie ich die Auswahl einen Wert zuweisen kann(z.B. zu der Auswahl 3 soll der preis o.9 ct zugewiesen werden)

    Danke für die schnelle antwort



  • Du meinst das?

    void automat::anzahl_der_marken_berechnen_und_ausgeben()
    {
      float p[5]={0.45, 0.55, 0.90, 1.45, 2.20};
    
      h=euro*2/p[auswahl - 1]; cout << "sie erhalten " << h << " zu " << p[auswahl-1] << endl;
    }
    

    auswahl muss dann als int und nicht als char definiert werden


Anmelden zum Antworten