Russian Qt Forum
Ноябрь 22, 2024, 22:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: [решено] Чтение XML, запись XML  (Прочитано 48637 раз)
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #30 : Март 21, 2010, 15:36 »

Выпущена новая версия библиотеки (ссылки выше исправлены). Если кому интересно, обновления смотрите на сайте, указанном в документации (после модерации программы).
Тему завершаю, всем спасибо.
« Последнее редактирование: Март 21, 2010, 15:45 от tramp_0 » Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
voronElf
Гость
« Ответ #31 : Март 22, 2010, 09:09 »

Насчет формирования суммы прописью, отдаю свою как есть. Только писал давно, зеленый был, ногами сильно не бить )))

Код:
QString CModDocs::priceToText(double price)
{
    if(price > 20000000) return tr("Не могу посчитать такие большие деньги ...");
    unsigned long int rub = (int)price;
    int kop = int(price*100) - rub*100;
    if(rub == 0) return tr("Ноль рублей %1 коп.").arg(kop);

    QString ret("");
    QStringList sotni;
    sotni.append(tr(""));
    sotni.append(tr("сто "));
    sotni.append(tr("двести "));
    sotni.append(tr("триста "));
    sotni.append(tr("четыреста "));
    sotni.append(tr("пятьсот "));
    sotni.append(tr("шестьсот "));
    sotni.append(tr("семьсот "));
    sotni.append(tr("восемьсот "));
    sotni.append(tr("девятьсот "));
    QStringList desatki;
    desatki.append(tr(""));
    desatki.append(tr("десять "));
    desatki.append(tr("двадцать "));
    desatki.append(tr("тридцать "));
    desatki.append(tr("сорок "));
    desatki.append(tr("пятьдесят "));
    desatki.append(tr("шестьдесят "));
    desatki.append(tr("семьдесят "));
    desatki.append(tr("восемьдесят "));
    desatki.append(tr("девяносто "));
    QStringList edinic;
    edinic.append(tr(""));
    edinic.append(tr("один "));
    edinic.append(tr("два "));
    edinic.append(tr("три "));
    edinic.append(tr("четыре "));
    edinic.append(tr("пять "));
    edinic.append(tr("шесть "));
    edinic.append(tr("семь "));
    edinic.append(tr("восемь "));
    edinic.append(tr("девять "));
    QStringList edinic_10;
    edinic_10.append(tr("десять "));
    edinic_10.append(tr("одиннадцать "));
    edinic_10.append(tr("двенадцать "));
    edinic_10.append(tr("тринадцать "));
    edinic_10.append(tr("четырнадцать "));
    edinic_10.append(tr("пятнадцать "));
    edinic_10.append(tr("шестнадцать "));
    edinic_10.append(tr("семнадцать "));
    edinic_10.append(tr("восемнадцать "));
    edinic_10.append(tr("девятнадцать "));

    int r[9], i; // в r индексы - номера разрядов
    for(i=0; i<9; i++) if(rub>0)
            {
                r[i] = rub%10; rub = rub/10;
            }else r[i]=0;

    if(r[8]>0 || r[7]>0 || r[6]>0){
        ret += sotni[r[8]];
        if( r[7]==1 ) ret += edinic_10[r[6]] + tr("милионов ");
        else{
            ret += desatki[r[7]] + edinic[r[6]];
            if(r[6] == 1) ret += tr("милион ");
            else if(r[6]==2 || r[6]==3 || r[6]==4) ret += tr("милиона ");
            else ret += tr("милионов ");
        }
    }
    if(r[5]>0 || r[4]>0 || r[3]>0){
        ret += sotni[r[5]];
        if(r[4] == 1) ret += edinic_10[r[3]] + tr("тысяч ");
        else{
            ret += desatki[r[4]];
            if(r[3] == 1) ret += tr("одна тысяча ");
            else if( r[3]==2 ) ret += tr("две тысячи ");
            else{
                ret += edinic[r[3]];
                if( r[3]==3 || r[3]==4) ret += tr("тысячи "); else ret += tr("тысяч ");
            }
        }
    }
    ret += sotni[r[2]];
    if( r[1]==1 ) ret += edinic_10[r[0]] + tr("рублей ");
    else{
        ret += desatki[r[1]] + edinic[r[0]];
        if(r[0] == 1) ret += tr("рубль ");
        else if(r[0]==2 || r[0]==3 || r[0]==4) ret += tr("рубля ");
        else ret += tr("рублей ");
    }

    ret += tr(" %1 коп.").arg(kop);
    ret[0] = ret[0].toUpper();
    return ret;
}
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.125 секунд. Запросов: 23.