

########################################################
##
## Nazwa: Słowny zapis liczb [PL]
## Autor: Paweł Madej
##
## Data utworzenia: 2003-08-22
## Wersja: 1.0
## Licencja: GPL
## Uwagi: Możesz dowolnie modyfikować i wykorzystywać
## ten skrypt pod warunkiem zachowania praw
## autorskich i przesłania do mnie informacji
## o tym, że chcesz go wykorzystać.
##
## E-Mail: pmadej@gazeta.pl
##
## Działanie: Skrypt pobiera z formularza liczbę
## i zapisuje ją słownie i dodaje słowo
## "złotych" lub "złote" w zależności od
## ostatniej cyfry, a wartość po przecinku
## zapisuje w formie "XX/100"
##
########################################################
//formularz do podania liczby
print("Podaj liczbę z przedziału 1..999999.99");
print("<form action="test.php" method="post"><input type="test" name="i" value="$i"/>");
print("<input type="submit" value="zmień"/><br /><br />Wynik:<br /><br />");
//tablice zawierajace słowny zapis cyfr
$test = array ('jeden','dwa','trzy','cztery','pięć','sześć','siedem','osiem','dziewięć','dziesięć',
'jedenaście','dwanaście','trzynaście','czternaście','piętnaście','szesnaście','siedemnaście',
'osiemnaście','dziewiętnaście','dwadzieścia');
$test2 = array ('dziesięć','dwadzieścia','trzydzieści','czterdzieści','pięćdziesiąt','sześćdziesiąt',
'siedemdziesiąt','osiemdziesiąt','dziewięćdziesiąt','sto');
$test3 = array ('sto','dwieście','trzysta','czterysta','pięćset','sześćset','siedemset','osiemset','dziewięćset','jeden tysiąc');
$test4 = array ('jeden tysiąc','dwa tysiące','trzy tysiące','cztery tysiące');
//sprawdza czy liczba jest całkowita czy ma jakaś wartość po przecinku
//jesli tak przesyla ja do zapisania w formie XX/100
$ii=$i;
while($ii>1)
{
$ii--;
}
$ii=round($ii*100,0);
//------
//główny moduł skryptu sprawdzajacy jak duza jest liczba i na podstawie tego
//zamieniajacy cyfry na słowa
if ($i>0 AND $i<=20) //liczba z przedzialu 1..20
{
print($test[$i-1]);
}
elseif ($i>20 AND $i<=100) //liczba z przedzialu 20..100
{
while($i>10)
{
$i=$i-10;
$counter++;
}
print($test2[$counter-1]." ".$test[$i-1]);
}
elseif($i>100 AND $i<=1000) //liczba z przedzialu 100..1000
{
while($i>100)
{
$i=$i-100;
$counter2++;
}
while($i>10)
{
$i=$i-10;
$counter++;
}
print($test3[$counter2-1]." ".$test2[$counter-1]." ".$test[$i-1]);
}
elseif($i>1000 AND $i<=4999) //liczba z przedzialu 1000..4999
{
while($i>1000)
{
$i=$i-1000;
$counter3++;
}
while($i>100)
{
$i=$i-100;
$counter2++;
}
while($i>10)
{
$i=$i-10;
$counter++;
}
print($test4[$counter3-1]." ".$test3[$counter2-1]." ".$test2[$counter-1]." ".$test[$i-1]);
}
elseif($i>=5000 AND $i<=20000) //liczba z przedzialu 5000..20000
{
while($i>1000)
{
$i=$i-1000;
$counter3++;
}
while($i>100)
{
$i=$i-100;
$counter2++;
}
while($i>10)
{
$i=$i-10;
$counter++;
}
print($test[$counter3-1]." tysięcy ".$test3[$counter2-1]." ".$test2[$counter-1]." ".$test[$i-1]);
}
elseif($i>20000 AND $i<=100000) //liczba z przedzialu 20001..100000
{
while($i>10000)
{
$i=$i-10000;
$counter4++;
}
if($i>=2000 AND $i<=4000)
{
$tysiac=" tysiące ";
}
else
{
$tysiac=" tysięcy ";
}
while($i>1000)
{
$i=$i-1000;
$counter3++;
}
while($i>100)
{
$i=$i-100;
$counter2++;
}
while($i>10)
{
$i=$i-10;
$counter++;
}
print($test2[$counter4-1]." ".$test[$counter3-1].$tysiac.$test3[$counter2-1]." ".$test2[$counter-1]." ".$test[$i-1]);
}
elseif($i>=100000 AND $i<1000000) //liczba z przedzialu 100000..999999.99
{
while($i>100000)
{
$i=$i-100000;
$counter5++;
}
while($i>10000)
{
$i=$i-10000;
$counter4++;
}
if($i>=2000 AND $i<=4000)
{
$tysiac=" tysiące ";
}
else
{
$tysiac=" tysięcy ";
}
while($i>1000)
{
$i=$i-1000;
$counter3++;
}
while($i>100)
{
$i=$i-100;
$counter2++;
}
while($i>10)
{
$i=$i-10;
$counter++;
}
print($test3[$counter5-1]." ".$test2[$counter4-1]." ".$test[$counter3-1].$tysiac.$test3[$counter2-1]." ".$test2[$counter-1]." ".$test[$i-1]);
}
else //liczba z poza przedziału 1..999999.99
{
print("$i jest liczbą miejszą od 1 lub wieksza od 1000000");
}
//dopisanie na koncu słowa "złotych" lub "złote" w zależności od ostatniej cyfry
if ($i >=2 AND $i<=4)
{
print(" złote ");
}
else
{
print(" złotych ");
}
//dopisanie na koncu ilosc groszy w formie "XX/100"
if ($ii!=0)
{
print(" i ".$ii."/100");
}
?>[/php:1:f691b68b63]
Update [22:32]: Skrypt nie działa tak jak powinien (liczbę np. 111 zapisuje jako "sto dziesięć jeden"), ale nie usuwam go, wkleje tu poprawioną wersje.