imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 02.03.2005, 17:44     # 1
Acsidian
Member
 
Аватар для Acsidian
 
Регистрация: 16.01.2004
Адрес: г. Минск, Республика Беларусь
Сообщения: 245

Acsidian Мелкий засранец
Question REC. Алгоритм число -> пропись

Ищу алгоритм представления числового значения прописью.
Для сайта... - на php или на java
Acsidian вне форума  
Старый 02.03.2005, 18:41     # 2
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Ты имеешь в виду вот это?
Код HTML:
<HTML>
<HEAD>
<SCRIPT TYPE="text/javascript">
var dig1 = new Array();
dig1 = ['сто', 'двести', 'тристо', 'четыресто', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот'];
var dig2 = new Array();
dig2 = ['десять', 'двадцать', 'трицать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'];
var dig3 = new Array();
dig3 = ['одиннадцать', 'двенацать', 'тринадцать', 'четырнацать', 'пятьнацать', 'шестьнацать', 'семьнацать', 'восемьнацать', 'девятнацать'];
var dig4 = new Array();
dig4 = ['один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять'];
var dig5 = new Array();
dig5 = ['', 'тысяч', 'миллион'];
var dig6 = new Array();
dig6 = ['одна', 'две', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять'];

function subConv(i, d) {
  var q = new String();
  q = '';
  var i1 = parseInt(d / 100);
  d = d - 100 * i1;
  var i2 = parseInt(d /  10);
  d = d -  10 * i2;
  if (i1  > 0) { q = dig1[i1-1]; }
  if (i2 != 1) {
    if (i2 > 0) { q += (' ' + dig2[i2-1]); }
    if (d != 0) { q += (i != 1)?(' ' + dig4[d-1]):(' ' + dig6[d-1]); }
  } else {
    if (d != 0) { q += (' ' + dig3[d-1]); }
    else { q += (' ' + dig2[0]); }
  }
  if (q != '') { q += (' ' + dig5[i]); }
  if (i == 2) {
    if ((d == 0) || (d >= 5) || (i2 == 1)) { q += 'ов'; }
    if ((d >= 2) && (d <= 4) && (i2 != 1)) { q += 'а'; }
  }
  if ((i == 1) && (i2 != 1)) {
    if (d == 1) { q += 'а'; }
    if ((d >= 2) && (d <= 4)) { q += 'и'; }
  }
  return q+' ';
}

function myConvert(s) {
  var r = new String();
  r = '';
  if (s != 0) {
    var i = -1;
    while (s > 0) {
      d = s - 1000 * parseInt(s / 1000);
      s = parseInt(s / 1000);
      i++;
      r = subConv(i, d) + r;
    }
  } else { r = 'ноль'; }
  var divConv = document.getElementById('myConv');
  divConv.innerHTML = r;
}
</SCRIPT>
</HEAD>
<BODY>
<INPUT TYPE="text" NAME="myVal">
<INPUT TYPE="button" VALUE="convert" onCLick="javascript:myConvert(myVal.value);">
<DIV ID="myConv"></DIV>
</BODY>
</HTML>
В принципе можно доработать, только сейчас времени нет этим заниматься...
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!

Последний раз редактировалось Ghost; 02.03.2005 в 19:12. Причина: склероZzz...
Ghost вне форума  
Старый 03.03.2005, 09:38     # 3
Acsidian
Member
 
Аватар для Acsidian
 
Регистрация: 16.01.2004
Адрес: г. Минск, Республика Беларусь
Сообщения: 245

Acsidian Мелкий засранец
Да! Именно, именно! Ато по поисковикам выдавало только VBA С++ и другую разную нечисть... которую нужно было переделывать!

А что там еще ты хотел доработать?
Впринципе свою задачу перевода значения скрипт полностью выполняет, единственное я миллиарды еще добавлю, а так все класс!
Спасибо! +5
Acsidian вне форума  
Старый 03.03.2005, 09:51     # 4
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Acsidian
Да хотел подправить кое-что с написанием "тысяч"/"тысяча"/"тысячи" и проч., но вроде все это сделал вчера, просто полностью протестить времени не было. Юзай.

З.Ы. С миллиардами у напряг вышел: видимо слишком большие числа для того типа данных, который я использовал. Или где-то в коде сам слажал... Удачи.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 08:54.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.