Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Frage zu einer Brechnung (Noob Frage, C++)

Selecta / 17 Antworten / Flachansicht Nickles

Habe mit (Borland C++ Builder 5.0 prof.) folgenden Code geschrieben.
Die Aufgabe war: Ein Bus nimmt pro Person 0.10 Euro und pro gefahrenen Kilometer nochmals 0.10 Euro. Eine Person (Der Leiter) zahlt nur die Hälfte, jede 10. Person fährt Gratis.
Meine Hauptfrage: Wie berechne ich den Gratisbetrag ? Personen / 10 geht ja nicht, da da ein Rest uebrig bleibt, etwa (15/10 = 1.5) und das wäre mehr Freibetrag als es eigentlich sein soll.


#include <iostream>
#include <iomanip>
#include <conio.h>
#include <windows.h>


void main()
{


float person, cost = 0.10, distance, chief, free; // chief soll der Leiter sein, free der Freipreis
cout << "Geben sie die Anzahl der Personen ein: ";
cin >> person;


if (person < 10);   // Dachte ich mach mal mit if, hilft mir nicht, da ich die Berechnung nicht kann, außer person ist < als 10, da die Rechnung wegfiele...
{
cout << endl << "Geben (A) sie die Laenge der Strecke ein: ";
cin >> distance;
cout << endl << "Die Gesamtkosten belaufen sich auf: " <<
((person + distance) * cost) - (cost * 0.5) << " Euro" ;   // Personen und Entfernung * 0.10 und dann fuer eine Person (den leiter) die Haelfte des Peises abziehen
getch();
}


if (person > 10);
{
cout << "Geben (B) sie die Laenge der Strecke ein: ";
cin >> distance;
cout << setprecision(2);
cout << endl << "Die Gesamtkosten belaufen sich auf: " <<
((person * distance) * cost) - (cost * 0.5) - (           ) // so hier weiss ich nicht, was ich da jetzt abziehen soll ... 2 frage; wenn ich nun am anfang mehr als 10 eingebe, kommt trozdem der if < 10 Block ! Warum das?
getch();
}


getch();
}


 


Hoffe ihr versteht mein Problem ... Is bestimmt ganz simpel ... Aber halt schwer zu erklären

GreeTz Selecta

bei Antwort benachrichtigen
mr.escape Selecta „Das mit war nur ein Schreibfehler. Aber an sich war es doch nicht falsch, wa...“
Optionen
Aber was zum Teufel bedeutet diese (float) denn genau ?
Das nennt sich "type casting" und sorgt dafür dass der kompiler ganz sicher die richtigen befehle verwendet bzw. lästige warnungen unterlässt (z.b. warnung vor datenverlust bei gewollter verwendung des ganzzahligen teils einer float-variablen in einer int-variablen).
In diesem fall soll es dafür sorgen, dass die ganzzahlvariable (int) in eine fließkommavariable (float) umgewandelt und z.b. die anschliessende division in der FPU stattfindet. Diese art der umwandlung führt der kompiler normaler weise recht zuverlässig selbst durch, wenn man aber ganz sicher gehen will kann man damit für klarheit sorgen.
Das gleiche gilt auch für das setzen der klammern. Punkt vor strich ist relativ klar, aber es gibt noch eine reihe anderer operatoren, deren priorität irgendwo dokumentiert, aber nicht unbedingt jedem geläufig ist. Ist man sich nicht sicher, klammern hilft!

mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen