Berechnungen



  • Hallo, ich habe in einem Programm folgenden Code:
    [cpp]
    if(m_dBarzahlungnormal > 0)
    {
    dNorm01 = m_dBarzahlungnormal;
    dN01 = dN01 + dNorm01;
    m_dBarnormalgesamt = dN01;
    m_nKunden1++;
    double dVar1;
    dVar1 = dNorm01 / m_dTagespreisbenzin; //Summe / Tagespreis
    m_dAbgabenormal = floor(dVar1 * 100.0) / 100.0; //auf 2 Nachkommastellen kürzen
    dNAB01 = dNAB01 + m_dAbgabenormal;
    m_dBarzahlungnormal = 0;
    }
    Leider kommt bei der Ausgabe der verkauften Liter immer eine andere Summe heraus.

    Habe ich etwas übersehen?

    Grüsse

    Franz



  • Es wäre wirklich hilfreich, wenn du verraten würdest, welche deiner vielen Variablen die

    Franz Hembera schrieb:

    verkauften Liter

    darstellt. Eine mit dem Namen "verkaufteLiter" sehe ich in dem Code jedenfalls nicht.

    Aber ich vermute mal, du hast vergessen, diese Variable mit 0 zu initialisieren.



  • Hallo MFK,

    die Variable für
    verkaufte Liter = m_dAbgabenormal,
    der Preis = m_dBarzahlungnormal,
    die Gesamtsumme der Preise = m_dBarnormalgesamt.

    Die Variablen dNorm01, dN01, dNAB01 sind statische Variablen, die die Gesamtsumme des Tages speichern.

    Grüsse

    Franz



  • Franz Hembera schrieb:

    Die Variablen dNorm01, dN01, dNAB01 sind statische Variablen, die die Gesamtsumme des Tages speichern.

    Und setzt du die auch immer auf 0, wenn sich der Tag ändert?



  • Wenn ich die Variable auf "0" setze, werden die abgegebenen Liter in der Rubrik Abgabe(Liter)Normal nicht angezeigt. Sie werden nur in der Variablen m_dBarnormalgesamt übernommen und auch dort angezeigt. Ich möchte aber, dass beide Variablen angezeigt werden.

    Die Variable schreibe ich unter die Variable
    m_dBarzahlungnormal = 0 mit
    m_dAbgabenormal = 0.

    Muss ich die Nullsetzung wo anders hinschreiben?

    Grüsse

    Franz



  • Alle statischen Variablen wurden bei der Deklaration mi 0 initialisiert.



  • Setz einfach mal ein paar Haltepunkte und guck dir im Debugger die Inhalte der Variablen an. Dann solltest du doch schon erkennen, wo da was falsch läuft.
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-120832.html



  • So, jetzt habe ich fast alles klar. Der einzige Fehler ist:

    Wenn ich auf den nächsten Tag gehe, sollten alle Felder auf "0" gesetzt sein. Alles klappt, nur das Feld Abgabe zeigt die Liter vom Vortag an. Hat das was mit der Berechnung zu tun?



  • Franz Hembera schrieb:

    So, jetzt habe ich fast alles klar. Der einzige Fehler ist:

    Wenn ich auf den nächsten Tag gehe, sollten alle Felder auf "0" gesetzt sein. Alles klappt, nur das Feld Abgabe zeigt die Liter vom Vortag an. Hat das was mit der Berechnung zu tun?

    Woher sollen wir das wissen? Du sagst nicht, was du geändert hast. Du sagst nicht, wie der Code jetzt aussieht. Wenn du Code zeigst, ist es viel zu wenig. Deine Aussage "jetzt habe ich fast alles klar" hilft da auch nicht im Geringsten weiter. Jemand, der nicht über eine Kristallkugel verfügt, kann nur raten, wenn er dir helfen will.

    Ich vermute mal, dass du dNorm01 nicht zurückgesetzt hast.



  • Der code ist:

    if(m_dBarzahlungnormal > 0)
    		{	
    			dN01 = dN01 + m_dBarzahlungnormal;
    			m_dBarnormalgesamt = dN01;
    			m_nKunden1++;
    			double dVar1;
    			dVar1 = m_dBarzahlungnormal / m_dTagespreisbenzin;
    			m_dAbgabenormal = floor(dVar1 * 100.0) / 100.0;
    			dNAB01 = dNAB01 + m_dAbgabenormal;
    			m_dBarzahlungnormal = 0;
    		}
    

    Das Feld, in dem die Variable m_dAbgabenormal ausgegeben wird, wird nicht auf "0" gesetzt, wenn der nächste Tag aufgerufen wird. Alle anderen Felder sind auf "0" gesetzt.



  • Der ganze Code für Normalbenzin und den ersten Tag (Seite 1) ist:

    [cpp]
    if(m_nSeite == 1)
    {
    if(m_dBarzahlungnormal > 0)
    {
    dN01 = dN01 + m_dBarzahlungnormal;
    m_dBarnormalgesamt = dN01;
    m_nKunden1++;
    double dVar1;
    dVar1 = m_dBarzahlungnormal / m_dTagespreisbenzin;
    m_dAbgabenormal = floor(dVar1 * 100.0) / 100.0;
    dNAB01 = dNAB01 + m_dAbgabenormal;
    m_dBarzahlungnormal = 0;
    }

    if(m_dBarnormalgesamt > 0)
    {
    m_dBarnormalgesamt = dN01;
    }

    if(m_dEczahlungnormal > 0)
    {
    dEN01 = dEN01 + m_dEczahlungnormal;
    m_dEcnormalgesamt = dEN01;
    m_nKunden1++;
    double dVar1;
    dVar1 = m_dEczahlungnormal / m_dTagespreisbenzin;
    m_dAbgabenormal = floor(dVar1 * 100.0) / 100.0;
    dNEAB01 = dNEAB01 + m_dAbgabenormal;
    m_dEczahlungnormal = 0;
    }

    if(m_dEcnormalgesamt > 0)
    {
    m_dEcnormalgesamt = dEN01;
    }

    if(m_dRechnungnormal > 0)
    {
    dRN01 = dRN01 + m_dRechnungnormal;
    m_dRechnungnormalgesamt = dRN01;
    m_nKunden1++;
    double dVar1;
    dVar1 = m_dRechnungnormal / m_dTagespreisbenzin;
    m_dAbgabenormal = floor(dVar1 * 100.0) / 100.0;
    dNRAB01 = dNRAB01 + m_dAbgabenormal;
    m_dRechnungnormal = 0;
    }
    m_dAbgabenormalgesamt = dNAB01 + dNEAB01 + dNRAB01;
    m_dZaehlerstandnormalneu = m_dZaehlerstandnormalalt + dNRAB01 + dNEAB01 + dNAB01;
    dZSNA01 = m_dZaehlerstandnormalalt;
    dZSNN01 = m_dZaehlerstandnormalneu;

    if(m_dRechnungnormalgesamt > 0)
    {
    m_dRechnungnormalgesamt = dRN01;
    }
    }
    [code]

    Dieser Code gilt auch für jeden weiteren Tag.

    Ich hoffe, dass damit was anzufangen ist.

    Grüsse

    Franz



  • Hallo Franz,
    editier bitte mal Deinen Text und schreibe statt
    [code]
    in der fünften Zeile von unten

    [/cpp]

    Dann sind die Quellen besser lesbar.



  • if(m_nSeite == 1) 
    { 
    if(m_dBarzahlungnormal > 0) 
    { 
    dN01 = dN01 + m_dBarzahlungnormal; 
    m_dBarnormalgesamt = dN01; 
    m_nKunden1++; 
    double dVar1; 
    dVar1 = m_dBarzahlungnormal / m_dTagespreisbenzin; 
    m_dAbgabenormal = floor(dVar1 * 100.0) / 100.0; 
    dNAB01 = dNAB01 + m_dAbgabenormal; 
    m_dBarzahlungnormal = 0; 
    } 
    
    if(m_dBarnormalgesamt > 0) 
    { 
    m_dBarnormalgesamt = dN01; 
    } 
    
    if(m_dEczahlungnormal > 0) 
    { 
    dEN01 = dEN01 + m_dEczahlungnormal; 
    m_dEcnormalgesamt = dEN01; 
    m_nKunden1++; 
    double dVar1; 
    dVar1 = m_dEczahlungnormal / m_dTagespreisbenzin; 
    m_dAbgabenormal = floor(dVar1 * 100.0) / 100.0; 
    dNEAB01 = dNEAB01 + m_dAbgabenormal; 
    m_dEczahlungnormal = 0; 
    } 
    
    if(m_dEcnormalgesamt > 0) 
    { 
    m_dEcnormalgesamt = dEN01; 
    } 
    
    if(m_dRechnungnormal > 0) 
    { 
    dRN01 = dRN01 + m_dRechnungnormal; 
    m_dRechnungnormalgesamt = dRN01; 
    m_nKunden1++; 
    double dVar1; 
    dVar1 = m_dRechnungnormal / m_dTagespreisbenzin; 
    m_dAbgabenormal = floor(dVar1 * 100.0) / 100.0; 
    dNRAB01 = dNRAB01 + m_dAbgabenormal; 
    m_dRechnungnormal = 0; 
    } 
    m_dAbgabenormalgesamt = dNAB01 + dNEAB01 + dNRAB01; 
    m_dZaehlerstandnormalneu = m_dZaehlerstandnormalalt + dNRAB01 + dNEAB01 + dNAB01; 
    dZSNA01 = m_dZaehlerstandnormalalt; 
    dZSNN01 = m_dZaehlerstandnormalneu; 
    
    if(m_dRechnungnormalgesamt > 0) 
    { 
    m_dRechnungnormalgesamt = dRN01; 
    } 
    }
    

Anmelden zum Antworten