Was erwartest Du als Rückgabe und was bekommst Du?
Lasse Mal eine FOR-Schleife über diese Funktion laufen und lasse Dir Input und Output der Funktion ausgeben.
Nichts für Ungut, aber so weit konnte ich mir Das schon denken.
Als Ergebnis habe ich immer nur 1 von 0-200.
DAS war ungefähr die Antwort auf meine Frage.
Da Du ja schon die Lösung bekommen hast, hast Du einen Unterschied in Deinem und den Weg von agmue gefunden?
Wenn du es optimieren möchtest und sonst keine float Berechnungen machst, ist das Nachsehen in einer Tabelle erheblich besser.
Sind ja nur 12 mögliche Ergebnisse.
michael_x:
... ist das Nachsehen in einer Tabelle erheblich besser.
Ja, ich hatte auch noch diese Möglichkeit probiert:
byte Beaufort(uint8_t kmh) {
byte w = 0;
switch (kmh) {
case 0:
w = 0;
break;
case 1 ... 5:
w = 1;
break;
case 6 ... 11:
w = 2;
break;
case 12 ... 19:
w = 3;
break;
case 20 ... 28:
w = 4;
break;
case 29 ... 38:
w = 5;
break;
case 39 ... 49:
w = 6;
break;
case 50 ... 61:
w = 7;
break;
case 62 ... 74:
w = 8;
break;
case 75 ... 88:
w = 9;
break;
case 89 ... 102:
w = 10;
break;
case 103 ... 117:
w = 11;
break;
default:
w = 12;
break;
}
return w;
}