Hallo! Ich arbeite in c, uVision von Keil! Ich möchte einen Mittelwert Bilden. Benütze ein Array mit Indexwert 8! Meine Idee, erster gemessener Wert 5 in Array[0] speichern, dann aus dem Array den Mittelwert bilden. 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 / 0 = 0.625 Den Wert von Array[0] ins Array[1] schieben, 2. Messwert 7 in Array[0] speichern. 7 + 5 + 0 + 0 + 0 + 0 + 0 + 0 / 0 = 1.5 usw. Wie kann ich den Wert des Array[0] in Array[1] usw schieben / laden?? Array[0] <<= 1; Schiftet ja den Wert selbst! Danke und Gruss! M.B.
M. B. schrieb: > Wie kann ich den Wert des Array[0] in Array[1] usw schieben / laden?? Ist das eine Fangfrage? Array[1] = Array[0]; Aber wozu schieben. schreib doch einfach den nächsten Messwert nach Array[1]. Und den danach gemessenen nach Array[2], etc. etc. Du musst dir nur merken, wo der nächste Messwert hin muss. Und wenn du am Ende des Arrays angelangt bist, dann fängst du wieder beim Index 0 an.
Auf die schnelle:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
Könnte noch ein kleiner Bug drin sein, geht aber ums Prinzip :-) Die Grösse des Arrays ist dann deine Tiefe für die Mittelwertbildung. In einer anderen Funktion kannst dann einfach von 0..MAX_VALS über das Array iterieren. Anm.: SHIFT geht nur über Bits hinweg, bis zur Architekturgrösse, nicht aber über Felder eines Arrays oder andere WORD-Gruppen. VG, /th.
Gast
#2301507
Wenn du
1 | |
gehen auch beliebige Werte für MAX_VALS.
Und wenn man dann noch
1 | |
2 | |
3 | |
hat man beides mit einer Klappe geschlagen. Keine Division und trotzdem beliebige Werte für MAX_VALS, bei meistens nur ganz leichten Performance-Verlusten gegenüber der & Lösung, die im Regelfall völlig irrelevant sind.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.