dolar
16.11.2016, 09:27:14
Mam napsiac funkcje, ktora dostaje jakas liczbe a ma zwracac inna, gdzie:
// 50 -> 0
// 75 -> 50
// 100 -> 100
ale ma dzialac tez dla innych wartosci posrednich np: jak podam 60 -> 20 itp, zaczelam ze:
if(liczba<50) return 0 else return jakis_wzor_matematyczny_z_liczby
nie potrafie wpasc jak to mialoby mi wyliczac :/
Puszy
16.11.2016, 09:30:42
Masz podaną tę funkcję, dlaczego akurat dla 60 wynikiem ma być 20, jak na razie nie widzę zależności między podawaną liczbą a wynikiem.
dolar
16.11.2016, 09:32:00
Puszy, 60 to podalam tak z czapy, pewnie nie ma zaleznosci akurat w tym co podalam ;P , ale podobno miedzy tymi trzema sa, czy pomozesz?
Puszy
16.11.2016, 09:38:50
Dla tych trzech to widzę taką zależność że wartości są jakby skalowane, wyobraź sobie dwie osie, równej długości, jedna zacyzna się od 0 a druga od 50. Na końcu obydwie mają 100, dlatego w środku w jednej jest 50 a dla drugiej 75 bo 75 to połowa odległości między 50 a 100.
trueblue
16.11.2016, 09:44:48
Układ równań z dwiema niewiadomymi:
a50+b=0
a75+b=50
a100+b=100
Do rozwiązania a i b, wtedy należy podstawić do ax+b=y.
Puszy
16.11.2016, 09:49:32
Cytat(trueblue @ 16.11.2016, 09:44:48 )

Układ równań z dwiema niewiadomymi:
a50+b=0
a75+b=50
a100+b=100
Do rozwiązania a i b, wtedy należy podstawić do ax+b=y.
To będzie raczej typowa funkcja matematyczna z tego co piszesz to b równa się jednocześnie -a50 i -a oraz 50-a75 co raczej nie jest równe w przypadku podstawienia jakiejkolwiek liczby naturalnej, ale mogę się mylić, niech ktoś mnie poprawi.
Puszy
16.11.2016, 09:53:07
Cytat(rafkon1990 @ 16.11.2016, 09:51:41 )

Źle prawisz. Wróć do podstaw funkcji i równań. Podstawy matematyki...
Z układu równań wynika, że:
a = 2
b = -100
Fakt
trueblue
16.11.2016, 09:54:26
Nie wiem co masz na myśli pisząc typowa funkcja matematyczna.
ax+b=y to wzór funkcji liniowej.
Twoje obliczenia są błędne. Układ równań jest niesprzeczny i oznaczony.
dolar
16.11.2016, 09:54:55
Wiecie co? dziala

zobaczcie!!!
return if (liczba < 50) 0 else (liczba - 50) * 2;
rafkon1990
16.11.2016, 10:08:08
Cytat(dolar @ 16.11.2016, 09:54:55 )

Wiecie co? dziala

zobaczcie!!!
return if (liczba < 50) 0 else (liczba - 50) * 2;
Taka mała sugestia.
Skoro już ustaliłeś wzór funkcji, to myślę że możesz go spokojnie zastosować dla liczb mniejszych od 50. Nigdzie nie określiłeś nam dziedziny i zbioru wartości, zatem śmiało można założyć, że należą do liczb całkowitych, jeśli nie rzeczywistych.
Tomplus
16.11.2016, 22:30:08
Ja mam inną sugestię.
Zamiast zwracać jako if/else
można zrobić krócej np.:
return ($liczba < 50)?0:($liczba - 50) * 2;
SmokAnalog
16.11.2016, 22:33:25
Po co skracać return? Bardziej czytelnie wg mnie jest tak:
if ($liczba < 50) {
return 0;
}
return ($liczba - 50) * 2;
Ternary operator nie zawsze zwiększa czytelność.
Tomplus
16.11.2016, 23:03:09
Wszystko zależy od skomplikowania warunku, a dalej wzoru.
Pyton_000
17.11.2016, 08:09:58
Ja skłaniam się ku @SmokAnalog
Odpalając metodę żeby zobaczyć jak działa widać od razu jaki jest warunek brzegowy, i jaki jest wzór.
Zaś jeśli chodzi o ternary to przy bardziej złożonych niż "return 1 ? 2 : 3" zapisuję tak:
return ($liczba < 50)
? 0
: ($liczba - 50) * 2;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.