Array-Werte in einzelne Variablen schreiben
-
Alle deine Klammern sind unnötig, aber eigentlich (bzw. gerade deswegen) sollten sie nichts am Ergebnis ändern. Kannst du mal den Code vorher und nachher zeigen und sagen, was heraus kommt?
-
SeppJ schrieb:
Alle deine Klammern sind unnötig, aber eigentlich (bzw. gerade deswegen) sollten sie nichts am Ergebnis ändern. Kannst du mal den Code vorher und nachher zeigen und sagen, was heraus kommt?
Also entweder es lag an den Klammern oder vllt doch eher an der double Definition der Variablen, die an der Berechnung teilnehmen.
Hier ist nochmal der Code wo es nicht funktioniert hatte und z konstant 0 war:
Lag wohl wirklich daran, dass der Nachkommateil wegen des INT von a3 immer abgeschnitten wurde.double binarytodecimal_nk(int *pn) { double z = 0; int n = 0; int a3 = 0; double basis = 2.0; for (n = 0; n <= counternach; n++){ a3 = pow(basis, n + 1); z = (z + (pn[n] * (1 / a3))); } return z; }
Hier nun der Code der funktioniert:
double binarytodecimal_nk(int *pn) { double z = 0; int n = 0; double a3 = 0; double basis = 2.0; for (n = 0; n <= MAX; n++){ a3 = pow(basis, n + 1); z = z + (pn[n] * (1 /a3)); } return z; }
Liebe Grüße
-
In deinem ersten Beispiel ist
1/a3
immer 0 für alle a3 die > 2 oder < -2 sind. (Integer-Division, da Dividend und Divisor vom Typ einer Ganzzahl sind)Ein
1.0/a3
beseitigt das Problem.