enum, struct, und Ausgabe



  • Guten Abend liebe Community,

    vielleicht hat jemand auf die schnelle einen nützlichen Tip parat.

    Ich habe verschiedene Vertragstypen (bspw. ein Fernsehabo - ist für die Fragestellung erstmal egal), die ich in einem enum zusammengefasst habe.

    Im struct habe ich dann alle Daten gebündelt, die für einen Vertrag relevant sind (Grundgebuehr, Preis_pro_Minute, etc... - spielt auch erstmal keine Rolle :-)).

    Dann habe ich eine 'Vertragsdatenbank' mit 5 Verträgen erstellt und initial befüllt, in etwa so:

    struct Vertrag Vertragsdatenbank [5] = {
    {10, 5 ,Ohne_Bindung},
    {50, 1, Mit_Bindung}
    ...

    Bis hier ist alles fein!

    Jetzt möchte ich für jeden Vertrag die Kosten nach 10 (20, 30 ... , 250) Minuten berechnen. Das habe ich wie folgt realisiert:

    float Ausgabe [25];
    
    for (int i = 0; i < 5; i++)
        for (int j = 1; j <= 25; j++)
        {
            Ausgabe[j] = Vertragsdatenbank[i].Preis_pro_Minute*j*10;
            cout << "Monatliche Kosten bei " << j*10 << " Minuten: " << Ausgabe [j] << " €" << endl;
        }
    

    Auch das funktioniert, die äussere Schleife durchläuft die Verträge in der Vertragsdatenbank und die innere Schleife gibt die monatlichen Kosten bis 250 min. aus, aber ... und jetzt komme ich zu meiner Frage, wie bekomme ich eine Ausgabe JE Vertrag hin? Ich steh voll auf dem Schlauch und komme hier einfach nicht mehr weiter. Wahrscheinlich ist die Antwort zu simpel 😃

    Vorab danke für eure Unterstützung!


  • Mod

    Deine innere Schleife hat ja ein paar { }, damit du mehrere Befehle im Schleifenkörper haben kannst (hier deine Rechnung und deine Ausgabe in Zeilen 6 und 7). Das gleiche kannst du selbstverständlich auch bei der äußeren Schleife machen, so dass du dann mehrere Befehle in dieser abarbeiten kannst, beispielsweise deine innere Schleife und eine zusätzliche Ausgabe.



  • @SeppJ Verstanden! Probiers gleich aus...



  • @MaBa79 Das Array Ausgabe hat 25 Elemente, die mit 0 bis 24 indiziert sind.

    Da dein Index von 1 bis 25 läuft, verletzt du die Arraygrenzen



  • @DirkB richtig, das löse ich dann so:

            Ausgabe[j-1] = Vertragsdatenbank[i].Preis_jede_weitere_Minute*j*10;
    

    ... , da ich den Zähler zur Berechnung (*) benötige und 0 wäre blöd.. 🙂



  • @MaBa79 Kannst du machen. Aber (meiner Ansicht nach) solltest du den index von deinen Minuten trennen. Etwaa´ so

    for (int j = 0; j < 25; j++) {
         int minutes = (j + 1) * 10;        
         Ausgabe[j] = Vertragsdatenbank[i].Preis_pro_Minute*minutes;
         cout << "Monatliche Kosten bei " << minutes << " Minuten: " << Ausgabe [j] << " €" << endl;
    }
    ``
    Liest sich schöner, vor allem wenns komplizierter wird.



Anmelden zum Antworten