Když se jedno znamení táhne přes dva měsíce, nedá se číslo měsíce použít jako první rozlišovací podmínka. Resp. dá, ale musela bys potom v každé větvi toho case ještě přes if/else rozvětvit do dvou znamení podle dne a tím by se to celé zkomplikovalo.
Asi nejelegantnější by bylo převést si datum do juliánského formátu. To znamená, že se dny počítají na celý rok lineárně od 1 do 365 (přestupné roky se u znamení neřeší) a o měsíce se nestaráme. Pak by ti pro každé znamení stačil jednoduchý interval.
Nebo úplně nejpřímočařejší řešení by byla tabulka, do které by se kouklo na řádek odpovídající číslu měsíce a sloupec odpovídající dni a tam by se rovnou našlo znamení. To je sice rychlé a jednoduché, ale relativně náročné na paměť (372 B) a ruční datlování konstant a asi to není úplně přesně podle zadání :-).