Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wzor na funkcje
dolar
post 16.11.2016, 09:27:14
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

Ostrzeżenie: (0%)
-----


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 :/
Go to the top of the page
+Quote Post
Puszy
post 16.11.2016, 09:30:42
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
dolar
post 16.11.2016, 09:32:00
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Puszy
post 16.11.2016, 09:38:50
Post #4





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
trueblue
post 16.11.2016, 09:44:48
Post #5





Grupa: Zarejestrowani
Postów: 6 804
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
Puszy
post 16.11.2016, 09:49:32
Post #6





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Puszy
post 16.11.2016, 09:53:07
Post #7





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
trueblue
post 16.11.2016, 09:54:26
Post #8





Grupa: Zarejestrowani
Postów: 6 804
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
dolar
post 16.11.2016, 09:54:55
Post #9





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

Ostrzeżenie: (0%)
-----


Wiecie co? dziala tongue.gif zobaczcie!!!

  1.  
  2. return if (liczba < 50) 0 else (liczba - 50) * 2;
  3.  
Go to the top of the page
+Quote Post
rafkon1990
post 16.11.2016, 10:08:08
Post #10





Grupa: Zarejestrowani
Postów: 37
Pomógł: 9
Dołączył: 14.09.2016
Skąd: Śląskie

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Tomplus
post 16.11.2016, 22:30:08
Post #11





Grupa: Zarejestrowani
Postów: 1 874
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Ja mam inną sugestię.
Zamiast zwracać jako if/else
można zrobić krócej np.:

  1. return ($liczba < 50)?0:($liczba - 50) * 2;
Go to the top of the page
+Quote Post
SmokAnalog
post 16.11.2016, 22:33:25
Post #12





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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ść.

Ten post edytował SmokAnalog 16.11.2016, 22:33:46
Go to the top of the page
+Quote Post
Tomplus
post 16.11.2016, 23:03:09
Post #13





Grupa: Zarejestrowani
Postów: 1 874
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Wszystko zależy od skomplikowania warunku, a dalej wzoru.
Go to the top of the page
+Quote Post
Pyton_000
post 17.11.2016, 08:09:58
Post #14





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 08:13