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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перевод "12345" в "двенадцать тысяч триста сорок пять"  (Прочитано 8599 раз)
Alexu007
Гость
« : Ноябрь 11, 2013, 18:26 »

Функция переводит число в слова. Дарю, может пригодится кому...

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Ноябрь 11, 2013, 19:19 »

Функция переводит число в слова. Дарю, может пригодится кому...
Ваша щедрость не знает границ  Улыбающийся
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Ноябрь 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();
       }
 
« Последнее редактирование: Ноябрь 11, 2013, 20:17 от Alex Custov » Записан
Alexu007
Гость
« Ответ #3 : Ноябрь 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

« Последнее редактирование: Ноябрь 11, 2013, 22:00 от Alexu007 » Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Ноябрь 11, 2013, 22:02 »

Это вроде стандартный С++. Нет?

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

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

А toLongLong() ?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Ноябрь 11, 2013, 22:28 »

код ужасен плюс исходники в 1251 и ненужные файлы в архиве
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Alexu007
Гость
« Ответ #6 : Ноябрь 12, 2013, 08:09 »

За  toLongLong() спасибо, не знал. Но в принципе она делает то же самое, и возможно даже так же. Плюс моя проверяет на наличие в цифрах "мусора", что более информативно, чем ноль на выходе.

В чём ужас кода? В том, что не дал длинные имена переменным? Нафига они нужны в функции, которая целиком умещается на экране монитора?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Ноябрь 12, 2013, 13:18 »

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

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Alexu007
Гость
« Ответ #8 : Ноябрь 12, 2013, 16:10 »

Просьба не стрелять в пианиста - он играет как может.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Ноябрь 12, 2013, 20:42 »

пианисты выступают перед публикой с идеально вылизанной игрой
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Alexu007
Гость
« Ответ #10 : Ноябрь 13, 2013, 07:22 »

То топовые пианисты, получающие международные премии - и которых мы сегодня преимущественно слушаем в записи, благодаря компьютерным же технологиям. А в сельском клубе лабают местные гитаристы, как могут.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #11 : Ноябрь 13, 2013, 11:57 »

открой свой сельский клуб (блог) и там играй. мне все-таки хочется надеяться, что у этого форума уровень повыше.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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