Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: zamiana cyferek na słowa

Przy okazji aktualnego projektu napisałem sobie klasę zamieniającą wartość cyfrową kwoty złotówkowej na słowną . Niemniej coś mi w niej nie pasuje w obrębie switch'a i myślę jak skrócić kod , który dla każdego case nieco się powiela . Gdyby ktoś chciał się pobawić , to zapraszam do przejrzenia kodu .
http://adrian.ispc.pl/files/amount2words.php

konto usunięte

Temat: zamiana cyferek na słowa

mnie cos swita, ze sie takie rzeczy rekurencja robilo (dawno bylo..), bo to co Ty napisales to jakby trzeba zwiekszac dla kolejnego stopnia potegi dziesiatej, a to "chyba" nie tak powinno dzialac.

Kuuuubaaaa, woooołaaaająąąą ;-)
Jakub Korupczyński

Jakub Korupczyński Software Developer

Temat: zamiana cyferek na słowa

A nie wystarczy kilka tablic z tekstem do danej wartości w zależności od tego na którym miejscu jest dana liczba ?

128,59

I jedziemy od tyłu:
tablica1[9] = 'dziewięć'
tablica2[5] = 'pięćdziesiąt'
tablica1[8] = 'osiem'
tablica2[2] = 'dwadzieścia'
tablica3[1] = 'sto'

i mniej więcej podobnie dalej tylko przy wyższych liczbach zamiast każdej cyferki wpisywać typu 2 = dwa tysiące, to tylko podajemy wartości tysiąc, tysięcy i tysiące i odpowiednie dopasowujemy.
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: zamiana cyferek na słowa

Wojciech Zbigniew Piotrowicz:
mnie cos swita, ze sie takie rzeczy rekurencja robilo (dawno bylo..), bo to co Ty napisales to jakby trzeba zwiekszac dla kolejnego stopnia potegi dziesiatej, a to "chyba" nie tak powinno dzialac.

No właśnie o to mi chodzi żeby to jakoś zapętlić , ale więcej jak 3 stopni nie potrzeba . W komentarzach na php.net jest do funkcji number_format() taki jeden wpis z 2004 roku , ale ponoć wadliwy .
Jakub Korupczyński:
A nie wystarczy kilka tablic z tekstem do danej wartości w zależności od tego na którym miejscu jest dana liczba ?

$int1_array - 0..19
$int2_array - 2x..9x
$int3_array - 1xx..9xx..

Z tych trzech tablic można poskładać cokolwiek bo właśnie wspomniane number_format() dzieli liczbę na bloki 3-cyfrowe .

konto usunięte

Temat: zamiana cyferek na słowa

Jakub Korupczyński:
A nie wystarczy kilka tablic z tekstem do danej wartości w zależności od tego na którym miejscu jest dana liczba ?

dobrze gadasz, taki sposob mimo, ze niematematyczny ma jedna zalete - jest najszybszy.

ps: co do Twojego GLowego opisu, to przykre, ze szukasz pracy od stycznia 2008 i nadal nic :D)
Jakub Korupczyński

Jakub Korupczyński Software Developer

Temat: zamiana cyferek na słowa

Wojciech Zbigniew Piotrowicz:
Jakub Korupczyński:
A nie wystarczy kilka tablic z tekstem do danej wartości w zależności od tego na którym miejscu jest dana liczba ?

dobrze gadasz, taki sposob mimo, ze niematematyczny ma jedna zalete - jest najszybszy.

ps: co do Twojego GLowego opisu, to przykre, ze szukasz pracy od stycznia 2008 i nadal nic :D)

Ehehehe siedzę sobie teraz od 10 min i się zastanawiam jak to w dwóch słowach napisać z sensem :) chyba zostawie "szukam pracy" :)

konto usunięte

Temat: zamiana cyferek na słowa

ten topic przypomina mi trochę zadanie z programming contest jakiegoś tam, gdzie trzeba bylo napisac program obslugi bankomatu, w jakich nominalach wyplaci zadana kwote :]
Andrzej Dybionka

Andrzej Dybionka Full Stack Developer

Temat: zamiana cyferek na słowa

Pisałem coś takiego ale w czystym C :P

Temat: zamiana cyferek na słowa

Czesc,
Kiedyś też szukalem informacji i wskazowek jak cos takiego zrobic kiedy pisalem generator faktur pro forma i w efekcie wyszlo cos takiego:

function num2word($liczba) {
$liczba = str_replace(",", ".", $liczba);
$liczba = number_format($liczba, 2, ",", "");
$kwota=explode(",", $liczba);
$kwotazl=sprintf("%012d",$kwota[0]);
$kwotagr=sprintf("%03d",$kwota[1]);
$txt .= policz(substr($kwotazl, 0,3),"miliard","miliardy","miliardów");
$txt .= policz(substr($kwotazl, 3,3),"milion","miliony","milionów");
$txt .= policz(substr($kwotazl, 6,3),"tysiąc","tysiące","tysięcy");
$txt .= policz(substr($kwotazl, 9,3),"złoty","złote","złotych");
if ($kwotazl==0) $txt .= "zero złotych ";
$txt .= " i ";
$txt .= policz($kwotagr,"grosz","grosze","groszy");
if ($kwotagr==0) $txt .= "zero groszy";

return $txt;
}

function policz($l,$t1,$t2,$t3) {
//jedności
$j = 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 ");
//dziesiątki
$d = array("", "", "dwadzieścia ", "trzydzieści ", "czterdzieści ",
"pięćdziesiąt ", "sześćdziesiąt ", "siedemdziesiąt ",
"osiemdziesiąt ", "dziewięćdziesiąt ");
//stówki
$s = array("","sto ", "dwieście ", "trzysta ", "czterysta ", "pięćset ",
"sześćset ", "siedemset ", "osiemset ", "dziewięćset ");

$txt = $s[0+substr($l,0,1)];
if (substr($l,1,2)20 or substr($l,1,2)
Piotrek M. edytował(a) ten post dnia 12.12.08 o godzinie 00:00

Temat: zamiana cyferek na słowa

Chcialem dobrze a tu przy ostatnich 6 linijkach nia dziala mi znacznik [code] :(.
jesli chcesz to moge wyslac Ci na poczte calosc.

albo mozna i tak :)
[url]http://images29.fotosik.pl/303/7b346a07e049bfc4.gif[/url][edited]Piotrek M. edytował(a) ten post dnia 12.12.08 o godzinie 00:18[/edited]

konto usunięte

Temat: zamiana cyferek na słowa

Lubicie wyważać otwarte drzwi, co? ;)
Spróbuj tego:
http://pear.php.net/package/Numbers_Words
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: zamiana cyferek na słowa

Jakub B.:
Lubicie wyważać otwarte drzwi, co? ;)
Spróbuj tego:
http://pear.php.net/package/Numbers_Words

** Getting started:

First you need to install Numbers_Words PEAR package.
You can do it (as root) with:

pear install Numbers_Words

No ja Cie prosze :) Tu chodzi o prostotę rozwiązania , a nie multimegaklasę . Pliki językowe zrobić to nie problem i przenieść tam tablice ;)

konto usunięte

Temat: zamiana cyferek na słowa

1 001,00 PLN to:
jeden tysiąc jeden złoty
czy
jeden tysiąc jeden złotych
?

konto usunięte

Temat: zamiana cyferek na słowa

a jeden tysiac czy jeden tysiecy?

jeden jest w liczbie pojedynczej, wiec zloty.

a poza tym to NTG :)

Temat: zamiana cyferek na słowa

Numbers_Words_pl - do tego co pisze Jakub :-)
Jakub Korupczyński

Jakub Korupczyński Software Developer

Temat: zamiana cyferek na słowa

No kurcze, a ja bym to pewnie sam sobie od podstaw pisał. Lenie z was i tyle :)

Temat: zamiana cyferek na słowa

Jakub Korupczyński:
No kurcze, a ja bym to pewnie sam sobie od podstaw pisał. Lenie z was i tyle :)

Przyznaje się jestem leniem ;-)
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: zamiana cyferek na słowa

Tomasz Kupczyk:
1 001,00 PLN to:
jeden tysiąc jeden złoty
czy
jeden tysiąc jeden złotych
?

Zgodnie z zasadami języka polskiego, każda liczba powyżej 4 będzie miec końcówkę "złotych". Bez wyjątku.
PS. Siec sklepów które istniały dawno temu "za komuny" ;) nazywała się 1001 drobiazgów czy 1001 drobiazg?Jarosław Rafa edytował(a) ten post dnia 12.12.08 o godzinie 17:09

konto usunięte

Temat: zamiana cyferek na słowa

Jarosław Rafa:
Zgodnie z zasadami języka polskiego, każda liczba powyżej 4 będzie miec końcówkę "złotych". Bez wyjątku.

A więc "dwadzieścia dwa złotych"? Skąd wytrzasnąłeś tą zasadę?
PS. Siec sklepów które istniały dawno temu "za komuny" ;) nazywała się 1001 drobiazgów czy 1001 drobiazg?

Eh, i komu to przeszkadzało? Chodzi mi o "1001 drobiazgów", nie o komunę :)
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: zamiana cyferek na słowa

Tomasz Kupczyk:
Jarosław Rafa:
Zgodnie z zasadami języka polskiego, każda liczba powyżej 4 będzie miec końcówkę "złotych". Bez wyjątku.

A więc "dwadzieścia dwa złotych"? Skąd wytrzasnąłeś tą zasadę?

Skąd 22 wzięło Ci się czterocyfrowe ? :D



Wyślij zaproszenie do