Kleine Rechenaufgabe gibt kein Ergebnis aus
-
Hallo Ihr, jenseits meines Laien-Horizonts,
nachdem wir in der Uni die Programmiersprache "C" erläutert bekommen haben, welche ich persönlich als recht einsteigerfreundlich empfunden habe, quäle ich mich nun mit "c++" irgendwie sehr stark, wenngleich ich ahne, dass es dem geneigten Experten simpler von der Quantität der Befehlsstrukturen her erscheinen mag. Wir haben schon einige Übungen durch und jetzt kommen die ersten Aufgaben, die Eingabeaufforderungen erfordern, und hier habe ich auch schon ein Problem:Ziel ist es (noch mit einfachen Mitteln (bin mir sicher, dass mein Programm auch einfacher geschrieben werden könnte)) den Benzinverbrauch und die Kraftstoffkosten pro 100 Kilometer für ein Auto zu berechnen.
Mein Programm wird immerhin vollständig kompiliert, gibt jedoch nichts weiteres aus, kenne mich mit Rechnungen halt noch nicht so gut aus. Bitte helft mir mal...#include <iostream> using namespace std; int main() { int x,y,k,s; float b; cout << "Das folgende Programm berechnet den Benzinverbrauch und" << endl; cout << "die Kraftstoffkosten pro 100 Kilometer für ein Auto." << endl << endl << endl; cout << "Geben Sie den verbrauchten Kraftstoff in Litern an..." << endl; cin >> k; cout << "Geben Sie die gefahrenen Kilometer seit dem letzten Tanken in Metern an..." << endl; cin >> s; cout << "Geben Sie den bezahlten Betrag in Euro an..." << endl; cin >> b; x=100*k/s; y=100*b/s; cout << "Der Benzinverbrauch beträgt: " << x << "[L]" << endl; cout << "Die Kraftstoffkosten betragen: " << y << "[Euro]" << endl; getchar(); return 0; }Bin für jede Hilfe dankbar.
-
Inwiefern "gibt nichts weiteres aus"?
Bei der 1. Eingabe gebe ich "40" ein, bei der 2. "30" und bei dir 3. "120".
Ausgabe:
Der Benzinverbrauch beträgt 130Liter
Die Kraftstoffkosten betragen 400Euro
-
je nach compiler kann getchar() sauschlecht sein.
nimm liebercin.get();cin.get();//ja, zweimalund nimm double statt int, das vermeidet lustige rechenungenauigkeiten.
-
Du musst beim Mischen von Ganzzahlen und Kommazahlen aufpassen.
int x,y,k,s; float b;Du arbeietst hier mit beidem und das verfälscht dein Ergebniss int kann nur ganze Zahlen aufnehmen, wenn deine rechnung aber zB 50/1000 ist dann ist das Ergebniss 0. Besser du arbeitest hier komplett nur mit floats, das gilt auch für deine Rechenzahlen, die 100 wäre auch ein int, mach eine 100.0f draus dann ist es auch eine float.
-
Nanu, also ich habe jetzt mehrere Übungen gemacht und es gab immer eine Ausgabe, aber ist merkwürdigerweise so, dass CodeBlocks (in Unikurs verwendet)
garnichts macht (nothing to be done (wrong compiler??)) und Bloodshed (vorher in Uni benutzt) alles gemacht hat, aber hier öffnet sich bei den von dir gewählten Werten das schwarze Fenster nur für ne tausendstel Sekund und ist weg, also man kann nichts lesen. Was kann das denn sein, wenn es bei mir nicht geht?
-
hast zum erstenmal nen int gelesen.
cin>> leist nur bis zum ende der zahl selber.
da ist noch ein \n im eingabestream.
den liest du mit getchar() weg.
deswegen //zweimal.
-
Also während ich schrieb gab es ja schon massig Antworten und das ändern des getchers hats schon gebracht. Dann habe ich noch ordentlich gefloatet und nu passts. Vielen Dank euch allen zu so später Stunde.
Eine kleine Kosmetikfrage noch:
Ich kriege irgenwie keinen Zeilenumbruch zwischen die letzte Abfrage und die endgültige Ausgabe, kann mir jemand kurz auf die Sprünge helfen...
-
da die eingabe nunmal mit enter bestätigt wird, bricht er nunmal eine neue zeile an.
kannst mit
cout << "\b";
versuchen, das entspricht der rücktaste.