C - Variable, einfache Frage!

Flintstone555

Lieutenant
Registriert
Sep. 2007
Beiträge
532
Ist ein kleines Programm. Jeder der davon ein bischen Ahnung hat, wird wissen um was es geht :D

Mein Problem:
Die letzte Zeile! Ich weiß nicht, wie ich das hinschreiben soll, damit der berechnete Verbrauch ausgegeben wird.

Code:
#include <stdio.h>
#include <stdlib.h>

int main (void)

{   double km_alt;
    double km_neu;
    double Liter;
    double Verbrauch;
    
    printf("Willkommen im Verbrauchsrechner ;-)\n\n");
    
    printf("Bitte geben Sie den alten Kilometerstand ein:");
    scanf("%lf", &km_alt);
    
    printf("Bitte geben Sie den neuen Kilometerstand ein:");
    scanf("%lf", &km_neu);
    
    printf("Bitte geben Sie die getankten Liter Benzin ein:");
    scanf("%lf", &Liter);
    
    Verbrauch=(km_neu-km_alt)/Liter*100;
    
    printf("Sie haben einen durchschnittlichen Verbrauch von %lfVerbrauch");

    
    system("pause");
    
    return 0; 

}
 
printf("Sie haben einen durchschnittlichen Verbrauch von %f",Verbrauch);

Wieso hast du das eigentlich nicht per google herausgefunden?
 
1. Funktioniert irgendwie nicht. Ich bekomm ne ewig lange Zahl heraus

2. Irgendwie nix gefunden^^
 
zu 1. Funktioniert irgendwie schon, es wird exakt die Zahl ausgegeben die du berechnet hast. Evtl. solltest du deine Formel überdenken? Schliesslich gibst du km pro liter aus.

zu 2. Nicht glaubhaft. Wenn man nach "c printf" sucht, ist gleich der erste Treffer ein netter Link.
 
Nur eine kleine Bemerkung am Rande:
Bitte nicht benutzen. Es ist ein systemabhängiger Aufruf. Benutze lieber getchar() ...
 
Wie lautet die gesamte deklaration mit dem getchar() ?

Ich habe auch immer system("pause") verwendet
 
Das Problem mit dem Begriff system() kannst hier (der Link zeigt mehrere Sachen, die man nicht in C benutzen sollte) oder hier mal nachlesen.

In C wartet getchar(); solange bis ein return kommt. getchar() hat keine Argumente und sollte also auch keine Probleme machen. In C++ geht natürlich auch cin.get(); .
 
Zuletzt bearbeitet:
@Götterwind:
So gut der Autor in deinem Link es wohl auch meint, vieles davon ist davon ist fachlich falsch oder unvollständig oder hanebüchen (auch wenn nicht hervorgeht, ob er es nicht besser weiß oder es der Einfachheit halber weggelassen hat; z.B. moniert "merkwürdiges" Verhalten bei scanf (es funktioniert ganz genau so wie es soll und darüber haben sich viele schlaue Leute den Kopf zerbrochen (die Begründung würde hier bei weitem den Rahmen sprengen)) anstatt die Funktionsweise von formatiertem Input zu erklären).

system("pause") ist in so einem Miniprogramm, was sowieso einen Einweg-Lebenszyklus hat, völlig okay. Die "bösen" Nachteile, die der Autor da erwähnt, sind zwar ansich nicht falsch - aber: das spielt überhaupt keine Rolle. Was kümmert es mich, ob da irgendwo ein Quäntchen Speicher oder Rechenzeit verbraucht wird oder ein "teurer" Systemaufruf gemacht wird, wenn mein Programm zu Ende ist und alles was ich noch will eine Benutzereingabe ist (die um einen gewaltigen Faktor länger dauert als ein system-Aufruf). Klar, system ist teuer wenn ich es 10000000 mal in einer Schleife aufrufe und einen Kontextwechsel (der ist wirklich "böse") provoziere. Aber in so einer Situation ist das völlig irrelevant.

Und system("pause") hat einen ganz entscheidenden Vorteil - für das was der OP will ist es so ziemlich das Einzige, was absolut zuverlässig funktioniert. getchar() könnte das Selbe schaffen, ist aber ganz genauso auf Windows beschränkt und damit plattformabhängig. Alles andere wie ein cin.get() ist zwar ansich völlig standardkonform, aber es kann niemals zuverlässig funktionieren in dem Sinne wie man es dort erwartet. Die Funktionsweise von Input in C oder C++ wird dabei völlig ignoriert und es entstehen merkwürdige Workarounds wie das Wegwerfen der Input-Buffer, die immernoch nicht völlständig und richtig funktionieren. Die Sprache hat so ein Mittel - auf einen finalen Tastendruck oder eine finale Eingabe zu warten - nicht. Das ist immer plattformabhängig. Daher ist ein Aufruf von system("pause") das Einfachste und Sicherste was man machen kann, wenn man diesen Effekt will (ganz von der "richtigen" Lösung abgesehen, sowas komplett wegzulassen und das Programm in einer Shell zu starten).
 
Zurück
Oben