Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Parzystosc zmiennej
Forum PHP.pl > Forum > Przedszkole
telepawel
Witam

Doszukac sie nie moge funkcji ktora bedzie sprawdzala czy dana wartosc zmiennej
$value jest parzysta czy tez nieparzysta.

Czy istnieje taka funkcja ?

Pawel
kszychu
Jaki jest warunek parzystości liczby? Taki, że reszta z dzielenia przez 2 wynosi zero*. teraz tylko ubierz to w działania i już masz gotowe rozwiązanie.




*) wyjątkiem jest oczywiście zero, które jak wiadomo nie jest ani parzyste ani nieparzyste.
jbiz
  1. <?php
  2. if ( $x % 2 == 0 ) print &#092;"parzysta\";
  3. ?>
sobstel
poszukaj o modulo (%)
telepawel
:DDD
W jednej linijce zawarles 20 moich...ladnie smile.gif


Napisalem teraz gdyby ktos potrzebowal.
Uwaga nietestowane:

  1. <?php
  2.  
  3. function test_parzystosci($value){
  4. $val_po_dzieleniu = $value/2;
  5.  
  6. if(strstr($val_po_dzieleniu, &#092;".\"))
  7. $get = explode(&#092;".\", $val_po_dzieleniu);
  8. $reszta = $get['1'];
  9. {
  10.   if($get == 0 or $get == NULL)
  11.     {
  12.     $check = &#092;"Parzysta\";
  13.     }else{
  14.     $check = &#092;"Nieparzysta\";
  15.     }
  16. }else{
  17.   $check = &#092;"Parzysta\";
  18. }
  19.  
  20. echo $check;
  21. }
  22.  
  23.  
  24. ?>


wywolanie
np:
test_parzystosci(2);
kszychu
Cytat(telepawel @ 2004-06-30 12:29:35)
:DDD
W jednej linijce zawarles 20 moich...ladnie smile.gif


Napisalem teraz gdyby ktos potrzebowal.
Uwaga nietestowane:

  1. <?php
  2.  
  3. function test_parzystosci($value){
  4. $val_po_dzieleniu = $value/2;
  5.  
  6. if(strstr($val_po_dzieleniu, &#092;".\"))
  7. $get = explode(&#092;".\", $val_po_dzieleniu);
  8. $reszta = $get['1'];
  9. {
  10.   if($get == 0 or $get == NULL)
  11.     {
  12.     $check = &#092;"Parzysta\";
  13.     }else{
  14.     $check = &#092;"Nieparzysta\";
  15.     }
  16. }else{
  17.   $check = &#092;"Parzysta\";
  18. }
  19.  
  20. echo $check;
  21. }
  22.  
  23.  
  24. ?>


wywolanie
np:
test_parzystosci(2);

Nie no, ja wymiękam! Ludzie mu tu piszą jak to zrobić najprościej i najszybciej a ten wyświetla tu takie pokemony! Weź to schowaj i nie pokazuj, bo się ludzie będą śmiali!
talee
Ha ha ha pokemony...

Może powiesz mi ile wynosi reszta z dzieleni 0 przez 2?

A najbardziej elegancko będzie:

  1. <?php
  2. if ($i & 1) {
  3.  echo 'nieparzysta';
  4. }
  5. else {
  6.  echo 'parzysta';
  7. }
  8. ?>


A koleś pytał się czy istnieje taka funkcja? Więc odp. brzmi tak/nie/nie wiem guitar.gif

Wybacz musiałem bo kolo oberwał bez przyczyny
rzseattle
php => php Poczatkujacy
Jabol
ale numerek z 'and' (&) bitowym zadziała tylko na liczbach całkowitych, co dobrze może ilustrować majsterkowanie z tym programem (kompilacja `gcc -lm -o floatbits floatbits.c`):
Kod
#include<stdlib.h>
#include<stdio.h>
#include<math.h>

int main(int argc, char *argv[])
{
    int i=0, bit=0, bits=0;
    float f;
    if(argc<2) exit(-1);
    f=atof(argv[1]);
    memcpy(&bits, &f, 4);
    printf("float: %f (hex: 0x%x)\nint: %d (hex: 0x%x)\n", f, f, bits, bits);
    for(i=31; i>=0; i--)
        {
        bit=pow(2,i);
        if((bits&bit)==bit) printf("1");
            else printf("0");
        }
    puts("");
    return 0;
}
Dlatego też chyba lepsze jest rozwiązanie z modulo, chyba, że jesteśmy pewni iż liczba jest całkowita.

EDIT:
a tak wogóle to właśnie doszłem, że liczb zmiennoprzecinkowych nie można traktoawć operatorami bitowymi, więc jeżeli chcemy uniknąć zaskoczenia lepiej używać modulo.
kszychu
Cytat(talee @ 2004-06-30 17:46:51)
Może powiesz mi ile wynosi reszta z dzieleni 0 przez 2?

A może przeczytasz sobie mój pierwszy post? Podpowiem: szukaj przypisu.
dr_bonzo
kszychu:
Cytat
Jaki jest warunek parzystości liczby? Taki, że reszta z dzielenia przez 2 wynosi zero*.
(...)
*) wyjątkiem jest oczywiście zero, które jak wiadomo nie jest ani parzyste ani nieparzyste.


Jedno jest pewne, reszta z dzielenia zera przez dwa = 0:
0 / 2 = 0 reszty 0
A jesli reszta jest == 0 to zgodnie z ta definicja jst to liczba parzysta.
Liczba nieparzysta: reszta z dzielenia przez 2 == 1. Czyli zero nie jest liczba nieparzysta.
talee
Dokładnie mówiąc est tak: liczbą parzystą nazywamy każdą liczbę postaci 2 * k gdzie k należy do N. Czy zero jest parzyste czy ne parzyste zależy od tego czy w definicji N przyjmiemy 0 należy do N lub ne. O ile mi wiadomo już ładnych kilka lat przyjmuję się, że 0 należy do N.
sobstel
Cytat(talee @ 2004-07-01 15:29:39)
O ile mi wiadomo już ładnych kilka lat przyjmuję się, że 0 należy do N.

kwestia czy 0 zaliczać do liczb naturalnych czy nie zawsze zależy od konwencji przyjętej w danej książce. jest to kwestia sporna i nie rozstrzygnięta.
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.