Zahlenschleife



  • Hallo!

    ich hab ein Problem das mich seit über ner Stunde "quält".

    Ich möchte das meine eingegebene Zahl X (z.b. 20) immer mit einem festgelegten Schritt Y (z.b. 0.5)subtrahiert.

    Z.b.
    20-0.5=19.5
    19.5-0.5=19.0
    19.0-0.5=18.5
    18.5-0.5=18

    es sollte immer die fertige Zahl ausgegeben werden (19.5,19,18.5,18,....) usw.

    Brauche dies für meine Tabellenausgabe, die habe ich schon komplett fertig, jetzt komm ich zum Tabellenfüllen mit Zahlen.

    Schönen Tag noch,

    C++Neuling



  • Wo ist dein Ansatz?
    Und wo das Problem?



  • #include <iostream>
    
    template < typename value, typename deduction >
    void linearDepreciation( value v, deduction d )
    {
        while( v != 0 )
        {
            v -= d;
            if( v < 0 )
                v = 0;
            std::cout << v << " ";
        }
    }
    
    int main()
    {
        float value = 20;
        float deducation = 0.5;
        linearDepreciation(value, deducation);
    }
    


  • Danke für die schnellen Antworten, mein Ansatz ist eine typische do-while Schleife:

    int Zahl;    //Kleinere Zahl
        int Endzahl; //Größere Zahl
        int Schritte; //Schritte
        printf("Bitte Ihre Anfangszahl eingeben:");
        cin >> Zahl;
        printf ("Bitte Ihre Endzahl eingeben:");
        cin >> Endzahl;
        printf ("Bitte die Schrittweite eingeben:");
        cin >> Schritte;
        int g=Zahl;
        int h=Endzahl;
        int i=Schritte;
        int abc;
    
    do
    {abc=h-i;
    i--;
    }
    while (abc<=g);
    

    Das Ergebniss wird zu einem späteren Zeitpunkt über ausgegeben (printf), jedoch kommt immer die selbe Zahl heraus.

    Nochmals, danke für den Ansatz!!



  • ähm, dass ist C! womit lernst du C++?

    1. Die Values sind alle nicht initialisiert und haben somit einen zufälligen Wert.

    2. Printf ist einen C Funktion, in C++ benutzt man(n) cout. Beispiel:

    cout << "hallo"
    

    3. Wo ist die main() funktion ? 😃

    4. benutz keine neue Variable um denn Wert abzuspeichern. Beispiel:

    int value = 12;
    int minus = 1;
    //so
    value -= minus;
    //oder so
    value = value - minus;
    


  • Hallo

    ja ich mach's mit C++, ich weiß das cout Standart ist aber wir sollten womöglich printf benutzen (ist aber letztendlich ziemlich egal), natürlich hab ich auch int main(), war ja nur ein Ausschnitt.

    Zurück zum Problem:

    Hab jetzt:

    do
        {
            Endzahl-=Schritte;
            Schritte--;
        }
        while (Zahl<=Endzahl);
    

    Wenn ich jetzt für "Endzahl" z.b. 20, fur "Zahl" 10 und für "Schritte" 0.5 eingebe, bekomme ich noch immer nicht das gewünschte Ergebnis, nämlich das "er" in 0.5er Schritten von 20 nach 10 runterzählt.



  • template < typename value, typename deduction > 
    void linearDepreciation( value v, deduction d ) 
    { 
        while( v != 0 ) 
        { 
            v -= d; 
            if( v < 0 ) 
                v = 0; 
            std::cout << v << " "; 
        } 
    }
    

    Das geht schöner.

    template < typename valueT >
    void linearDepreciation( valueT val, valueT deduction ) //Wozu verschiedene Typen möglich machen?
    { 
        for(; val > 0 ; val -= deduction ) //Wozu alles mit der Bedingung so kompliziert?
            std::cout << val << ' ';
    }
    


  • Ich denke ich habe die Lösung nun gefunden, danke nochmals!



  • Danke sone, so lerne ich auch was dabei 🙂



  • Bei dir ist Schritte ein int. Eine Ganzzahl. Die kann nicht 0.5 sein.

    Und Schritte solltest du auch nicht verändern (z.B. mit Schritte--)

    do
        {
            Zahl+=Schritte;
            Ausgabe von Zahl
        }
        while (Zahl<=Endzahl);
    

Anmelden zum Antworten