Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Obiektowa silnia
CzlowiekSkrypt
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 9.11.2014
Skąd: Bytom

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


Witam, bawię się z obiektówką i postanowiłem dla praktyki napisać klasę która oblicza silnię, niestety wynik jaki dostaje to same zera i ich ilość jest zależna od wpisanej liczby podczas tworzenia obiektu. Kod strukturalnie działa bez zarzutu, niestety sypie mi się w OOP. Najbardziej mnie dziwią te zera, licznik jest ustawiony na 1 a zmienna $silnia też na 1 , skąd u licha te zera ?

  1.  
  2. <?php
  3.  
  4. class silnia {
  5.  
  6. public $silnia;
  7.  
  8. public function policz($liczba){
  9.  
  10. $this->liczba=$liczba;
  11.  
  12. for($i=1; $i<=$liczba; $i++){
  13. $this->silnia=1;
  14.  
  15. echo $silnia*=$i;
  16.  
  17. }
  18. }
  19. }
  20.  
  21. $obliczenie = new silnia;
  22. $obliczenie->policz(5);
  23.  
  24.  
  25. ?>
  26.  
  27. Wynik skryptu:
  28. Notice: Undefined variable: silnia in C:\xampp\htdocs\phptest\sesje\silnia.php on line 14
  29. 00000
  30.  
  31.  
  32.  
  33.  
Go to the top of the page
+Quote Post
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


dlatego że masz zły algorytm :
http://pl.wikisource.org/wiki/Silnia/kod#Iteracyjnie_2

Go to the top of the page
+Quote Post
CzlowiekSkrypt
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 9.11.2014
Skąd: Bytom

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


Bazowałem na czymś takim :

  1. $n=10;
  2. $silnia1=1;
  3. for($i=1; $i<=$n; $i++){
  4. $silnia1 *= $i;}
  5. echo $silnia1;


Ten kod poza klasą śmiga aż miło
Go to the top of the page
+Quote Post
com
post
Post #4





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no to teraz tak to zaimplementuj do tej twojej 'obietowosci' wink.gif
Go to the top of the page
+Quote Post
CzlowiekSkrypt
post
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 9.11.2014
Skąd: Bytom

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


Czyli krótko mówiąc - nie da się ? tongue.gif
Go to the top of the page
+Quote Post
com
post
Post #6





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


dbaj o wciecia i dawaj } w nowej lini bo potem się gubisz smile.gif i nie echo tylko return sie w daje, ale oczywiście $this->silnia a nie $silnia itd

da się ale żeby nauka była owocna trzeba pomyśleć trochę samemu smile.gif ja Ci tylko podpowiadam biggrin.gif
Go to the top of the page
+Quote Post
CzlowiekSkrypt
post
Post #7





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 9.11.2014
Skąd: Bytom

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


Dobra przynajmniej wiem że nie będę siedział przy tym na marne oneeyedsmiley02.png
Go to the top of the page
+Quote Post
com
post
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


podziel się efektem swojej pracy, jak coś wykombinujesz dla potomniaków biggrin.gif

btw nie dajesz public silnia a private ew protected smile.gif

http://ideone.com/zz54sM Lkingsmiley.png

bo widzę kolega myśli i nic nie wymyślił php.gif
Go to the top of the page
+Quote Post
CzlowiekSkrypt
post
Post #9





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 9.11.2014
Skąd: Bytom

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


dzieki za rozwiazanie ! oneeyedsmiley02.png nie pomyślałem o IF ie tongue.gif

Ten post edytował CzlowiekSkrypt 30.12.2014, 01:50:15
Go to the top of the page
+Quote Post
com
post
Post #10





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


nie if był problemem, ale to ze mylisz obiektowość ze strukturalnościa, zmienne lokalne traktujesz jak obiektowe i na odwrót smile.gif

ponadto pomyliły Ci sie klamerki i nie tam te echo co miałeś wrzuciłeś, przeanalizuj to dobrze i przestudiuj kurs z którego sie uczyłeś jeszcze raz smile.gif

btw widziałem sciana.gif
Go to the top of the page
+Quote Post
CzlowiekSkrypt
post
Post #11





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 9.11.2014
Skąd: Bytom

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


Szkoda że skasowałem mój poprzedni kod bo to co wyprawiałem to jakieś czary, stała static zmieniała wartość tongue.gif oj dużo pracy mnie czeka z ta obiektówka
Go to the top of the page
+Quote Post
com
post
Post #12





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


tak ?
http://ideone.com/e3wLdw

http://stackoverflow.com/questions/1185605...ntiated-classes

Ten post edytował com 30.12.2014, 02:04:25
Go to the top of the page
+Quote Post
CzlowiekSkrypt
post
Post #13





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 9.11.2014
Skąd: Bytom

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


Miałem mniej więcej coś takiego

static private $silnia = 1; ,

bez IF ,

i pi razy drzwi coś takiego w funkcji for

for($i=1; $i<=$liczba; $i++){
self::$silnia*=$i;
}
return $i;


i w kodzie sobie wywoływałem $liczba, $i i $silnia żeby widzieć co się z nimi dzieje no i jak to zobaczyłem to poszedłem oglądać film biggrin.gif
Go to the top of the page
+Quote Post
com
post
Post #14





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no to byleś bliski prawdy jednego nie rozumiem czemu return $i a nie self::$silnia biggrin.gif
Go to the top of the page
+Quote Post
CzlowiekSkrypt
post
Post #15





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 9.11.2014
Skąd: Bytom

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


Teraz jak tak o tym myślę to w zasadzie nie wiem ... coś mi się z tego wszystkiego pomieszało oneeyedsmiley02.png , jeszcze raz dzięki za rozwiązanie i dobranoc biggrin.gif
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 Aktualny czas: 22.08.2025 - 09:20