11°C
завтра: 7°C
Погода в Перми
11°C
вечером10°C
ночью6°C
завтра7°C
Подробно
 64,43
+0.3077
Курс USD ЦБ РФна 19 сентября
64,4290
+0.3077
 71,24
+0.6351
Курс EUR ЦБ РФна 19 сентября
71,2391
+0.6351
  • Здравствуйте!
    Кто подскажет чайнику каким образом можно решить такую задачу (в данном случае без привязки к среде программирования):

    Нашему приложению возвращается целое число, количество цифр которого не известно. Просмотреть возвращённое значение мы не можем (приложение не имеет такой возможности)... В нашем распоряжении доступны только логические и математические операторы, которые могут сравнивать возвращённое значение с какими либо значениями либо применять математические операции.
    Нам необходимо определить неизвестное возращённое значение и потом через IVR проговорить...
    Существует ли стандартный алгоритм который оптимально сможет вычислить возвращённое неизвестное значение?

    Возможно кто подскажит куда пойти мне с моим вопросом :)), не очень далеко только если можно...

    Заранее благодарен за отклик.

  • Есть такой способ:
    //*******************************************
    Констатнты СамоеБольшоеЧисло,СамоеМаленькоеЧисло;
    Переменные ИскомоеЧисло, НижняяГраница, ВерхняяГраница;
    НижняяГраница=СамоеМаленькоеЧисло;
    ВерхняяГраница=СамоеБольшоеЧисло;
    Пока ИскомоеЧислоВерхняяГраница) Тогда
    НижняяГраница=ВерхняяГраница;
    ВерхняяГраница=ВерхняяГраница*2;
    Иначе Если (ИскомоеЧисло=ВерхняяГраница) Тогда
    Вернуть(ВерхняяГраница);
    Иначе Если (ИскомоеЧисло=НижняяГраница) Тогда
    Вернуть(НижняяГраница);
    КонецЕсли;
    КонецЦикла;

    Вот такой в общих чертах алгоритм.
    Надеюсь что доступно.

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

  • Спасибо за ответ!
    Немного поясню конечную цель для чего это всё нужно:
    Не известное значение переменной нужно разложить на отдельные цифры и проговорить каждую в отдельности…
    Если возвращённое значение равно 195, то нужно вычислить что первая цифра равна 1, вторая 9, третья 5 чтобы произнести заранее записанные (десять) голосовые фрагменты (Один – девять – пять). Повторюсь что количество цифр заранее не известно и нужен алгоритм для всех возможных комбинаций цифр. (ну или до миллиона хотя бы)

    Если первая цифра =1 вернуть true и проговорить число «Один»
    Если вторая цифра =0 вернуть false
    Если вторая цифра =1 вернуть false
    Если вторая цифра =2 вернуть false
    Если вторая цифра =3 вернуть false

    Если вторая цифра =9 вернуть true и проговорить цифру «девять»

    Данный анализ проделать со всеми цифрами и проговорить их правильные значения.

    В нашем распоряжении только следующий набор операторов:
    parentheses ( )
    multiplication * and division /
    addition + and subtraction –
    comparison expressions =, < >, >, =, < =
    logical expressions Not, And, Or
    If-Then-Else-End If

    Теперь даже и не знаю нужно ли нам определять само число либо либо сразу пытаться разложить его по цифрам…
    Возможно ли в принципе имея указанный набор операторов без гимора разложить n-ое число на отдельные цифры? В идеале конечно алгоритм должен позвольть проговаривать не по отдельной цифре а с учётом десятков, сотен, единиц и т.д.
    Не силён в области программирования поэтому обращаюсь к светлым умам.

    Заранее благодарен за совет.

  • А.. понятно. Короче тогда так.
    (Операция % - вычисление остатка от целочисленного деления)
    Переменные НачальноеЗначение, ИскомоеЧисло, Делитель, МассивЦифр[ ],НН;
    ИскомоеЧисло=НачальноеЗначение;
    НН=1;
    Делитель=10;
    Пока (ИскомоеЧисло%Делитель0) ИЛИ (ИскомоеЧисло/Делитель0) Цикл
    МассивЦифр[НН]=ИскомоеЧисло%Делитель;
    ИскомоеЧисло=ИскомоеЧисло/Делитель;
    НН=НН+1;
    КонецЦикла;

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

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

  • Большое спасибо!
    Я попробую...

  • В ответ на: Есть такой способ:
    если не ошибаюсь, он называется "метод половинного деления"
    только, кажется, алгоритм Вы как-то усложнили - достаточно двух переменных...

    >>>Come back to USS...A © >>>
    долой лицемерие!

    запустить ракету вокруг Америки может быть не менее сложно и полезно, чем когда-то вокруг Земли

  • Да просто некогда особо было вылизывать алгоритм, так, привел общую схему.

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

Записей на странице:

Перейти в форум

Модератор: