Russian Qt Forum

Qt => Кладовая готовых решений => Тема начата: Alexu007 от Ноябрь 11, 2013, 18:26



Название: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: Alexu007 от Ноябрь 11, 2013, 18:26
Функция переводит число в слова. Дарю, может пригодится кому...

(http://i068.radikal.ru/1311/1d/4eef348a07f4.png)


Название: Re: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: Igors от Ноябрь 11, 2013, 19:19
Функция переводит число в слова. Дарю, может пригодится кому...
Ваша щедрость не знает границ  :)


Название: Re: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: Alex Custov от Ноябрь 11, 2013, 20:11
не портабельно

Цитировать
widget.cpp:91:5: error: ‘__int64’ was not declared in this scope

Код
Diff
-__int64
+qint64

и можешь пояснить следующий код?

Код
C++ (Qt)
   // засовываем строку чисел в int64, toInt() отдыхает
   for(int i = 0; i < inp.length(); i++)
       {
       s1 = inp.at(i);
 
       if(s1 < "0" || s1 > "9") return "error";
 
       xx = xx * 10 + s1.toInt();
       }
 


Название: Re: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: Alexu007 от Ноябрь 11, 2013, 21:46
не портабельно

Цитировать
widget.cpp:91:5: error: ‘__int64’ was not declared in this scope

Код
Diff
-__int64
+qint64

В простой int только 4 млрд. влезает, а хотелось триллионы. У меня __int64 без проблем компилируется. Это вроде стандартный С++. Нет?

p.s. поменял на qint64, раз так правильнее.

Цитировать
и можешь пояснить следующий код?

Код
C++ (Qt)
   // засовываем строку чисел в int64, toInt() отдыхает
   for(int i = 0; i < inp.length(); i++)
       {
       s1 = inp.at(i);
 
       if(s1 < "0" || s1 > "9") return "error";
 
       xx = xx * 10 + s1.toInt();
       }
 
[/quote]


Строчку "54321" в число qint64 поместить нужно. toInt() свыше 2 млрд. работать отказалась - пришлось вручную. В цикле перебираем строку по одному символу от начала до конца:

0 * 10 + 5 = 5
5 * 10 + 4 = 54
54 * 10 + 3 = 543
543 * 10 + 2 = 5432
5432 * 10 + 1 = 54321



Название: Re: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: Alex Custov от Ноябрь 11, 2013, 22:02
Это вроде стандартный С++. Нет?

это VS http://msdn.microsoft.com/en-us/library/vstudio/cc953fe1.aspx

Строчку "54321" в число __int64 поместить нужно. toInt() свыше 4 млрд. работать отказалась

А toLongLong() ?


Название: Re: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: kambala от Ноябрь 11, 2013, 22:28
код ужасен плюс исходники в 1251 и ненужные файлы в архиве


Название: Re: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: Alexu007 от Ноябрь 12, 2013, 08:09
За  toLongLong() спасибо, не знал. Но в принципе она делает то же самое, и возможно даже так же. Плюс моя проверяет на наличие в цифрах "мусора", что более информативно, чем ноль на выходе.

В чём ужас кода? В том, что не дал длинные имена переменным? Нафига они нужны в функции, которая целиком умещается на экране монитора?


Название: Re: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: kambala от Ноябрь 12, 2013, 13:18
тонна пустых строк, отсутствие пробелов, не очень хорошие комментарии, кривые отступы, некорректные названия методов, про переменные ты уже сам сказал.

это что у тебя за монитор, если метод OllDigitsText(), написанный с ошибкой в названии, умещается на экране...


Название: Re: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: Alexu007 от Ноябрь 12, 2013, 16:10
Просьба не стрелять в пианиста - он играет как может.


Название: Re: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: kambala от Ноябрь 12, 2013, 20:42
пианисты выступают перед публикой с идеально вылизанной игрой


Название: Re: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: Alexu007 от Ноябрь 13, 2013, 07:22
То топовые пианисты, получающие международные премии - и которых мы сегодня преимущественно слушаем в записи, благодаря компьютерным же технологиям. А в сельском клубе лабают местные гитаристы, как могут.


Название: Re: Перевод "12345" в "двенадцать тысяч триста сорок пять"
Отправлено: kambala от Ноябрь 13, 2013, 11:57
открой свой сельский клуб (блог) и там играй. мне все-таки хочется надеяться, что у этого форума уровень повыше.