Rechnung geht nicht auf. Falsche Formel?



  • Ich bin ein blutiger Anfänger. 😃 Bitte helft mir. ^^

    Hi ich habe versucht ein Programm zu schreiben welches mir, nach der Eingabe meiner DSL Anbindung, ausrechnet welchen Up- und Download ich hab.
    Das ganze soll dann ungefähr so aussehn

    Bsp: "Upload pro Sekunde: 10 KByte = 0.009 MByte" usw.

    Gigabyte sollen ebenfalls noch angezeit werden sowohl für Up- als auch für den Download.

    Nur habe ich nun folgendes Problem:

    Die Gigabyte umrechnung geht nicht auf. Das Ergebnis ist bei Up- und Download immer identisch. Obwohl das eigentlich nicht sein kann. Ich weiss ja nicht ob mein Fehler in der Formel liegt oder ob ich eine andere Funktion brauche damit diese "großen" Zahlen berechnet werden können.

    Hier ist mal ein Auszug aus dem Programmcode:

    float UpKSek = DSLAnbindung / 8 / 12;
    float DownKSek = DSLAnbindung / 8;
    float UpKMin = DSLAnbindung / 8 / 12 * 60;
    float DownKMin = DSLAnbindung / 8 * 60;
    float UpKStd = DSLAnbindung / 8 / 12 * 3600;
    float DownKStd = DSLAnbindung / 8 * 3600;
    float UpKTag = DSLAnbindung / 8 / 12 * 86400;
    float DownKTag = DSLAnbindung / 8 * 86400;

    float UpMSek = UpKSek / 1024;
    float UpGSek = UpMSek / 1024;
    float DownMSek = DownKSek / 1024;
    float DownGSek = DownKSek / 1048576;

    std::cout << "Upload pro Sekunde: " << UpKSek << " Kilobyte = " << UpMSek << " Megabyte = " << UpGSek << " Gigabyte.\n\n";
    std::cout << "Download pro Sekunde: " << DownKSek << " Kilobyte = " << DownMSek << " Megabyte = " << UpGSek << " Gigabyte.\n\n";

    ENDE

    Bis hin zu Megabyte funktioniert alles tadellos.

    Über eine kleine Hilfestellung wäre ich sehr erfreut.
    Wenn ihr wollt könnt ihr auch mehr von dem Code haben falls dieser Auszug nicht reicht.

    Danke im Vorraus

    dezombi



  • Hallo,

    welchen Datentyp hat DSLAnbindung? Davon hängt entscheidend ab, ob bei den Divisionen hier:

    float UpKSek = DSLAnbindung / 8 / 12; 
    float DownKSek = DSLAnbindung / 8; 
    float UpKMin = DSLAnbindung / 8 / 12 * 60; 
    float DownKMin = DSLAnbindung / 8 * 60; 
    float UpKStd = DSLAnbindung / 8 / 12 * 3600; 
    float DownKStd = DSLAnbindung / 8 * 3600; 
    float UpKTag = DSLAnbindung / 8 / 12 * 86400; 
    float DownKTag = DSLAnbindung / 8 * 86400;
    

    eine Ganzzahldivision (das Ergebnis ist immer eine ganze Zahl!) ausgeführt wird oder wirklich auch Fliesskommazahlen als Resultat entstehen können.

    Zur Info: http://www.cpp-tutor.de/cpp/le03/le03_01.htm#grund

    MfG,

    Probe-Nutzer



  • #include <iostream>

    int DSLAnbindung;
    int main()
    {
    std::cout << "Gib hier bitte deine DSL-Anbindung an. Beispiel: DSL:2000\n";
    std::cout << "DSL:";
    std::cin >> DSLAnbindung;

    Hier das zeigt doch den Datentyp von "DSLAndbindung" oder? Es is eine Variable ohne Kommastelle. Ist das soweit richtig?



  • Machmal float DSLAnbindung;
    Simon



  • simon.gysi schrieb:

    Machmal float DSLAnbindung;
    Simon

    Das bringt nicht wirklich was, aber danke.



  • OMG, seht euch das an:

    std::cout << "Upload pro Sekunde: " << UpKSek << " Kilobyte = " << UpMSek << " Megabyte = " << UpGSek << " Gigabyte.\n\n";
    std::cout << "Download pro Sekunde: " << DownKSek << " Kilobyte = " << DownMSek << " Megabyte = " << UpGSek << " Gigabyte.\n\n";

    Seht ihr die 2x UpgSek bei der Ausgabe durch cout?

    ... Wenn ich da bei Download DownKSek eingebe funktioniet es komischer Weise.
    😃 😃 😃 😃 😃 😃 😃

    Danke für eure Hilfe!!

    I´m so sorry... 😃



  • ..


Anmelden zum Antworten