Hans wrote:
> So? oder gehts noch einfacher?
Was heist einfacher.
Erst mal sollte es richtig sein :-)
Vergleichst du
> if(sensoren[i].Mittelwert[index-j-1]>highVal)
hier: *********
> highVal=sensoren[i].Mittelwert[index-j];
mit: *******
> }
> else
> {
> if(sensoren[i].Mittelwert[29+index-j]>highVal)
und nochmal hier: **********
> highVal=sensoren[i].Mittelwert[index-j];
mit: *******
Das wird wohl nichts werden, wenn du ein ganz anderes Element
zum vergleich benutzt, als das von dem dann die Zuweisung
ausgeht.
Was lernen wir daraus?
Kommt eine 'komplexe' Berechnung mehrmals in einem Codestück
vor, dann lohnt es sich immer, dafür eine Variable abzustellen
und die Berechnung zuerst mal nur einmal zu machen und das Ergebnis
in dieser Variablen zuwischenzuspeichern. In Folge wird dann anstelle
der Berechnung die Variable benutzt.
Was lernen wir noch daraus?
Das Code bei dem allesineinerWurschtgeschriebenwird nicht gerade
die Übersichtlichkeit fördert. Ein paar Leerzeichen an strategischen
Stellen positioniert können den Unterschied ausmachen zwischen
einem Code der fehlerhaft ist und einem Code bei dem einem
die Fehler nur so in die Augen springen. Ein paar Leerzeichen
hie und da dauern weder länger zum tippen noch bekommt man
Ausschlag davon.
1 | void Evaluation()
|
2 | {
|
3 | uint8_t i, j;
|
4 | uint16_t highVal=0;
|
5 | uint8_t testIndex;
|
6 |
|
7 | for( i = 0; i < 12; i++ )
|
8 | {
|
9 | for( j = 0; j < 7; j++ )
|
10 | {
|
11 | testIndex = index - j;
|
12 | if( index < j )
|
13 | testIndex += 30;
|
14 |
|
15 | if( sensoren[ i ].Mittelwert[ testIndex ] > highVal )
|
16 | highVal = sensoren[ i ].Mittelwert[ testIndex ];
|
17 | }
|
18 | }
|
19 |
|
20 | vPutnLCD( highval );
|
21 | }
|