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
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)
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
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 ;)
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
A czy ta tablica to jest const char[X]?
static char *d[][]
// wywaliłem static oraz przesunąłem do funkcji tą deklaracje. Nie ekonomicznie ale działa ;) thx za pomoc
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ć? - Ł
oczywiście zamiast IF powinno być WHILE