![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 31.12.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witajcie, znów mam głupie pytanie...
Mam w funkcji takie coś:
A teraz pytanie Jak mogę to skrócić, albo jak napisać inną funkcję by była odpowiedzialna za pisanie tych warunków w (if). Bo nie mogę ich ustalić raz, bo są one zmienne(w zależności ile wyników wybierze ktoś tyle się będzie wyświetlać), czy jest możliwość by to zrobić jak tak czy ktoś może podpowiedzieć mi. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To popatrz jak się zmieniają liczby na litość boską (IMG:style_emoticons/default/winksmiley.jpg)
mov/1/X od 0 do 4999 mov/2/x od 5000 do 9999 Tak wyłapujesz katalog nadrzędny. Podrzędne masz analogicznie, tyle że na zakresach 10 razy mniejszych... no i mają start nie od 1 ale od 0 mov/1/0 od 0 do 499 mov/1/1 od 500 do 999 Tak więc robisz dzielenie liczb przez 5000 zaokrąglasz w dół i dodajesz 1. A potem resztę z tego działania dzielisz przez 500 i zaokrąglasz tylko w dół. Przykład? Liczba 7645: 7645/5000 = 1,529 = 1+1 = 2 2645/500 = 5,29 = 5 Sprawdzamy Twoje IFy ma wyjść mov/2/5/ A co mi wyszło? 2 oraz 5. Sprawdźmy dla granicznych dla pewności... 4999/5000 = 0,9998 = 0+1 = 1 4999/500 = 9,998 = 9 1/9 -> Prawidłowe! 5000/5000 = 1+1 = 2 0/500 = 0 2/0 -> Prawidłowe! Jak widzisz... Ten skrypt jest mocno do przodu bo już potrafi operować na 9/9, co u Cienie skończy się przy $nr1 = 49999, a Ty dopiero masz 6/3 skryptem przewidziane (IMG:style_emoticons/default/winksmiley.jpg) Poucz się więcej matmy a nie siedź tylko przed kompem (IMG:style_emoticons/default/biggrin.gif) EDIT: Popatrz zresztą na wyniki dzieleń... Są 10 razy mniejsze! To znów ułatwienie bo nie musisz wcale liczyć reszty z dzielenia przez 5000, mogąc to zastąpić odejmowaniem. Bierzesz liczbę i dzielisz ja przez 5000. Do całości dodajesz 1, a ułamek mnożysz razy 10 i zaokrąglasz w dół. Owe 7645 przerobię raz jeszcze: 7645/5000 = 1,529 = 1+1=2 0,529*10 = 5,29 = 5 Nie banalniejsze?
Co jest krótsze i wydajniejsze? (IMG:style_emoticons/default/winksmiley.jpg) 3 linijki czy 100 operacji if else (IMG:style_emoticons/default/winksmiley.jpg) Ten post edytował thek 17.01.2010, 00:09:49 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 22:58 |