Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $liczba = "A1";
- # to jest funkcją, żeby w przyszłości móc zmienić na wersję zobfuskowaną
- sub jezeli {
- my $warunek = shift;
- my $tak = shift;
- my $nie = shift;
- return "JEŻELI($warunek;$tak;$nie)";
- }
- sub ostatnie_dwie_cyfry {
- my $liczba = shift;
- return "PRAWY(TEKST($liczba;\"00\");2)";
- }
- sub ostatnia_cyfra {
- my $liczba = shift;
- return "PRAWY(TEKST($liczba;\"0\");1)+0";
- }
- sub przedostatnia_cyfra {
- my $liczba = shift;
- my $ostatnie_dwie_cyfry = ostatnie_dwie_cyfry($liczba);
- return "LEWY($ostatnie_dwie_cyfry;1)+0";
- }
- sub mnoga {
- my $liczba = shift;
- my $jeden = shift;
- my $trzy = shift;
- my $siedem = shift;
- my $ostatnia = ostatnia_cyfra($liczba);
- my $przedostatnia = przedostatnia_cyfra($liczba);
- my $czy_jeden = "$liczba=1";
- my $czy_zgody = "ORAZ($ostatnia>=2;$ostatnia<=4;$przedostatnia<>1)";
- my $numer_formy = "($czy_jeden)+($czy_zgody)*2+1";
- my $formy = "{\"$siedem\";\"$jeden\";\"$trzy\"}";
- return "INDEKS($formy;$numer_formy)";
- }
- sub dwucyfrowa_slownie {
- my $liczba = shift;
- my $liczebniki_1_19 = '{"";"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"}';
- my $ostatnie_dwie_cyfry = ostatnie_dwie_cyfry($liczba);
- my $liczebnik_do_19 = "INDEKS($liczebniki_1_19;$ostatnie_dwie_cyfry+1)";
- my $ostatnia = ostatnia_cyfra($liczba);
- my $przedostatnia = przedostatnia_cyfra($liczba);
- my $liczebniki_20_90 = '{"dwadzieścia";"trzydzieści";"czterdzieści";"pięćdziesiąt";"sześćdziesiąt";"siedemdziesiąt";"osiemdziesiąt";"dziewięćdziesiąt"}';
- my $liczebniki_0_9 = '{"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć"}';
- my $dziesci = "INDEKS($liczebniki_20_90;$przedostatnia-1)";
- my $iles = "INDEKS($liczebniki_0_9;$ostatnia+1)";
- my $dziesciiles = "$dziesci\&\" \"\&$iles";
- return jezeli("$ostatnie_dwie_cyfry+0<20", $liczebnik_do_19, $dziesciiles);
- }
- sub dwucyfrowa_lub_0_slownie {
- my $liczba = shift;
- return jezeli("$liczba=0", '"zero"', dwucyfrowa_slownie($liczba));
- }
- sub trzycyfrowa_slownie {
- my $liczba = shift;
- my $liczebnik_do_99 = dwucyfrowa_slownie($liczba);
- my $liczebniki_100_900 = '{"sto";"dwieście";"trzysta";"czterysta";"pięćset";"sześćset";"siedemset";"osiemset";"dziewięćset"}';
- my $cyfra_setek = "LEWY(TEKST($liczba;\"000\");1)+0";
- my $ewentualne_setki = "INDEKS($liczebniki_100_900;$cyfra_setek)";
- my $setki = jezeli("$cyfra_setek>0", "$ewentualne_setki&\" \"", '""');
- return "$setki&$liczebnik_do_99";
- }
- sub szesciocyfrowa_slownie {
- my $liczba = shift;
- my $sformatowana = "TEKST($liczba;\"000000\")";
- my $grupa_1 = "PRAWY($sformatowana;3)+0";
- my $grupa_2 = "LEWY($sformatowana;3)+0";
- my $liczebnik_1 = trzycyfrowa_slownie($grupa_1);
- my $ewentualny_liczebnik_2 = trzycyfrowa_slownie($grupa_2);
- my $ewentualne_tysiace = mnoga($grupa_2, "tysiąc", "tysiące", "tysięcy");
- my $liczebnik_2 = jezeli("$grupa_2>1", $ewentualny_liczebnik_2, '""') . '&" "&' . jezeli("$grupa_2>0", $ewentualne_tysiace, '""');
- return "$liczebnik_2\&\" \"\&$liczebnik_1";
- }
- # rozbudowana wersja funkcji szesciocyfrowa_slownie
- # nie korzysta z funkcji szesciocyfrowa_slownie
- sub dwunastocyfrowa_slownie {
- my $liczba = shift;
- my $sformatowana = "TEKST($liczba;\"000000000000\")";
- my $grupa_1 = "FRAGMENT.TEKSTU($sformatowana;10;3)+0";
- my $grupa_2 = "FRAGMENT.TEKSTU($sformatowana;7;3)+0";
- my $grupa_3 = "FRAGMENT.TEKSTU($sformatowana;4;3)+0";
- my $grupa_4 = "FRAGMENT.TEKSTU($sformatowana;1;3)+0";
- my $liczebnik_1 = trzycyfrowa_slownie($grupa_1);
- my $ewentualny_liczebnik_2 = trzycyfrowa_slownie($grupa_2);
- my $ewentualny_liczebnik_3 = trzycyfrowa_slownie($grupa_3);
- my $ewentualny_liczebnik_4 = trzycyfrowa_slownie($grupa_4);
- my $ewentualne_tysiace = mnoga($grupa_2, "tysiąc", "tysiące", "tysięcy");
- my $ewentualne_miliony = mnoga($grupa_3, "milion", "miliony", "milionów");
- my $ewentualne_miliardy = mnoga($grupa_4, "miliard", "miliardy", "miliardów");
- my $liczebnik_2 = jezeli("$grupa_2>1", $ewentualny_liczebnik_2, '""') . '&" "&' . jezeli("$grupa_2>0", $ewentualne_tysiace, '""');
- my $liczebnik_3 = jezeli("$grupa_3>1", $ewentualny_liczebnik_3, '""') . '&" "&' . jezeli("$grupa_3>0", $ewentualne_miliony, '""');
- my $liczebnik_4 = jezeli("$grupa_4>1", $ewentualny_liczebnik_4, '""') . '&" "&' . jezeli("$grupa_4>0", $ewentualne_miliardy, '""');
- return "$liczebnik_4\&\" \"\&$liczebnik_3\&\" \"\&$liczebnik_2\&\" \"\&$liczebnik_1";
- }
- sub liczba_slownie {
- my $liczba = shift;
- return jezeli("$liczba=0", '"zero"', dwunastocyfrowa_slownie($liczba));
- }
- $liczebnik_zl = liczba_slownie("ZAOKR.DO.CAŁK($liczba)");
- $zl = mnoga("ZAOKR.DO.CAŁK($liczba)", "złoty", "złote", "złotych");
- $grosze = "PRAWY(TEKST(ZAOKR.DO.CAŁK($liczba*100)/100;\"0,00\");2)+0";
- $liczebnik_gr = dwucyfrowa_lub_0_slownie($grosze);
- $gr = mnoga($grosze, "grosz", "grosze", "groszy");
- print "=USUŃ.ZBĘDNE.ODSTĘPY($liczebnik_zl\&\" \"&$zl&\" \"\&$liczebnik_gr\&\" \"\&$gr)";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement