Hallo,
ich hatte vor eine 3 stellige Zahl in einem Feld mit 3 Plätzen zu speichern, für ein größeres Projekt, habe aber daher erstmal ein Testsketch geschrieben, aber letztendlich weicht die letzte Zahl manchmal ab.
Hier der Code:
int number = 234; int array[3]; void setup() { Serial.begin(9600); Serial.println("Connection established baud 9600"); } void loop () { array[1]=number/100 ; array[2]=(number-array[1]*100)/10 ; array[3]=number-(array[1]*100+array[2]*10); Serial.println(number); Serial.print(array[1]); Serial.print(" "); Serial.print(array[2]); Serial.print(" "); Serial.print(array[3]); Serial.println(" "); Serial.println(" "); delay(500); }
Dazu dann dieses Serial Monitor Log:
Connection established baud 9600
234
2 3 4
234
2 3 4
234
2 3 5
234
2 3 5
234
2 3 4
234
2 3 4
habe schon gedacht, dass es vielleicht deshalb passiert, dass nachkommastellen dazwischenfunken und habe das Array auch extra als int deklariert (da es dabei ja eigentlich keine nachkommastellen gibt).
Wenn ich die berechnung allerdings in void setup schreibe, spinnt der völlig (siehe Log).
int number = 234; int array[3]; void setup() { Serial.begin(9600); Serial.println("Connection established baud 9600"); array[1]=number/100 ; array[2]=(number-array[1]*100)/10 ; array[3]=number-(array[1]*100+array[2]*10); } void loop () { Serial.println(number); Serial.print(array[1]); Serial.print(" "); Serial.print(array[2]); Serial.print(" "); Serial.print(array[3]); Serial.println(" "); Serial.println(" "); delay(500); }
Connection established baud 9600
234
2 3 4
234
2 3 493
234
2 3 982
234
2 3 1471
234
2 3 1960
Der dürfte doch eigentlich nur einmal rechnen, deshalb dürfte sich der letzte Wert doch überhauptnicht ändern ... ???
vor 28 weeks 4 days
Du bestimmst ein Array mit 3 Elementen:
Nimmst dann aber das 2., 3. und nicht existierende 4. Element des Arrays.
Das 4. Element wird in den zwei Speicherzellen nach den Speicherzellen des Arrays gespeichert. Diese 2 Speicherzellen wenden aber für andere Zwecke verwendet und darum vom Programm verändert.
Nimm bitte die Elemente array[0] bis array[2].
Ich würde aber die Zerlegung der Zahl anders machen:
So kannst Du das nämlich in eine for-Schleife einfügen und ist für beliebig lange Zahlen gültig.
grüße Uwe
Login or register to post comments