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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.