• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Proszę o wytłumaczenie konstrukcji.

Konferencja JOIN! 2018
0 głosów
110 wizyt
pytanie zadane 25 listopada 2017 w PHP, Symfony, Zend przez pawelwch Użytkownik (860 p.)

Witam. Mogłby mi ktos wytłumaczyć ponizsza konstrukcje?


Z mojej obserwacji jest to rodzaj pewnego odliczania( petla while). Nie moge do konca rozszyfrowac tego wiersza z IF... Mogłby ktos "przełożyc na język polski" ;)

3 odpowiedzi

+2 głosów
odpowiedź 25 listopada 2017 przez Kamil Łydka Dyskutant (9,010 p.)
edycja 25 listopada 2017 przez Kamil Łydka

Zapoznaj się z operatorem modulo. Ogólnie służy on do wyznaczania reszty.

if ( ($liczba %2) == 0){
 echo "liczba jest parzysta"; 
}

Bo jeśli coś podzielimy przez 2 i reszta wynosi 0, to znaczy że liczba jest parzysta. Jeśli podzielimy przez 2 i reszta wynosi: 1, to...? :) (No i ten ostatni else jest niepotrzebny.)

Przełóż to na swój algorytm i zrozum, jakie liczby drukuje twój. 

(na przyszłość, nie wrzucaj screena kodu, tylko sam kod, umieszczony w bloczkach)

1
komentarz 25 listopada 2017 przez pawelwch Użytkownik (860 p.)
...to wychodzi liczba nieparzysta ;)

Dziekuje :)
komentarz 25 listopada 2017 przez pawelwch Użytkownik (860 p.)

Jak juz mam taka okazje to zapytam, co w tym kodzie jest źle? Przekierowuje mnie pod błedny adres z tego co widzę...

https://gist.github.com/pawelwch/fc7153ded49b61031da992ef6fad7758

Powinno przekierowywać na 

http://localhost/youtube1/petlaphp.php

a przekierowuje na 

http://localhost/youtube1/localhost/youtube1/petlaphp.php 

komentarz 25 listopada 2017 przez Kamil Łydka Dyskutant (9,010 p.)

Przeanalizuj te dwa adresy, które wstawiłeś i czy na pewno tutaj: 

<form action="http://localhost/youtube1/petlaphp.php"

potrzebujesz ten http:://localhost/

+2 głosów
odpowiedź 25 listopada 2017 przez Eryk Andrzejewski VIP (146,320 p.)
Pętla while wykonuje się od numerka startowego do końcowego (wysłanego w zapytaniu). Po każdym jej obiegu ten numer jest zwiększany o jeden. Czyli program operuje na zbiorze liczb naturalnych z przedziału <$startNum, $countTo>.

W każdym obiegu pętli jest sprawdzane, czy wynik modulo zmiennej $startNum przez 2 jest różny od zera, a więc czy liczba jest nieparzysta (dla liczb nieparzystych modulo 2 wynosi 1 - modulo to inaczej reszta z dzielenia). Jeżeli jest nieparzysta, to wyświetla ją na ekranie (a następnie inkrementuje liczbę, bo pozostałe bloki się nie wykonają).

Jeżeli jednak była parzysta, to sprawdza się najpierw czy jest większa lub równa 1000. Jeśli tak, przerywa się działanie całej pętli i program się kończy (lub wykonuje się kod poniżej).

Jeśli jednak jest mniejsza niż 1000, to zwiększa się liczbę $startNum i ponownie wykonuje pętlę.
komentarz 25 listopada 2017 przez pawelwch Użytkownik (860 p.)
Super. Dziekuje. O takie cos mi chodziło :)
+1 głos
odpowiedź 25 listopada 2017 przez CzikaCarry Szeryf (75,280 p.)
Na Polski? Proszę bardzo:

Jeśli $startnum mod 2 jest różne od 0, to wypisz $startnum ", ".

Ogólnie modulo to reszta z dzielenia.

Nie ma tu czego za bardzo tłumaczyć, ani tym bardziej rozumieć. Przy pomocy modulo 2 zazwyczaj sprawdza się, czy liczba jest parzysta / nieparzysta.
3
komentarz 25 listopada 2017 przez Tomek Sochacki VIP (116,350 p.)

Przy pomocy modulo 2 zazwyczaj sprawdza się, czy liczba jest parzysta / nieparzysta.

Można też to sprawdzić operatorem bitowym AND, jest to krótsza forma zapisu, choć niektórzy krytykują ogólnie używanie operatorów bitowych ale to już kwestia indywidualna więc przykład daję jako pewną ciekawostkę :)

const numberType = ( n ) => n&1 ? 'nieparzysta' : 'parzysta';

numberType( 2 );  //"parzysta"
numberType( 20 ); //"parzysta"
numberType( 3 );  //"nieparzysta"
numberType( -3 ); //"nieparzysta"
numberType( -4 ); //"parzysta"

 

komentarz 26 listopada 2017 przez CzikaCarry Szeryf (75,280 p.)
Ooo, a tego to nie wiedziałem, chyba zacznę korzystać :)

Podobne pytania

0 głosów
1 odpowiedź 119 wizyt
pytanie zadane 26 lutego 2017 w C# i .NET przez Kamil Musial Początkujący (250 p.)
0 głosów
2 odpowiedzi 148 wizyt
pytanie zadane 19 lipca 2017 w C i C++ przez barti22062 Początkujący (370 p.)
0 głosów
2 odpowiedzi 146 wizyt
pytanie zadane 25 lutego 2017 w C i C++ przez Aleksander Nowicjusz (240 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

55,235 zapytań

99,529 odpowiedzi

204,779 komentarzy

27,217 pasjonatów

Przeglądających: 224
Pasjonatów: 5 Gości: 219

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...