Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wzor na funkcje
Forum PHP.pl > Forum > Przedszkole
dolar
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:

  1.  
  2. if(liczba<50) return 0 else return jakis_wzor_matematyczny_z_liczby


nie potrafie wpasc jak to mialoby mi wyliczac :/
Puszy
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
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
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
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
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
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
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
Wiecie co? dziala tongue.gif zobaczcie!!!

  1.  
  2. return if (liczba < 50) 0 else (liczba - 50) * 2;
  3.  
rafkon1990
Cytat(dolar @ 16.11.2016, 09:54:55 ) *
Wiecie co? dziala tongue.gif zobaczcie!!!

  1.  
  2. return if (liczba < 50) 0 else (liczba - 50) * 2;
  3.  


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
Ja mam inną sugestię.
Zamiast zwracać jako if/else
można zrobić krócej np.:

  1. return ($liczba < 50)?0:($liczba - 50) * 2;
SmokAnalog
Po co skracać return? Bardziej czytelnie wg mnie jest tak:

  1. if ($liczba < 50) {
  2. return 0;
  3. }
  4.  
  5. return ($liczba - 50) * 2;


Ternary operator nie zawsze zwiększa czytelność.
Tomplus
Wszystko zależy od skomplikowania warunku, a dalej wzoru.
Pyton_000
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:

  1. return ($liczba < 50)
  2. ? 0
  3. : ($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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.