Hallo, ich möchte eine Logik programmieren, die aus einem Datenstrom mit Messwerten die beiden kleinsten Werte speichert. Wenn der kleinste Messwert zwei mal im Datenstrom kommt, dann sollen beide Speicher diesen Wert erhalten: Würde das so gehen ?
1 | Init: I_d_min1[i] = 100; // Minimalwertspeicher initialisieren |
2 | I_d_min2[i] = 100; |
3 | |
4 | |
5 | Loop: |
6 | // I_d[i] = aktueller Messwert
|
7 | // I_d_min1[i] Minimalwertspeicher 1
|
8 | // I_d_min2[i] Minimalwertspeicher 2
|
9 | |
10 | // Wenn aktueller Wert kleiner als die beiden Speicher ist
|
11 | if ((I_d[i] < I_d_min1[i]) && (I_d[i] < I_d_min2[i]) ) |
12 | {
|
13 | // Wenn Speicher1 > Speicher 2
|
14 | if (I_d_min1[i] > I_d_min2[i]) |
15 | //dann Speicher 1 überschreiben
|
16 | I_d_min1[i] = I_d[i]; |
17 | else
|
18 | //sonst Speicher 2 überschreiben
|
19 | I_d_min2[i] = I_d[i]; |
20 | }
|
21 | |
22 | else
|
23 | {
|
24 | // Wenn aktueller Wert kleiner Speicher 1 und größer Speicher2
|
25 | if ((I_d[i] < I_d_min1[i]) && (I_d[i] > I_d_min2[i]) ) |
26 | // dann Speicher 1 überschreiben
|
27 | I_d_min1[i] = I_d[i]; |
28 | // Wenn aktueller Wert kleiner Speicher 2 und größer Speicher1
|
29 | if ((I_d[i] < I_d_min2[i]) && (I_d[i] > I_d_min1[i]) ) |
30 | // dann Speicher 2 überschreiben
|
31 | I_d_min2[i] = I_d[i]; |
32 | }
|