algorytm.org

Implementacja w JavaScript

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Zamiana liczby na słowa z polską gramatyką - Implementacja w JavaScript
Ocena użytkownikóww: *****  / 4
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 18 czerwca 2011 14:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

zlns_gramatyka.html:
...

function slowa()
{
   // przypisanie obiektu pola tekstowego do zmiennej
   var pole_liczba = document.forms["slowa"].liczba;
   // pobranie liczby
   var liczba = pole_liczba.value;

   var jednosci = ["", " jeden", " dwa", " trzy", " cztery", " pięć", " sześć", " siedem", " osiem", " dziewięć"];
   var nascie = ["", " jedenaście", " dwanaście", " trzynaście", " czternaście", " piętnaście", " szesnaście", " siedemnaście", " osiemnaście", " dziewietnaście"];
   var dziesiatki = ["", " dziesięć", " dwadzieścia", " trzydzieści", " czterdzieści", " pięćdziesiąt", " sześćdziesiąt", " siedemdziesiąt", " osiemdziesiąt", " dziewięćdziesiąt"];
   var setki = ["", " sto", " dwieście", " trzysta", " czterysta", " pięćset", " sześćset", " siedemset", " osiemset", " dziewięćset"];
   var grupy = [
      ["" ,"" ,""],
      [" tysiąc" ," tysiące" ," tysięcy"],
      [" milion" ," miliony" ," milionów"],
      [" miliard"," miliardy"," miliardów"],
      [" bilion" ," biliony" ," bilionów"],
      [" biliard"," biliardy"," biliardów"],
      [" trylion"," tryliony"," trylionów"]];
    
   if (!isNaN(liczba)){
   	
      var wynik = '';
      var znak = '';
      if (liczba == 0)
         wynik = "zero";
      if (liczba < 0) {
         znak = "minus";
         liczba = liczba;
      }
      
      var g = 0;
      while (liczba > 0) {
         var s = Math.floor((liczba % 1000)/100);
         var n = 0;
         var d = Math.floor((liczba % 100)/10);
         var j = Math.floor(liczba % 10);
         if (d == 1 && j>0) {
            n = j;
            d = 0;
            j = 0;
         }

         var k = 2;
         if (j == 1 && s+d+n == 0)
            k = 0;
         if (j == 2 || j == 3 || j == 4)
            k = 1;
         if (s+d+n+j > 0)
            wynik = setki[s]+dziesiatki[d]+nascie[n]+jednosci[j]+grupy[g][k]+wynik;

         g++;
         liczba = Math.floor(liczba/1000);
      }
      alert(znak + wynik);
   }
   else  {
     alert("Podano nieprawidlowa wartosc!");
     pole_liczba.focus();
  }
  return false;
}
...
Komentarze
photo
0 # steficzek 2018-03-02 07:02
linia 31
jest
liczba = liczba;
powinno być
liczba = -liczba;
stąd błąd przy liczbach minusowych
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz