Studi schrieb:
>
1 | > #include <round.h>
|
2 | >
|
3 | > int _array[98];
|
4 | > int f = 300;
|
5 | > int x = 100;
|
6 | > //...
|
7 | >
|
8 | > void __init()
|
9 | > {
|
10 | > //...
|
11 | > berechne();
|
12 | > //...
|
13 | > }
|
14 | >
|
15 | > void berechne_delays(){
|
16 | > int i = 0;
|
17 | > for(i=0;i<97;i++){
|
18 | > _array[i] = (fround((((1/f)/4)/x),0))*(10^7)*8;
|
19 | > }
|
20 | > }
|
21 | >
|
>
> Mit Runden kommt man da auch nicht weit. Also rechnet er von Anfang an
> mit int Zahlen, ich verstehe....
>
> Wenn ich ' float _array[98]' schreibe, gibt er mir eine Fehlermeldung :(
> Wie deklariert man denn einen 'Float-Array' ?
Wie lautet denn die Fehlermeldung? Normalerweise geht das schon, aber
vielleicht unterstützt dein Compiler keine floats, was allerdings
merkwürdig ist, da du in deiner letzten Lösung ja welche für die
Berechnung verwendet hast. Vielleicht zuwenig Speicher, falls float 4
Bytes braucht und int ggf. 2 Bytes groß ist?
1/f gibt für f>1 immer 0 als Ergebnis bei int-Variablen, da eine
Ganzzahldivision durchgeführt wird. 10^7 ist in C was anders, als eine
Potenz (xoder, wie schon geschrieben wurde), du müsstest du dann pow(10,
7) nehmen, oder einfach 1e7 schreiben.
Es geht aber auch durch umstellen der Gleichung rein mit
Ganzzahloperationen: 20000000/f/x = ((((1/f)/4)/x)*(10^7))*8).