Schleifen und andere dinge



  • hi
    sorry wenn das nicht der richtige bereich ist
    kann mir jemand sagen, wie genau das bewerkstelligt werden soll, das, wenn ich 3 zahlen eingebe, diese auch in der richtigen reihenfolge ausgegeben werden?
    die größte zahl ausgeben hab ich schon irgendwie geschnallt, nur komm ich bei der sache nicht weiter, die anderen beiden zahlen auch noch in der richtigen reihenfolge mit auszugeben
    also beispielsweise
    x eingeben: 1
    y eingeben: 3
    z eingeben: 2

    reihenfolge: 1, 2, 3

    so oder so ähnlich
    ist einer von euch netten leuten so nett und hilft mir da weiter?
    danke schonmal





  • such dir was aus schrieb:

    Google: sortieralgorithmen
    Google: bubblesort
    Google: quicksort
    Google: mergesort

    thx
    jedoch, haste vll auch nen quelltext oder so?



  • noch ne frage
    wenn man beispielsweise die zahl 10 nimmt und die zahl mal 1,05 (also 5%) nimmt, das ergebnis wieder mal 1,05 usw.
    ich suche da nen einfach zu verstehenden quelltext, bei dem man in der konsole die zahl (in dem genannten beispiel die 10), den prozentsatz (z.B. 5%) und eine zahl, bei der die rechnung endet (z.B. 1000, jedoch sollte bei der rechnung dann nicht bsp. 999 die letzte angegebene zahl sein sondern die erste, die die 1000er marke überschreitet), eingibt und dann als ausgabe eine zahl ausgegeben wird, wie oft die grundzahl mal dem prozentsatz multipliziert werden muss, um das angegebene ende zu erreichen

    hat da jemand nen plan, wie in etwa das ausschauen soll?



  • Ehm kannst bsw. einfach machen:

    #include <iostream>
    #include <cmath>
    
    int main()
    {
        std::cout << "Wachstumsfaktor: ";
        double grow(0.0);
        std::cin >> grow;
        std::cout << "Ausgangswert: ";
        double start(0.0);
        std::cin >> start;
        std::cout << "Marke: ";
        double mark(0.0);
        std::cin >> mark;
        double i = 0.0;
        for (; (start * std::pow(grow, i)) < mark; i += 1.0);
        std::cout << "Zeitspanne: " << i << std::endl;
    }
    

    Hab gerade keine Zeit ... sonnst würde Ich dir was anständigeres schreiben ...



  • (D)Evil schrieb:

    Ehm kannst bsw. einfach machen:

    #include <iostream>
    #include <cmath>
    
    int main()
    {
        std::cout << "Wachstumsfaktor: ";
        double grow(0.0);
        std::cin >> grow;
        std::cout << "Ausgangswert: ";
        double start(0.0);
        std::cin >> start;
        std::cout << "Marke: ";
        double mark(0.0);
        std::cin >> mark;
        double i = 0.0;
        for (; (start * std::pow(grow, i)) < mark; i += 1.0);
        std::cout << "Zeitspanne: " << i << std::endl;
    }
    

    Hab gerade keine Zeit ... sonnst würde Ich dir was anständigeres schreiben ...

    2 fragen
    wie schauts mit while do und so aus?
    und kann man auch ohne borland oder so ein solchen code als programm starten und anwenden?



  • also wenn ich das richtig verstehe willst du zum Bsp:

    geg.:
    Zahl = 10;
    Steigerung(in 😵 = 5; // entspricht 105% des originalwertes
    Grenze = 1000;

    ges.:
    n -> wie oft der prozentsatz multipliziert werden muss

    eingeben. dann soll die 10*1,05*1,05*1,05*....... = x , wobei er stoppen soll sobalb 1000 überschritten wird. nunja mal mathe^^ 10* (1,05*1,05.....) == 10*(1,05)^n = 1000 dann eifach umstellen auf n und n dann aufrunden lassen auf ganzzahl ausser die willst den rationalwert. So als ansatz dann erstmal wenn 10*x^n =1000 sein soll dann MUSS x^n = 100 sein nunh hast du die basis 1,05 ergo müsste deine formal so aussehen log1,05(100) = log10(100)/log10(1,05) und log1,05(100) = n^^. Statt log kannst auch ln nehmen aber dann überall immer log mit gleicher basis nehmen das wars.

    also:

    n = log(ende/zahl)/log(prozentsatz); wobei prozentsatz nat. die 100% des origwertes beinhalten muss also 1 + Steigerung/100. da brauchst keine while oder so um den wert zu ermitteln.

    Edit:

    n ist in dem fall exakt der wert damit ende raus kommt und mit hoher wahrscheinlichkein eine rationale zahl. damit int(n) letzter wert vor ende und int(n) + 1 erster wert nach ende.



  • geht des eig. au einfacher?



  • mach erst mal ein C++ Tutorial oder kauf dir n Buch



  • was soll da denn noch einfacher gehen der text ist nur zur erklärung damit du verstehst was dahinter steht am ende hast du als code.

    n = log(ende/zahl) / log(1 + steigerung/100)
    

    sag mir ne einfachere variante als die meine, keine schleifen, keine zwischenvarialben, nix degleichen. ist einfach nur ne matheformal das wars ist 1 zeile in deinem prog.

    Edit: und da es ne matheformel ist ist n in dem fall fast immer eine reeele zahl wenn du ne ganzzahl willst mach eine daraus. Und da greift dann die regel

    Bsp.:

    n = 3,0371

    int(n) = 3 -> ende wird nicht überschritten
    int(n) + 1 = 4 -> ende wurde überschritten

    wenn das als code sehen willst dann wieder

    n = int( log(ende / zahl) / log( 1 + steigerung/100 ) ) + 1 -> ist 4 in meinem bsp wenn die "+ 1" nicht machst halt 3
    

    also einfacher geht es echt nicht oder ich bin zu kompliziert 😃


Anmelden zum Antworten