Problem mit Mathe Formel
-
Hallo
Also ich will ein Programm machen das folgendes tut:
Der User gibt ein wie viele Siege er hat und dann gibt das Programm ihm seine
Punkte aus:
Ab 14 Siegen bekommt man 232 Punkte
Ab 15 Siegen bekommt 272 Punkte Punkte
und so weiter dann immer +40
Ab 16 Siegen bekommt man dann 312 Punkte
Weiss einer da zufällig eine Formel für oder so ich bin schon die ganze zeit am probieren aber es klappt nicht

-
Habe ich ein Deja vu?
int CalculatePoints (int iWin) { if (iWin < 14) return 0; return ((iWin - 14) * 40) + 232; }kA ob das so geht, nicht getestet
EDIT: bei sowas gibt es keine Pauschalformel. Du musst für jedes Problem eine passende Formel entwickeln.
-
Jo es geht thx

-
Herangehensweise an das eigentlich simple Problem:
Gegeben sind die Punkte ab einer bestimmten Zahl Siege (hier 14). Ab dem 14. Sieg, welcher 232 Punkte gibt, erhält man für jeden weiteren Sieg 40 Punkte.
Siege | Punkte ---------------+---------------- 0 - 13 | nicht definiert 14 | 232(+ 0 = 232) 15 | 232 + 40 = 272 16 | 272 + 40 = 312 17 | 312 + 40 = 352 ... | ...Die Punkte nehmen (ab Sieg 14) linear zu. Es handelt sich folglich um eine (einfache) lineare Gleichung der Form y = ax + b.
y ^= Punktzahl
a ^= Punktezunahme (40)
x ^= Zahl der Siege ab dem 14. Sieg (Zahl der Siege minus 14)
b ^= Anzahl Punkte ab dem 14. Sieg (232)a und b sind bekannt und können daher eingesetzt werden:
y = 40 * (Siege - 14) + 232
Wobei 'Siege' größer oder gleich 14 sein muss, da die Lösung für den Bereich 0 bis 13 nicht definiert ist.
Es ergibt sich demnach folgende Funktion (mit Hilfsvariablen zu Verdeutlichung):
int punkte(int siege) { int y; // Rückgabewert int x = siege - 14; int a = 40; int b = 232; y = a*x + b; return y; }Für die Bereichsprüfung von 'siege' empfiehlt es sich, eine Ausnahme zu werfen und nicht den Wert 0 zurück zu geben. Anders natürlich, wenn es bis einschließlich 13 Siegen null Punkte gibt.
Grüße...
Heiko