Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 1 głos ale 2 głosy i 7 głosów - liczenie zgodne z gramatyką
saper
post 13.08.2003, 11:20:48
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 28.01.2003
Skąd: Wrocław

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


Pewnego wieczora stwierdzilem ze przydalaby się na mojej stronie ankieta, wiec ja napisalem. Pomyslalem ze przedstawie wyniki w formie slownej by bylo oryginalniej aaevil.gif . No i tu wyszedl na wieszch pewien ciekawy problem. Jak sprawić by slowa dobierane do liczby glosow byly poprawnie odmienione? Na szczescie mamy tutaj zachowana pewna prawidlowosc ktora powtarza sie zawsze. Mianowicie wszystkie liczby konczace sie cyfra 1, 5, 6, 7, 8, 9 i 0 maja odmiane ...głosów (np. 21 głosów), wszystkie liczby konczace sie cyfra 2, 3 i 4 maja odmniane ...głosy (np. 34 głosy). Jedynym wyjatkiem od tej reguly w naszej ankiecie bylaby cyfra 1 ktora ma odmiane ...głos (1 głos).
Teraz moje pytanie: "Jaki skrypt napisać (przy uzyciu jakich funkcji) by rozpoznawal ostatnia cyfre w liczbie? Macie jakies pomysly?".
Go to the top of the page
+Quote Post
majkel
post 13.08.2003, 11:44:23
Post #2





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 11.08.2003
Skąd: Warszawa

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


Skrypcik...


[php:1:bc0700374d]

<?
//na początek wrzuć jakąś liczbę


if(substr($liczba,-2)==1) // tu jest substr($liczba,-2), bo może być 1 lub 11
{ echo("głos"); }


elseif(substr($liczba,-1)==2 || substr($liczba,-1)==3 || substr($liczba,-1)==4)

{ echo("głosy"); }


elseif((substr($liczba,-2)>5 && substr($liczba,-2)<21) || substr($liczba,-1)==1 || substr($liczba,-1)==5 ||

substr($liczba,-1)==6 || substr($liczba,-1)==7 || substr($liczba,-1)==8 || substr($liczba,-1)==9) //od liczby 5 do 21 jest

"głosów", a reszta już normalnie

{ echo("głosów"); }

?>[/php:1:bc0700374d]


Nie mam pewności czy działa, bo nie mam w tej chwili gdzie sprawdzić. Jak działa, to daj znać. Jak nie działa... to też daj znać i powiedz co nie działa.


--------------------
Pozdrawiam,
Michał K.
Go to the top of the page
+Quote Post
majkel
post 13.08.2003, 11:46:01
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 11.08.2003
Skąd: Warszawa

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


P.S. 18 linia to komentarz


--------------------
Pozdrawiam,
Michał K.
Go to the top of the page
+Quote Post
zombie
post 13.08.2003, 11:47:00
Post #4





Grupa: Zarejestrowani
Postów: 296
Pomógł: 0
Dołączył: 9.05.2002
Skąd: Warszawa

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


uaktualniony:

[php:1:56856b8aaf]<?php
$string = "454316";
if (strlen($string) == 1){$last = $string[(strlen($string)-1)];}
else {$last = substr($string, -2);}
?>[/php:1:56856b8aaf]


--------------------
audaces fortuna iuvat!
Go to the top of the page
+Quote Post
majkel
post 13.08.2003, 11:49:40
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 11.08.2003
Skąd: Warszawa

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


Można wpisać liczbę ujemną, wtedy zostawi ostatnią i wyrzuci resztę. Poza tym twój kod wyrzuci ostatnią a zostawi resztę... chyba... bo jak mówię nie mam gdzie sprawdzić... :?


--------------------
Pozdrawiam,
Michał K.
Go to the top of the page
+Quote Post
Nitro
post 13.08.2003, 14:36:10
Post #6





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Szczecin

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


Można i tak:
[php:1:bb071fe565]<?php
function koncowka($amount) {
if ($amount%10==0 || ($amount%100>10 && $amount%100<20)) { $buf="głosów"; }
else if ($amount%10>1 && $amount%10<5) { $buf="głosy"; }
else if ($amount==1) { $buf="głos"; }
else { $buf="głosów"; }
return $buf;
}
?>[/php:1:bb071fe565]
Go to the top of the page
+Quote Post
saper
post 13.08.2003, 15:57:59
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 28.01.2003
Skąd: Wrocław

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


Dziekuje za pomoc! Sposob Nitra dziala bez zarzutu. Co do sposobu majkela to nie sprawdzalem - Nitro wyrazil to nieco zwiezlej - ale dziekuje za checi smile.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 Wersja Lo-Fi Aktualny czas: 24.06.2025 - 20:19