Forum: Mikrocontroller und Digitale Elektronik Algorythmus für wiederkehrende Zahlen


von makrox (Gast)


Lesenswert?

Hallo,
ich habe 2 Variablen:
1
uint8 amount;
2
uint8 length;

amount kann NUR Werte von {1,2,3,4,5,6,7,8} annehmen.
length kann {7,14,21,28} betragen.

length hängt von amount folgendermaßen ab:

length...amount
..7    -- ..1..
..7    -- ..2..
..14   -- ..3..
..14   -- ..4..
..21   -- ..5..
..21   -- ..6..
..28   -- ..7..
..28   -- ..8..

bisher fällt mir nichts besseres als ne if Bedingung ein:
1
if(amount < 3)
2
  length = 7;
3
else if (amount < 5)
4
  length = 14;
5
else if (amount < 7)
6
  length = 21;
7
else
8
  length = 28;

Aber das ist doch eine so schöne abhängigkeit, kann man das nicht auch 
über einen Algorythmus darstellen?
Ich zerhirn mir jetzt seit x-minuten den kopf, mir kommt allerdings 
nicht die Erleuchtung. :-(

Sieht einer von eich vlt. die Formel die in obiger Abhängigkeit steckt?

von raketenfred (Gast)


Lesenswert?

round(amount/2)*7=length

von hans (Gast)


Lesenswert?

versuch mal
1
lenght=((amount+1)>>1)*7;

hans

von HolgerT (Gast)


Lesenswert?

length = 7 * (amount+1) DIV 2   // DIV gibt den ganzzahlingn Teil der 
Division zurueck.

von spess53 (Gast)


Lesenswert?

Hi

length = ((amount+1) div 2)*7

MfG Spess

von HolgerT (Gast)


Lesenswert?

.. wobei die Division vor der Multiplikation ausgefuehrt werden muss!!

length = 7 * ((amount+1) DIV 2)   // DIV gibt den ganzzahlingn Teil der
Division zurueck.

von Klugexkrementierer (Gast)


Lesenswert?

Algorithmus, mit I. Das hat nichts mit Rythmus zu tun.

von makrox (Gast)


Lesenswert?

Klasse Danke :-)
Das schlankt meinen Code etwas ab :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.