Wert wird nicht im Array[i] gespeichert.

Gast #1936710
Lesenswert?

Hallo,

ich bin hier gerade am Verzweifeln, weil ich nicht weiß warum der Wert 
nicht im Array gespeichert wird.
Was mache ich denn falsch?
1
int   _array[98];
2
int   f = 300;
3
int   x = 100;
4
//...
5

6
void __init()
7
{
8
//...
9
berechne();
10
//...
11
}
12

13
void berechne_delays(){
14
   int i = 0;
15
   for(i=0;i<97;i++){
16
     _array[i] = ((((1/f)/4)/x)*(10^7))*8);
17
   }  
18
}

Wenn ich einen Breakpoint setze um zu schauen, welchen Wert der Array an 
der Stelle i hat, steht dort immer nur zB '_array[2] = 0x0000'... aber 
da kommt nicht '0' raus.

Wäre super, wenn mir jemand sagen könnte, was ich falsch mache.
Danke
Gast #1936727
Lesenswert?

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
}

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' ?
Gast #1936743
Lesenswert?

Nein, sollte ich es auschreiben?
1
void berechne_delays(){
2

3
   int i = 0;
4
   float r = 0.000000000000;
5

6
   for(i=0;i<97;i++){
7
     r = ((((1/f)/4)/x))*8;
8
     _array[i] = fround(f,0);
9
   }
10
}

Jetzt sollte es doch eigentlich funktionieren,oder?
Das Ergebnis für r ist allerdings 0.0000000  :(
#1936864
Lesenswert?

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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren