Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.02.2013, 16:00
pivnoibaron вне форума Посмотреть профиль Отправить личное сообщение для pivnoibaron Найти все сообщения от pivnoibaron
  № 1  
Ответить с цитированием
pivnoibaron
 
Аватар для pivnoibaron

Регистрация: Apr 2011
Сообщений: 83
По умолчанию Разложить число.

Привет. Дали тестовое задание. Но не пойму по какому принципу разложить надо. Как разложить число используя номиналы, точнее что делать то, умножать что то или как? Может кто знает.

---------------------------------------------------------------------------------------------------------------
Разложить число, используя монеты заданных номиналов, на N монет. Сделать интерфейс, в
котором можно будет устанавливать число, номиналы и N.
Визуализировать результат выполнения программы в виде стопки монет/фишек.

Минимальные требования:
- программа должна быть написана на ActionScript 3.0

Плюсами будет:
- программа сделана на AIR и запускается на iOS
- программа написана на haxe, с использованием фреймворка NME

===========================================
Пример

Дано:
номиналы = [0.01, 0.1, 0.25, 0.5, 1, 5]
число = 2.53
N=7

Ответом будет: [1, 0.5, 0.5, 0.5, 0.01, 0.01, 0.01]
------------------------------------------------------

Старый 27.02.2013, 16:07
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 2  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Ух... мне бы в такой универ) Я ActionScript изучал на факультативе

Добавлено через 3 минуты
А имеется ввиду, что у вас номиналы: 1, 2, 5, 10, 25 и 50копеек. А нужно к примеру на входе ввести 123 разложить на 10 монет, программа должна подобрать комбинацию из 10 монет чтобы в сумме они давали 123 копейки.
__________________
return this...

Старый 27.02.2013, 16:12
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 3  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Ошибка в ответе, номинала 1 нет.

Добавлено через 4 минуты
Цитата:
Сообщение от AlexCooper Посмотреть сообщение
Ух... мне бы в такой универ) Я ActionScript изучал на факультативе
Не думаю, что это задание из универа. Больше похоже на тестовое задание при приеме на работу.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 27.02.2013, 16:31
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 4  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Я думаю там можно обойтись простым алгоритмом с использованием наибольшего делителя из заданных.
То есть берем число, берем массив номиналов. Находим наибольший делитель из заданных номиналов, чтобы при целочисленном делении результат не был равен нулю (если делимое больше делителя, то после целочисленного деления получится ноль). Считаем это первым номиналом, запоминаем, увеличиваем счетчик найденных номиналов. Вычитаем из числа номинал, получаем новое число, которому таким же образом находим максимальный из возможных номинал. В итоге у нас получится какое-то количество (M) номиналов, которое будет или не будет равно желаемому количеству (N). Если M != N, то произвольно (или любым другим способом) берем один из имеющихся (найденных) номиналов, которые можно разложить с помощью других потенциальных номиналов, и раскладываем. Снова проверяем M != N, при необходимости повторяем

То есть в случае с вашим примером с 2.53 по этому алгоритму найдется список номиналов [1, 1, 0.5, 0.01, 0.01, 0.01], а потом номинал 1 разложится на два номинала 0.5
Если нужно, могу накатать саму программу)

Старый 27.02.2013, 18:00
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 5  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от alatar Посмотреть сообщение
Не думаю, что это задание из универа. Больше похоже на тестовое задание при приеме на работу.
Тогда печально, для работодателя.
__________________
return this...

Старый 27.02.2013, 18:04
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 6  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Цитата:
Сообщение от AlexCooper Посмотреть сообщение
Тогда печально, для работодателя.
Почему? Хорошее же задание. Не всякий придумает оптимизированный алгоритм, но переборный должен уметь написать всякий.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 27.02.2013, 16:19
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 7  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Цитата:
Ошибка в ответе, номинала 1 нет.
Цитата:
[0.01, 0.1, 0.25, 0.5, 1, 5]
Really?
__________________
мой пустой блог

Старый 27.02.2013, 16:21
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Прочитал как 1,5
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 27.02.2013, 16:21
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Алгоритм "в лоб" предельно прост. Пускаем бесконечный цикл, пока оставшаяся сумма не станет равной 0. Вычитаем из нее каждый шаг самый большой номинал. Если сумма получилась отрицательной, то берем следующий номинал поменьше. Как только стала положительной, сохраняем остаток в переменную, где у нас была первоначальная сумма и идем на новую итерацию.

Что-то типа того (не окончательный вариант без кэширования) выглядит так:
Код AS3:
while (sum > 0) {
    for (var i:uint = 0; i < nominalList.length; i++) {
        if ((sum - nominalList[i]) >= 0) {
            sum -= nominalList[i];
            resultList.push(nominalList[i]);
            break;
        }
    }
}
__________________
тут я

Старый 27.02.2013, 16:23
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
https://www.youtube.com/watch?v=O28YpB4fo18
__________________
משיח לא בא
משיח גם לא מטלפן

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.