Znaki zodiaku

0

Witam
Potrzebuje napisać program który pobiera datę urodzenia DD.MM / MM.DD a zwraca znak zodiaku rak, baran itp cały problem tkwi w tym że muszę wykonać to bez porównań. zero if'ów zero switch'ów itp. po prostu potrzebuje dobrać tak strukturę danych aby data była adresem pamięci gdzie zapisany jest znak zodiaku
z góry dziękuje za propozycje i pomysły

0

to walnij tablicę na 372 miejsca, w której wypełnisz sobie wszystkie znaki zodiaku. Następnie wpisaną datę przeliczysz na numer dnia w roku (problem z Lutym i tym ze miesiące mają 30 lub 31 dni rozwiażesz po prostu robią trochę więcej dni :P)

0

chyba masz na myśli 365/366 dni w roku :) no jest to pomysł tyle ze tablica będzie dużo zajmowała...
ale podsunąłeś mi pomysł żeby nie uzupełniać jej nazwami zodiaków tylko adresami ;D

0

Nie, miałem na myśli 372, 31x12 i w tym kilka "lewych" dni :P
Sam mówiłes że ma tam nie być if'ów, dlatego to zaproponowałem.
Możesz też wymyślić funkcję hashującą która dla daty zwróci ci indeks w tablicy pod którym jest dany znak zodiaku. W ten sposób pamięci nie marnujesz bo w tablicy masz 12 znaków tylko. Ale to wymaga chwili myślenia ;)

0

zrobiłem tą tablice... trochę to czasochłonne. problem w tym że wyskakuje mi błąd "initializer element is not constant" wsadziłem tam wskaźniki adresów zodiaków

0

A czy ta tablica to jest const char[X]?

0

static char *d[][]

// wywaliłem static oraz przesunąłem do funkcji tą deklaracje. Nie ekonomicznie ale działa ;) thx za pomoc

0
z=dzień+miesiąc*31;
if (z<=19+ 1*31) return 1;
if (z<=18+ 2*31) return 2;
if (z<=20+ 3*31) return 3;
...
if (z<=21+11*31) return 11;
if (z<=21+12*31) return 12;
return 1;

// a czytał, że skoków ma nie być? - Ł

0

oczywiście zamiast IF powinno być WHILE

1 użytkowników online, w tym zalogowanych: 0, gości: 1