Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача js ОЧЕНЬ СРОЧНО

Ксения Казакова Ученик (143), на голосовании 5 месяцев назад
Петя очень тщательно ведет учет своих покупок. В конце месяца ему стало интересно, на какую категорию товаров он потратил меньше всего денег. Данные о расходах, которые записывает Петя, содержат категорию товара, полную стоимость товара и процент скидки на этот товар. Напишите программу, которая поможет Пете.



Входные данные:

Вводится натуральное число n – количество строк с данными о покупках. Далее вводятся n строк, в каждой из которых указаны категория покупки, ее цена (без учета скидки) и скидка в процентах. Гарантируется, что в каждой строке сначала идет название категории (строка из латинских букв), потом пробел, потом цена (натуральное число), потом пробел и скидка (натуральное число).



Выходные данные:

Вывести одну число – название категории товара, на которую Петя потратил меньше всего денег с учетом скидок.



Так, например, если программе на вход будут поданы следующие данные:

7
milk 100 10
clothes 1100 60
other 3000 55
meat 300 40
milk 120 20

clothes 500 60

meat 2000 90

то она должна вывести «milk».


В поле краткого ответа введите строку, которая получается в результате работы программы на входных данных из файла «6.4.txt» https://futurecode.rustest.ru/storage/ekim_images/kb_files_javascript/6.4.txt
Голосование за лучший ответ
Елдос Егимбаев Ученик (110) 6 месяцев назад
Давайте решим эту задачу. Нам нужно определить, на какую категорию товаров Петя потратил меньше всего денег с учетом скидок. Для этого мы можем создать словарь, где ключами будут названия категорий, а значениями – общая сумма потраченных денег с учетом скидок. Затем мы выберем категорию с минимальной суммой. Вот как это можно сделать на JavaScript:
// Входные данные (предполагаем, что у нас есть массив строк с данными о покупках)
const purchases = [
"milk 100 10",
"clothes 1100 60",
"other 3000 55",
"meat 300 40",
"milk 120 20",
"clothes 500 60",
"meat 2000 90"
];

// Создаем пустой словарь для хранения сумм по категориям
const categoryTotals = {};

// Обрабатываем каждую строку с данными о покупке
for (const purchase of purchases) {
const [category, price, discount] = purchase.split(" ");
const totalPrice = parseInt(price) * (1 - parseInt(discount) / 100);

// Если категория уже есть в словаре, добавляем к сумме
if (category in categoryTotals) {
categoryTotals[category] += totalPrice;
} else {
// Иначе создаем новую запись
categoryTotals[category] = totalPrice;
}
}

// Находим категорию с минимальной суммой
let minCategory = null;
let minTotal = Infinity;
for (const category in categoryTotals) {
if (categoryTotals[category] < minTotal) {
minTotal = categoryTotals[category];
minCategory = category;
}
}

// Выводим результат
console.log(minCategory);


В результате выполнения этой программы на входных данных из файла «6.4.txt», она выведет название категории товара, на которую Петя потратил меньше всего денег с учетом скидок. Введите получившуюся строку в поле краткого ответа. ?
Андрей Устинов Мастер (2150) 5 месяцев назад
 Вот. Наверное можно написать лучше, но я не очень опытный кодер. 
const goods = [
'milk 100 10',
'clothes 1100 60',
'meat 300 40'
]

const getDiscountPrice = (price, discount) => {
return price - (price * (discount/100))
}

const minimalPrice = (goods) => {
const calculatedPrices = goods.map(e => {
const [name, price, discount] = e.split(' ')

return { name: name, price: getDiscountPrice(parseInt(price), parseInt(discount)) }
})

return calculatedPrices.sort((a, b) => a.price - b.price)[0].name
}

console.log(minimalPrice(goods))
Похожие вопросы