Hi,
int e, a; // Stückzahl, Verteilung (allocation)
p = ceil( e/a );
Laut Beschreibung sollte ceil() doch in jedem Fall aufrunden.
Tut es auch.
Zuerst wird e/a berechnet. Beides sind int, also wird nach int-Regeln gerechnet: 20/7 ist demnach 2, der Rest fällt bei int-Berechnung unter den Tisch.
Dann kommt ceil ins Spiel. Da ceil ein float erwartet, wird aus der 2 eine 2.0, ceil von 2.0 ist 2.0 ...
Jetzt tippe ich darauf, dass aus int/int kein float p wird, obwohl p als float deklariert wurde.
Die Umwandlung in float findet später statt als Du es gerne hättest.
Und wenn ja, wie bekomme ich den Restwert von e/a wenn der Modulus keine float-Variablen akzeptiert?
So, wie Du es bei
r = e%a;
bereits machst.
Oder wie bekomme ich einen float-Wert aus den beiden Integern?
Mindestens einen der zwei Werte zu float umwandeln (z.B. durch cast oder durch Zuweisung an eine float-Variable) vor der Division.
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.