Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Aufteilung Tage in Monatszyklen


hier0 - Di 08.02.11 12:57
Titel: Aufteilung Tage in Monatszyklen
Hallo zusammen,

zum ersten Mal in meiner Karriere als Programmierer bin ich nun selbst ein Threadersteller da ich mein Frage auch durch intensives googlen nicht lösen konnte. (vielleicht weil ich die richtigen Suchbegriffe nicht gefunden hab)

Folgende Aufgabenstellung bereitet mir Kopfzerbrechen:

'x' enthält eine Anzahl an Tagen (bspw. 400)
'x' ist entweder von Typ 'ab', 'b', oder 'c' (Wird vom User in Formular eingegeben)

Typ 'a' hat folgende Aufteilungen 3,6,9,12,15,18,21,24,36 Monate
Typ 'b' hat folgende Aufteilungen 3,6,9,12,24 Monate
Typ 'c' hat folgende Aufteilungen 3,6,9,12,24,36 Monate

gesucht wird jetzt immer der nächsthöhere Monatszyklus in den 'x' reinpasst, das ist für Typ 'a' noch sehr simpel. (Für das Beispiel dann 15 Monate, da 400/30 = 13,333). Bei Typ 'b' und 'c' müssten als Ergebnis 12 Monate + 3 Monate herauskommen)

Ich komm irgendwie nicht auf nen vernünftigen Ansatz, wenn mir jemand helfen kann wär ich sehr dankbar. Ich hoffe ich habe die Problemstellung gut genug erläutert.

Mit freundlichen Grüßen


MaxWurzel - Di 08.02.11 13:47

Muss bei 'b' und 'c' nicht 24 Monate herauskommen? Oder hab ich die Idee nicht ganz verstanden?


hier0 - Di 08.02.11 14:00

user profile iconMaxWurzel hat folgendes geschrieben Zum zitierten Posting springen:
Muss bei 'b' und 'c' nicht 24 Monate herauskommen? Oder hab ich die Idee nicht ganz verstanden?


Hi Max und vielen Dank für deine schnelle Antwort.
Du hast Recht, mein Thread ist in der hinsicht falsch ausgedrückt.

Um das Problem besser zu erklären vielleicht mal der Kontext:
Es dreht sich um eine Lizenzverwaltung, genauer gesagt um den Austausch von ungültigen Lizenzen mit Restzeit durch neue Lizenzen.

'X' ist die Restzeit einer oder mehrerer Lizenzen zusammen.
Typ a, b und c sind jeweils verschiedene Lizensarten (1 User, 1-3 User, 1-5 User)

Es soll nun bei der Berechnung der neuen Lizenz die Dauer möglichst nah an der Restzeit liegen, ohne diese zu unterschreiten. Es können durchaus auch mehrere Lizensen pro Fall wieder ausgegeben werden. D.h. bei einer Restzeit von 14 Monaten für den Fall 'b' und 'c' wird ein Lizenzschlüssel für 12 und einer für 3 Monate benötigt. (Der Kunde erhält hier dann Bonus Tage im Wert von 1 Monat).


MaxWurzel - Di 08.02.11 14:10

Da du schon eine Lösung für 'a' hast, kannst du diese leicht auf 'b' und 'c' anpassen.
Typ 'a' 15 entspricht TYP 'b' 12 + 3
Typ 'a' 18 entspricht TYP 'b' 12 + 6
Typ 'a' 21 entspricht TYP 'b' 12 + 9
Typ 'a' 24 entspricht TYP 'b' 24
usw.


hier0 - Mi 09.02.11 15:43

Vielen Dank für deine Hilfe MaxWurzel,

Die Problemstellung hat sich mittlerweile ein wenig geändert, das soll aber nicht mehr Teil des Threads werden.

MfG