1

C Programm läuft ohne Compileerror, aber trotzdem nicht richtig

Frage von max21014 max21014

Guten Tag, bin noch relativ neu in der C Sache. Ich hab mir ueberlegt ein Programm zur Benzinverbrauchüberwachung zu schreiben,aber irgendwie klappt das nicht richtig, weil immer falsche Ergebnisse raus kommen. Da ich mal wieder Probleme hatte mit diesem Strg K Codebeispiele einzufuegen, hab ich sie schnell als c und txt Dateien hochgeladen:

Ich konnte keine zwei Links posten, weil es sonst als Spam durchgegangen wäre, aber ich hoffe euch macht es nix aus, kurz zwei zeilen zu kopieren.Danke ;)

<a href="http://www.2shared.com" target="_blank">www.2shared.com</a>
einmal mit der Endung:
/file/IWYpLhm5/b_online.html
und einmal mit der Endung
/document/D3F-2UxT/fuel.html
Fragen zu gleichen Themen finden

Antworten (2)

  • 0
    Hilfreichste Antwort ausgezeichnet vom Fragesteller
    Antwort von ultrarunner ultrarunner

    Es wäre interessant zu wissen, wie falsch die Ergebnisse sind. Knapp daneben oder völlig unsinnig.

    Ein Problem ist jedenfalls folgendes:

    Verbrauchseitletztemtanken=((neueBenzinmenge/Kilometerseitletztertankfuellung)*100);

    Hier machst du eine Integer-Division - das Ergebnis wird also immer auf die nächste ganze Zahl abgerundet - und multiplizierst das dann mit 100. Dabei wird immer eine Zahl mit zwei Nullen am Ende herauskommen.

    Hier gibt's dann nochmals dasselbe Problem :

    Verbrauchinsgesammt=(Kilometerbisher/Benzinmengeinsgesammt);

    Kommentar von max21014 max21014max21014

    Ich geb mal schnell ne Listung meiner Eingaben und der Ausgaben

    Kommentar von max21014 max21014max21014
    Die letzten Daten waren:
    Datum:10.12.2011
    Kilometerstand:33000
    Die bisher getankte Benzinmenge:500
    Die gefahrenen Kilometer:1000
    
    Bitte geben sie das aktuelle Datum ein.
    Tag?
    1
    Monat?
    5
    Jahr?
    2010
    Bitte die getankte Benzinmenge in Litern eingeben
    30
    Bitte den aktuellen Kilometerstand eingeben
    33200
    
     Verbrauch mit letztem Tank:16300
     Der bisherige Verbrauch:2
    

    sehr ihr ? also GROB daneben

    Kommentar von ultrarunner ultrarunnerultrarunner

    In der Formel

    Verbrauchseitletztemtanken=((neueBenzinmenge/Kilometerseitletztertankfuellung)*100);

    verwendest du die Variable neueBenzinmenge. Dieser wurde zuvor aber kein Wert zugewiesen, daher hat sie einen zufälligen Inhalt. Außerdem besteht in derselben Zeile das von mir bereits beschriebene Problem der Integer-Division. Wenn du den anderen Fehler behoben hast, würde hier als Verbrauch sogar 0 herauskommen, denn es würde 30/200 berechnet werden, und das ergibt als Integer-Wert 0.

    Du solltest die Liter zuerst mit 100 multiplizieren und erst dann das Ergebnis durch die Kilometer dividieren. Falls du im Ergebnis eine bessere Auflösung als 1 Liter haben möchtest, solltest du diese Division mit Fließkommazahlen statt mit Integern rechnen.

    Kommentar von max21014 max21014max21014

    Top! Vielen Dank! HA gibts nach 24h ;)

  • 0
    Antwort von user1074 user1074

    Was genau kommt falsch raus??

    Was ist die letzte Variable in der Textzeile? Kilometerseiterstemprogramm

    Kommentar von max21014 max21014max21014

    Zugegeben sind die Variablennamen eigen. Kilometerseiterstemprogramm gibt die gesamten gefahreren Kilometer aus, die seit dem ersten Programmstart eingegeben wurden. Bei dem gesammten Benzinverbrauch kommt immer 2 raus und bei dem Verbrauch des letzten Tanks kommt immer iwas über 500 raus. Vollkommen utopische Werte. Bei 200 gefahrenen KM und 30 getankten Liter kommt z.B. nie 15 heraus. Nur finde ich den Fehler nicht.

Diese Frage

Verwandte Fragen

Noch nicht den richtigen Rat gefunden?

Einfach und schnell viele hilfreiche Ratschläge von Deutschlands aktivster Ratgeber-Community erhalten!

Einfach und schnell einen Tipp erstellen und Ihren guten Rat mit anderen teilen!

Einfach und schnell ein Video hochladen und anschaulichen Rat an alle geben!

Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Rechtliche Hinweise finden Sie hier.