Jump to content
  • 0

Задачи по js


ctpz
 Share

Question

Здесь предлагаю обмениваться задачами и своими решениями для них.

Я думаю, было бы интересно.

Задача №1

Дано:

Форма с тремя элементами

  • Количество (текстовое поле, редактируется)
  • ПДВ (текстовое поле, не редактируется)
  • Скидка (select)

Задание:

Написать скрипт, который будет умножать кол-во на заранее установленную цену, прибавлять к этому всему ПДВ (20% (можно свое число)) и вычитать скидку в зависимости от вобранного элемента select'a.

Подсказки:

1. Получить число из строки (содержимое текстового поля является строкой) можно например так:


var numOfLine = getElementById('id').value * 1;

где id - id текстового поля.

Уровент сложности - низкий

P.S. если кто-то хочет усложнить задание, то он может создать функцию, котороя бы принимала значения ПДВ и цены.

Edited by ctpz
Link to comment
Share on other sites

Recommended Posts

  • 0

ctpz,

Ага, выкладывать задачи, чтобы за тебя её решили :D

Уж больно условие похоже на это http://forum.htmlbook.ru/index.php?showtopic=27525

Ну и это очень далеко даже не средний уровень. По 10-балльной шкале, я бы её оценила на 1-2 балла.

Link to comment
Share on other sites

  • 0

ctpz,

Ага, выкладывать задачи, чтобы за тебя её решили :D

Уж больно условие похоже на это http://forum.htmlbook.ru/index.php?showtopic=27525

Ну и это очень далеко даже не средний уровень. По 10-балльной шкале, я бы её оценила на 1-2 балла.

Такие скрипты я делал, ещё когда учился программированию ))

Link to comment
Share on other sites

  • 0

DrStrangeLove, это единый налог

sigma77, этот калькулятор я уже закончил и если кто-то не верит, то могу даже ссылку кинуть. А решение задачи сверху у меня уже также есть. Могу в личку кинуть.

Edited by ctpz
Link to comment
Share on other sites

  • 0

Кстати, простота таких вещей очень часто бывает обманчивой. Особенно когда дело касается денежных расчетов, а на клиенте внезапно дают о себе знать особенности округления, глюки toFixed (причем в разных браузерах разные!), отчего клиентский калькулятор может давать расхождение с серверной логикой... поначалу в пределах цента, но при суммировании операций ошибка может накапливаться... неудивительно, что нередко простейшая с виду форма в ходе исправления таких "неточностей" превращается в такое (см. картинку в конце записи) :)

Link to comment
Share on other sites

  • 0

Если в этом же потоке, то не надо.

Нет, есть весьма сложные.

Кстати, простота таких вещей очень часто бывает обманчивой. Особенно когда дело касается денежных расчетов, а на клиенте внезапно дают о себе знать особенности округления, глюки toFixed (причем в разных браузерах разные!), отчего клиентский калькулятор может давать расхождение с серверной логикой... поначалу в пределах цента, но при суммировании операций ошибка может накапливаться... неудивительно, что нередко простейшая с виду форма в ходе исправления таких "неточностей" превращается в такое (см. картинку в конце записи) :)

Полностью согласен. Простота бывает обманчива.

Link to comment
Share on other sites

  • 0

Задача №2 (№446 в сборнике)

Дано:

Пользователь вводит несколько чисел, разделяя их запятой.

Задание:

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

!ВНИМАНИЕ!

1. Внешний вид модального окна: http://savepic.ru/2935793.png

2. Запрещается использовать Framework'и

3. Запрещается использовать картинки

Edited by ctpz
Link to comment
Share on other sites

  • 0
Давайте сложные.

Реализация алгоритма A*. (уже сделал)

Реализация интегрирования Верле для материальной точки. (пока в процессе изучения)

Релазиция генетического алгоритма. Подбирать можно что угодно, например слово. (в планах после Верле)

Или можно немного попроще:

Реализация WYSIWYG-редактора.

Перевод любого числа в слова (1234567 = Один миллион двести тридцать четыре тысячи пятьсот шестьдесят семь).

Link to comment
Share on other sites

  • 0
(function(){
var list = ['а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я'], filter = function(i){
return list.indexOf(i) != -1;
},
parse = function(string){
return string && typeof string == 'string' && string.split('').filter(filter).sort().join('') || null;
};
window.parseString = parse;
}());

Link to comment
Share on other sites

  • 0

Реализация WYSIWYG-редактора.

Это уже стоит денег.

Остальное уже интересно.

Перевод любого числа в слова (1234567 = Один миллион двести тридцать четыре тысячи пятьсот шестьдесят семь).

Это наверно можно даже сегодня.

Nekromancer, я новую задачу выложил (посложнее)

Опять про сортировку, тут ничего придумывать не надо даже.

Link to comment
Share on other sites

  • 0

Тут не только сортировка, но и создание графики. Сборник писался в 2007 году, когда о css3 никто не знал.

Реализация WYSIWYG-редактора.

Это уже стоит денег.

МОжно создать онлайн сервис по редактированию html-файлов, где человек зашел, попользовался сохранил результат себе на компьютер и все. Учитывая то, что 10 - 15 процентов посетителей кликают по рекламным обьявлениям можно получать деньги постоянно, просто поставив рекламу.

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

Edited by ctpz
Link to comment
Share on other sites

  • 0

Вот интересная и реальная задача.

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

P.S. за готовым кодом для в личку :)

var c_config = {
// курсы валют sell/buy
rate: {
USD: {
sell: 7.92,
buy: 7.95
},
UAH: {
sell: 1,
buy: 1
},
RUB: {
sell: 0.272,
buy: 0.23
},
EUR: {
sell: 11,
buy: 10
}
},

WM_FEE: 0.008 // комиссия web money

currency: {
WMZ: {
title: 'Webmoney WMZ', // название в select-box который нам надо сгенерировать
type: 'USD', // тип валюты относительно курса валют
virtual: true, // виртуальная или реальная валюта
maxWmFee: 50, // если эта переменная имеет значение, значит это wm валюта и ей надо задать максимальную wm комиссию
minAmt: 10, // минимальная сумма ввода
maxAmt: 100000, // максимальная
sell: { // комиссии сервиса
minFee: 1, // минимальная комиссия
sFee: [
{ int: '0-99', val: 0.032 }, // интервал, комиссия
{ int: '100-599', val: 0.03 },
{ int: '600-9999', val: 0.02 },
{ int: '10000', val: null }
]
},
buy: {
minFee: 1,
sFee: [
{ int: '0-100', val: 0.02 },
{ int: '101-1000', val: 0.012 },
{ int: '1001-5000', val: 0.01 },
{ int: '5001', val: null }
]
}
},
WMU: {
title: 'Webmoney WMU',
type: 'UAH',
virtual: true,
maxWmFee: 250,
minAmt: 30,
maxAmt: 100000,
sell: {
minFee: 5,
sFee: [
{ int: '0-7000', val: 0.05 },
{ int: '7001', val: 0.03 }
]
},
buy: {
minFee: 10,
sFee: [
{ int: '0-1000', val: 0.02 },
{ int: '1001-5000', val: 0.018 },
{ int: '5001', val: 0 }
]
}
},
WME: {
title: 'Webmoney WME',
virtual: true,
type: 'EUR',
maxWmFee: 50,
minAmt: 10,
maxAmt: 100000,
sell: {
minFee: 1,
sFee: [
{ int: '0-1000', val: 0.04 },
{ int: '1001', val: null }
]
},
buy: {
minFee: 2,
sFee: [
{ int: '0', val: 0.024 }
]
}
},
WMR: {
title: 'Webmoney WMR',
type: 'RUB',
virtual: true,
maxWmFee: 1500,
minAmt: 130,
maxAmt: 100000,
sell: {
minFee: 25,
sFee: [
{ int: '0-3000', val: 0.01 },
{ int: '3001', val: 0 }
]
},
buy: {
minFee: 25,
sFee: [
{ int: '0', val: 0.05 }
]
}
},
PRIVAT_USD: {
title: 'Приватбанк USD',
type: 'USD',
minAmt: 10,
maxAmt: 100000,
hide_bankFee: true
},
PRIVAT_UAH: {
title: 'Приватбанк UAH',
type: 'UAH',
minAmt: 30,
maxAmt: 100000,
hide_bankFee: true
},
UAH: {
title: 'UAH',
type: 'UAH',
minAmt: 30,
maxAmt: 100000,
hide_bankFee: true
},
OTP_USD: {
title: 'OTP Bank USD',
type: 'USD',
minAmt: 10,
maxAmt: 100000,
},
UNIVERSAL_UAH: {
title: 'Universal Bank UAH',
type: 'UAH',
minAmt: 30,
maxAmt: 100000,
},
WESTERN_USD: {
title: 'Western Union USD',
type: 'USD',
minAmt: 10,
maxAmt: 100000,
},
MONEYGRAM_USD: {
title: 'MoneyGram USD',
type: 'USD',
minAmt: 10,
maxAmt: 100000,
},
PRIVATMONEY_UAH: {
title: 'PrivatMoney UAH',
type: 'UAH',
minAmt: 30,
maxAmt: 100000,
},
FOREX4YOU_USD: {
title: 'Forex4you USD',
type: 'USD',
virtual: true,
minAmt: 10,
maxAmt: 100000,
sell: {
sFee: [
{ int: '0-99', val: 0.032 },
{ int: '100-599', val: 0.03 },
{ int: '600-9999', val: 0.02 },
{ int: '10000', val: null }
]
},
buy: {
sFee: [
{ int: '0-100', val: 0.02 },
{ int: '101-1000', val: 0.012 },
{ int: '1001-5000', val: 0.01 },
{ int: '5501', val: null }
]
}
},
INSTAFOREX_USD: {
title: 'Instaforex USD',
type: 'USD',
virtual: true,
minAmt: 10,
maxAmt: 100000,
sell: {
sFee: [
{ int: '0-99', val: 0.032 },
{ int: '100-599', val: 0.03 },
{ int: '600-9999', val: 0.02 },
{ int: '10000', val: null }
]
},
buy: {
sFee: [
{ int: '0-100', val: 0.02 },
{ int: '101-1000', val: 0.012 },
{ int: '1001-5000', val: 0.01 },
{ int: '5501', val: null }
]
}
}
}
}

А вот набросок формул:



IN_INPUT Поле ввода IN
[тип валюты].[направление].FEE Комиссия сервиса
[тип валюты].[направление].RATE Курс валюты
WM.FEE Комиссия Web Money


————————————————————————-

WMZ -> PRIVAT USD IN_INPUT - IN_INPUT * WMZ.OUT.FEE
WMZ -> PRIVAT UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * WMZ.OUT.FEE
WMZ -> UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * WMZ.OUT.FEE
WMZ -> OTP USD IN_INPUT - IN_INPUT * WMZ.OUT.FEE
WMZ -> UNIVERSAL UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * WMZ.OUT.FEE
WMZ -> WESTERN USD IN_INPUT - IN_INPUT * WMZ.OUT.FEE
WMZ -> MONEYGRAM USD IN_INPUT - IN_INPUT * WMZ.OUT.FEE
WMZ -> PRIVATMONEY UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * WMZ.OUT.FEE

————————————————————————-

WMR -> PRIVAT USD IN_INPUT * RUB.SELL.RATE/USD.BUY.RATE - IN_INPUT * WMR.OUT.FEE * RUB.SELL.RATE/USD.BUY.RATE
WMR -> PRIVAT UAH IN_INPUT * RUB.SELL.RATE - IN_INPUT * RUB.SELL.RATE * WMR.OUT.FEE
WMR -> UAH IN_INPUT * RUB.SELL.RATE - IN_INPUT * RUB.SELL.RATE * WMR.OUT.FEE
WMR -> OTP USD IN_INPUT * RUB.SELL.RATE/USD.BUY.RATE - IN_INPUT * WMR.OUT.FEE * RUB.SELL.RATE/USD.BUY.RATE
WMR -> UNIVERSAL UAH IN_INPUT * RUB.SELL.RATE - IN_INPUT * RUB.SELL.RATE * WMR.OUT.FEE
WMR -> WESTERN USD IN_INPUT * RUB.SELL.RATE/USD.BUY.RATE - IN_INPUT * WMR.OUT.FEE * RUB.SELL.RATE/USD.BUY.RATE
WMR -> MONEYGRAM USD IN_INPUT * RUB.SELL.RATE/USD.BUY.RATE - IN_INPUT * WMR.OUT.FEE * RUB.SELL.RATE/USD.BUY.RATE
WMR -> PRIVATMONEY UAH IN_INPUT * RUB.SELL.RATE - IN_INPUT * RUB.SELL.RATE * WMR.OUT.FEE

————————————————————————-

WMU -> PRIVAT USD IN_INPUT / USD.BUY.RATE - IN_INPUT / USD.BUY.RATE * WMU.OUT.FEE
WMU -> PRIVAT UAH IN_INPUT - IN_INPUT * WMU.OUT.FEE
WMU -> UAH IN_INPUT - IN_INPUT * WMU.OUT.FEE
WMU -> OTP USD IN_INPUT / USD.BUY.RATE - IN_INPUT / USD.BUY.RATE * WMU.OUT.FEE
WMU -> UNIVERSAL UAH IN_INPUT - IN_INPUT * WMU.OUT.FEE
WMU -> WESTERN USD IN_INPUT / USD.BUY.RATE - IN_INPUT / USD.BUY.RATE * WMU.OUT.FEE
WMU -> MONEYGRAM USD IN_INPUT / USD.BUY.RATE - IN_INPUT / USD.BUY.RATE * WMU.OUT.FEE
WMU -> PRIVATMONEY UAH IN_INPUT - IN_INPUT * WMU.OUT.FEE

————————————————————————-

WME -> PRIVAT USD IN_INPUT * EUR.SELL.RATE/USD.BUY.RATE - IN_INPUT * WME.OUT.FEE * EUR.SELL.RATE/USD.BUY.RATE
WME -> PRIVAT UAH IN_INPUT * EUR.SELL.RATE - IN_INPUT * EUR.SELL.RATE * WME.OUT.FEE
WME -> UAH IN_INPUT * EUR.SELL.RATE - IN_INPUT * EUR.SELL.RATE * WME.OUT.FEE
WME -> OTP USD IN_INPUT * EUR.SELL.RATE/USD.BUY.RATE - IN_INPUT * WME.OUT.FEE * EUR.SELL.RATE/USD.BUY.RATE
WME -> UNIVERSAL UAH IN_INPUT * EUR.SELL.RATE - IN_INPUT * EUR.SELL.RATE * WME.OUT.FEE
WME -> WESTERN USD IN_INPUT * EUR.SELL.RATE/USD.BUY.RATE - IN_INPUT * WME.OUT.FEE * EUR.SELL.RATE/USD.BUY.RATE
WME -> MONEYGRAM USD IN_INPUT * EUR.SELL.RATE/USD.BUY.RATE - IN_INPUT * WME.OUT.FEE * EUR.SELL.RATE/USD.BUY.RATE
WME -> PRIVATMONEY UAH IN_INPUT * EUR.SELL.RATE - IN_INPUT * EUR.SELL.RATE * WME.OUT.FEE

————————————————————————-

PRIVAT USD -> WMZ (IN_INPUT - IN_INPUT * IN.FEE) - WM.FEE
PRIVAT UAH -> WMZ (IN_INPUT / USD.BUY.RATE - IN_INPUT / USD.BUY.RATE * WMZ.IN.FEE) - WM.FEE
UAH -> WMZ (IN_INPUT / USD.BUY.RATE - IN_INPUT / USD.BUY.RATE * WMZ.IN.FEE) - WM.FEE
OTP USD -> WMZ (IN_INPUT - IN_INPUT * WMZ.IN.FEE) - WM.FEE
UNIVERSAL UAH -> WMZ (IN_INPUT / USD.BUY.RATE - IN_INPUT / USD.BUY.RATE * WMZ.IN.FEE) - WM.FEE
WESTERN USD -> WMZ (IN_INPUT - IN_INPUT * WMZ.IN.FEE) - WM.FEE
MONEYGRAM USD -> WMZ (IN_INPUT - IN_INPUT * WMZ.IN.FEE) - WM.FEE
PRIVATMONEY UAH -> WMZ (IN_INPUT / USD.BUY.RATE - IN_INPUT / USD.BUY.RATE * WMZ.IN.FEE) - WM.FEE

————————————————————————-

PRIVAT USD -> WMR (IN_INPUT / (USD.SELL.RATE/RUB.BUY.RARE) - IN_INPUT * WMR.IN.FEE) - WM.FEE
PRIVAT UAH -> WMR (IN_INPUT / RUB.BUY.RATE - IN_INPUT / RUB.BUY.RATE * WMR.IN.FEE) - WM.FEE
UAH -> WMR (IN_INPUT / RUB.BUY.RATE - IN_INPUT / RUB.BUY.RATE * WMR.IN.FEE) - WM.FEE
OTP USD -> WMR (IN_INPUT / (USD.SELL.RATE/RUB.BUY.RARE) - IN_INPUT * WMR.IN.FEE) - WM.FEE
UNIVERSAL UAH -> WMR (IN_INPUT / RUB.BUY.RATE - IN_INPUT / RUB.BUY.RATE * WMR.IN.FEE) - WM.FEE
WESTERN USD -> WMR (IN_INPUT / (USD.SELL.RATE/RUB.BUY.RARE) - IN_INPUT * WMR.IN.FEE) - WM.FEE
MONEYGRAM USD -> WMR (IN_INPUT / (USD.SELL.RATE/RUB.BUY.RARE) - IN_INPUT * WMR.IN.FEE) - WM.FEE
PRIVATMONEY UAH -> WMR (IN_INPUT / RUB.BUY.RATE - IN_INPUT / RUB.BUY.RATE * WMR.IN.FEE) - WM.FEE

————————————————————————-

PRIVAT USD -> WME (IN_INPUT / (USD.SELL.RATE/EUR.BUY.RARE) - IN_INPUT * WME.IN.FEE) - WM.FEE
PRIVAT UAH -> WME (IN_INPUT / RUB.BUY.RATE - IN_INPUT / RUB.BUY.RATE * WME.IN.FEE) - WM.FEE
UAH -> WME (IN_INPUT / RUB.BUY.RATE - IN_INPUT / RUB.BUY.RATE * WME.IN.FEE) - WM.FEE
OTP USD -> WME (IN_INPUT / (USD.SELL.RATE/EUR.BUY.RARE) - IN_INPUT * WME.IN.FEE) - WM.FEE
UNIVERSAL UAH -> WME (IN_INPUT / RUB.BUY.RATE - IN_INPUT / RUB.BUY.RATE * WME.IN.FEE) - WM.FEE
WESTERN USD -> WME (IN_INPUT / (USD.SELL.RATE/EUR.BUY.RARE) - IN_INPUT * WME.IN.FEE) - WM.FEE
MONEYGRAM USD -> WME (IN_INPUT / (USD.SELL.RATE/EUR.BUY.RARE) - IN_INPUT * WME.IN.FEE) - WM.FEE
PRIVATMONEY UAH -> WME (IN_INPUT / RUB.BUY.RATE - IN_INPUT / RUB.BUY.RATE * WME.IN.FEE) - WM.FEE

————————————————————————-

PRIVAT USD -> WMU (IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * WMU.IN.FEE) - WM.FEE
PRIVAT UAH -> WMU (IN_INPUT - IN_INPUT * WMU.IN.FEE) - WM.FEE
UAH -> WMU (IN_INPUT - IN_INPUT * WMU.IN.FEE) - WM.FEE
OTP USD -> WMU (IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * WMU.IN.FEE) - WM.FEE
UNIVERSAL UAH -> WMU (IN_INPUT - IN_INPUT * WMU.IN.FEE) - WM.FEE
WESTERN USD -> WMU (IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * WMU.IN.FEE) - WM.FEE
MONEYGRAM USD -> WMU (IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * WMU.IN.FEE) - WM.FEE
PRIVATMONEY UAH -> WMU (IN_INPUT - IN_INPUT * WMU.IN.FEE) - WM.FEE

————————————————————————-

PRIVAT USD -> INSTA_FOREX IN_INPUT - IN_INPUT * INSTA_FOREX.IN.FEE
PRIVAT UAH -> INSTA_FOREX IN_INPUT / USD.BUY.RATE - IN_INPUT * INSTA_FOREX.IN.FEE
UAH -> INSTA_FOREX IN_INPUT / USD.BUY.RATE - IN_INPUT * INSTA_FOREX.IN.FEE
OTP USD -> INSTA_FOREX IN_INPUT - IN_INPUT * INSTA_FOREX.IN.FEE
UNIVERSAL UAH -> INSTA_FOREX IN_INPUT / USD.BUY.RATE - IN_INPUT * INSTA_FOREX.IN.FEE
WESTERN USD -> INSTA_FOREX IN_INPUT - IN_INPUT * INSTA_FOREX.IN.FEE
MONEYGRAM USD -> INSTA_FOREX IN_INPUT - IN_INPUT * INSTA_FOREX.IN.FEE
PRIVATMONEY UAH -> INSTA_FOREX IN_INPUT / USD.BUY.RATE - IN_INPUT * INSTA_FOREX.IN.FEE

————————————————————————-

PRIVAT USD -> FOREX4YOU IN_INPUT - IN_INPUT * FOREX4YOU.IN.FEE
PRIVAT UAH -> FOREX4YOU IN_INPUT / USD.BUY.RATE - IN_INPUT * FOREX4YOU.IN.FEE
UAH -> FOREX4YOU IN_INPUT / USD.BUY.RATE - IN_INPUT * FOREX4YOU.IN.FEE
OTP USD -> FOREX4YOU IN_INPUT - IN_INPUT * FOREX4YOU.IN.FEE
UNIVERSAL UAH -> FOREX4YOU IN_INPUT / USD.BUY.RATE - IN_INPUT * FOREX4YOU.IN.FEE
WESTERN USD -> FOREX4YOU IN_INPUT - IN_INPUT * FOREX4YOU.IN.FEE
MONEYGRAM USD -> FOREX4YOU IN_INPUT - IN_INPUT * FOREX4YOU.IN.FEE
PRIVATMONEY UAH -> FOREX4YOU IN_INPUT / USD.BUY.RATE - IN_INPUT * FOREX4YOU.IN.FEE

————————————————————————-

FOREX4YOU -> PRIVAT USD IN_INPUT - IN_INPUT * FOREX4YOU.OUT.FEE
FOREX4YOU -> PRIVAT UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * FOREX4YOU.OUT.FEE
FOREX4YOU -> UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * FOREX4YOU.OUT.FEE
FOREX4YOU -> OTP USD IN_INPUT - IN_INPUT * FOREX4YOU.OUT.FEE
FOREX4YOU -> UNIVERSAL UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * FOREX4YOU.OUT.FEE
FOREX4YOU -> WESTERN USD IN_INPUT - IN_INPUT * FOREX4YOU.OUT.FEE
FOREX4YOU -> MONEYGRAM USD IN_INPUT - IN_INPUT * FOREX4YOU.OUT.FEE
FOREX4YOU -> PRIVATMONEY UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * FOREX4YOU.OUT.FEE
————————————————————————-

INSTA_FOREX -> PRIVAT USD IN_INPUT - IN_INPUT * INSTA_FOREX.OUT.FEE
INSTA_FOREX -> PRIVAT UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * INSTA_FOREX.OUT.FEE
INSTA_FOREX -> UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * INSTA_FOREX.OUT.FEE
INSTA_FOREX -> OTP USD IN_INPUT - IN_INPUT * INSTA_FOREX.OUT.FEE
INSTA_FOREX -> UNIVERSAL UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * INSTA_FOREX.OUT.FEE
INSTA_FOREX -> WESTERN USD IN_INPUT - IN_INPUT * INSTA_FOREX.OUT.FEE
INSTA_FOREX -> MONEYGRAM USD IN_INPUT - IN_INPUT * INSTA_FOREX.OUT.FEE
INSTA_FOREX -> PRIVATMONEY UAH IN_INPUT * USD.SELL.RATE - IN_INPUT * USD.SELL.RATE * INSTA_FOREX.OUT.FEE

Edited by ruslan.savenok
  • Like 1
Link to comment
Share on other sites

  • 0

Это ж очень простая задача - формулы есть, что сложного в том, что бы перемножить/вычесть/сложить/поделить одно значение на другое?

Тут лишь один сложный момент, кривая калькуляция js которая возвращает результат 3.46999999999999999991 вместо 3.47, где очень важно иметь точное число при обратной калькуляции. А так задача действительно простоя, но мне как в основном UI js кодеру, математическая задача была очень интересной и познавательной.

Edited by ruslan.savenok
Link to comment
Share on other sites

  • 0
Тут лишь один сложный момент, кривая калькуляция js которая возвращает результат 3.46999999999999999991 вместо 3.47


var num = 3.46999999999999999991;
alert(num.toPrecision());

При тестах (в данной задаче их было 70), выяснилось что это не всегда подходит.

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

Тут у нас и динамическая постройка 2х select-ов в зависимости от того, что выбрано в первом, и валидация вводящей суммы, и вывод информации о комиссии + калькулятор "туда-обартно" с разной комиссией для разных сумм.

Link to comment
Share on other sites

  • 0

Просто я не понимаю зачем писать задачу на написание калькулятора, если реальная задача состоит в том чтобы получить необходимую точность вычислений. Ведь в этом интерес, я правильно понимаю?

Link to comment
Share on other sites

  • 0

Просто я не понимаю зачем писать задачу на написание калькулятора, если реальная задача состоит в том чтобы получить необходимую точность вычислений. Ведь в этом интерес, я правильно понимаю?

Это проблема, интерес в написании всего работающего приложения :)

Link to comment
Share on other sites

  • 0
(function(window){
var list = {
0: ['Один', 'Два', 'Три', 'Четыре', 'Пять', 'Шесть', 'Семь', 'Восемь', 'Девять'],
1: ['Десять', 'Двадцать', 'Тридцать', 'Сорок', 'Пятьдесят', 'Шестьдесят', 'Семьдесят', 'Восемьдесят', 'Девяноста'],
2: ['Сто', 'Двести', 'Триста', 'Четыреста', 'Пятьсот', 'Шестьсот', 'Семьсот', 'Восемьсот', 'Девятьсот'],
teen: ['Одиннадцать', 'Двенадцать', 'Тринадцать', 'Четырнадцать', 'Пятнадцать', 'Шестнадцать', 'Семнадцать', 'Восемнадцать', 'Девятнадцать'],
zero: 'Ноль',
high: ['Тысяча', 'Миллион', 'Миллиард']
},
parse = function(decimal){
var x, result, high, rest, number, factor, tmp;
if((!decimal && typeof decimal != 'number') || (decimal = ''+decimal).indexOf('.') != -1 || decimal.length > 12) return null;
if((decimal = decimal.split('').reverse()).length == 1 && decimal[0] == '0') return list.zero;
result = [];
number = [];
high = Math.floor((decimal.length - 1 ) / 3);
rest = decimal.length - high * 3;
do{
x = 0, factor = high * 3;
decimal.slice(factor, factor + rest).every(function(key, i){
return key === '0' && ++x;
});
for(; x < rest; x++){
if(x == 0 && decimal[factor + x + 1] == '1') (tmp = list.teen[decimal[factor + x] - 1]) && number.unshift(tmp), x++;
else (tmp = list[x][decimal[factor + x] - 1]) && number.unshift(tmp);
}
rest = 3;
if(high){
number.push(list.high[high - 1]);
//here is the script of linguistic system of russian language
}
Array.prototype.push.apply(result, number);
number = [];
}while(high--);
return result.join(' ');
};
window.parseDecimal = parse;
}(this));

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy