0 / 0 / 0
Регистрация: 31.03.2022
Сообщений: 1
1

Задача на работу с объектами

31.03.2022, 12:16. Показов 3217. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1. Сохранить самый дорогой товар в переменную`max`
2. Сохранить самый дешевый товар в переменную`min`
3. Сохранить общую цену без скидок в переменную`total`
4. Сохранить общую цену со скидкой в переменную`totalSale`
5. Сохранить элементы из массива `arr` с обновленной ценой (цена со скидкой) в переменную `arr_sale`
6. Сохранить в переменной`average` среднюю цену всех продуктов без скидок
Писать весь код в функции `setup()`
ТРИ ОЦЕНКИ. ЧИСТОТА КОДА, ЛОГИКА РАБОТЫ, УНИКАЛЬНОСТЬ КОДА

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// ИСХОДНЫЕ ДАННЫЕ НЕ ТРОГАТЬ!*
 
let discount = prompt('Какая скидка?')
 
let totalSale = Number
 
let total = Number
 
let max = Object
 
let min = Object
 
let average = Number
 
let arr = [
 
{
 
name: 'Milk',
 
price: 3.25
 
},
 
{
 
name: 'Coffee',
 
price: 1.5
 
},
 
{
 
name: 'Ice Cream',
 
price: 7.85
 
},
 
{
 
name: 'Tomatos',
 
price: 4.14
 
},
 
{
 
name: 'Onion',
 
price: 2.25
 
}
 
]
 
let arr_sale = []
 
const setup = (arg) => {
 
}
 
setup()
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2022, 12:16
Ответы с готовыми решениями:

Организовать работу с объектами разных версий
Есть иерархия классов, нескольких версий, например: Тип1v1.0 -Тип1.1v1.0 -Тип1.2v1.0 ...

Написать программу, демонстрирующую работу с объектами двух типов
Написать программу, демонстрирующую работу с объектами двух типов, T1 и T2, для чего создать...

Написать программу, демонстрирующую работу с объектами двух типов, T1 и T2
Здарова работяги нужна помощь переделать задачу Сама задача Общая часть заданий для вариантов...

Написать программу, демонстрирующую работу с объектами двух типов
Написать программу, демонстрирующую работу с объектами двух типов: Т1 и Т2, для чего создать...

Написать программу, демонстрирующую работу с объектами двух типов
Помогите,пожалуйста,разобраться с задачей.Написать программу, демонстрирующую работу с ...

5
1757 / 912 / 373
Регистрация: 26.11.2014
Сообщений: 1,866
Записей в блоге: 1
31.03.2022, 22:29 2
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// ИСХОДНЫЕ ДАННЫЕ НЕ ТРОГАТЬ!*
 
let discount = prompt('Какая скидка?')
let totalSale = Number
let total = Number
let max = Object
let min = Object
let average = Number
 
let arr = [
    {
        name: 'Milk',
        price: 3.25
    },
    {
        name: 'Coffee',
        price: 1.5
    },
    {
        name: 'Ice Cream',
        price: 7.85
    },
    {
        name: 'Tomatos',
        price: 4.14
    },
    {
        name: 'Onion',
        price: 2.25
    }
]
 
let arr_sale = []
 
const setup = (arg) => {
 
    // Сохранить самый дорогой товар в переменную`max`
    let maxPrice = 0
    let indexMax = 0
    arr.forEach((item) => {
        if (item.price > maxPrice) {
            maxPrice = item.price
            indexMax++
        }
    })
    max = arr[indexMax]
    log(max)//Объект с самым дорогим товаром
 
    // Сохранить самый дешевый товар в переменную`min`
    let minPrice = arr[0].price //3.25
    let indexMin = 0
    arr.forEach((item, index, arr) => {
        if (index < arr.length - 2 && arr[index + 1].price < minPrice) {
            minPrice = item.price
            indexMin++
        }
    })
    min = arr[indexMin]
    log(min)// Объект с самым дешёвым товаром
 
    // Сохранить общую цену без скидок в переменную`total`
    total = 0
    arr.forEach((item) => {
        total += item.price
    })
    log(total)// Общая цена без скидок
 
    // Сохранить общую цену со скидкой в переменную`totalSale`
    let realDiscount = 0
    if (+discount > 0 && +discount <= 100) {
        realDiscount = Math.round(+discount)
    }
    totalSale = 0
    arr.forEach((item) => {
        totalSale += item.price * realDiscount / 100
    })
    log(totalSale)// Общая цена со скидкой
 
    // Сохранить элементы из массива `arr` с обновленной ценой (цена со скидкой) в переменную `arr_sale`
    arr_sale = arr.map((item) => {
        return item = {
            name: item.name,
            price: item.price * realDiscount / 100
        }
    })
    log(arr_sale)// массив с обновлёнными ценами
 
    // Сохранить в переменной `average` среднюю цену всех продуктов без скидок
    average = (arr.reduce((sum, value) => sum + value.price, 0)) / arr.length
    log(average)// средняя цена всех продуктов
 
}
 
setup()
0
Эксперт JS
2454 / 1761 / 624
Регистрация: 11.07.2016
Сообщений: 4,051
01.04.2022, 00:20 3
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// ИСХОДНЫЕ ДАННЫЕ НЕ ТРОГАТЬ!*
 
let discount = prompt('Какая скидка?')
let totalSale = Number
let total = Number
let max = Object
let min = Object
let average = Number
 
let arr = [
    {
        name: 'Milk',
        price: 3.25
    },
    {
        name: 'Coffee',
        price: 1.5
    },
    {
        name: 'Ice Cream',
        price: 7.85
    },
    {
        name: 'Tomatos',
        price: 4.14
    },
    {
        name: 'Onion',
        price: 2.25
    }
]
 
let arr_sale = []
 
const setup = (arg) => {
    const round = val => parseFloat(val.toFixed(2))
    const prices = arr.map(e => e.price)
    max = arr.find(e => e.price == Math.max(...prices))
    min = arr.find(e => e.price == Math.min(...prices))
    total = prices.reduce((a, b) => a + b)
    totalSale = round(total * (1 - discount / 100))
    arr_sale = arr.map(e => {return {...e}})
    arr_sale.forEach(e => e.price = round(e.price * (1 - discount / 100)))
    average = round(total / arr.length)
}
 
setup()
NTHing, у вас цены со скидками неверные будут.

Добавлено через 17 минут
А к постановке задачи есть несколько вопросов:
1) Какой формат данных для ввода скидки через prompt()? Целое число - значение скидки в процентах / Строка / Дробное число? Нужна ли валидация?
2) Как высчитывается сумма заказа с учётом скидки? Скидка применяется к сумме заказа или к каждому товару в отдельности? Разница может быть в несколько копеек в зависимости от подхода.
3) Для чего нужен параметр arg в функции setup(), если она вызывается без параметров?
4) Разрешено ли изменять исходный массив или в arr_sale следует записать клоны объектов исходного массива?
5) Разрешено ли использовать методы переборов массива и деструктуризацию?
6) Ну и конечно же... WTF со способом хранения результирующих данных?
1
1757 / 912 / 373
Регистрация: 26.11.2014
Сообщений: 1,866
Записей в блоге: 1
01.04.2022, 08:03 4
1). Да, спасибо, исправил. Исправил также вычисление товара с максимальной ценой (в случае когда максимальная цена у товара, который последний в массиве, на выходе был undefined).
2). Вопросы к ТЗ есть и будут всегда. И заказчик не может тоже охватить все варианты сразу. И у меня, как минимум, есть проверка на формат и значение вводимой скидки ))
3). И выношу на обсуждение вопрос. Какой код считает точнее при прочих равных?
price * (1 - discount / 100), или
price - (price * discount / 100)

Добавлено через 59 секунд
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
let discount = prompt('Какая скидка?')
let totalSale = Number
let total = Number
let max = Object
let min = Object
let average = Number
 
let arr = [
    {
        name: 'Milk',
        price: 3.25
    },
    {
        name: 'Coffee',
        price: 1.5
    },
    {
        name: 'Ice Cream',
        price: 7.85
    },
    {
        name: 'Tomatos',
        price: 4.14
    },
    {
        name: 'Onion',
        price: 2.25
    }
]
 
let arr_sale = []
 
const setup = (arg) => {
 
    // Сохранить самый дорогой товар в переменную`max`
    let maxPrice = 0
    // let indexMax = 0
    arr.forEach((item, index) => {
        if (item.price > maxPrice) {
            maxPrice = item.price
            // indexMax++
            max = arr[index]
        }
    })
    log(max)//Объект с самым дорогим товаром
 
    // Сохранить самый дешевый товар в переменную`min`
    let minPrice = arr[0].price //3.25
    let indexMin = 0
    arr.forEach((item, index, arr) => {
        if (index < arr.length - 2 && arr[index + 1].price < minPrice) {
            minPrice = item.price
            indexMin++
        }
    })
    min = arr[indexMin]
    log(min)// Объект с самым дешёвым товаром
 
    // Сохранить общую цену без скидок в переменную`total`
    total = 0
    arr.forEach((item) => {
        total += item.price
    })
    log(total)// Общая цена без скидок
 
    // Сохранить общую цену со скидкой в переменную`totalSale`
    let realDiscount = 0
    if (+discount > 0 && +discount <= 100) {
        realDiscount = Math.round(+discount)
    }
    // log(realDiscount)
    totalSale = 0
    arr.forEach((item) => {
        totalSale += item.price - (item.price * realDiscount / 100)
    })
    log(totalSale)// Общая цена со скидкой
 
    // Сохранить элементы из массива `arr` с обновленной ценой (цена со скидкой) в переменную `arr_sale`
    arr_sale = arr.map((item) => {
        return item = {
            name: item.name,
            price: item.price - (item.price * realDiscount / 100)
        }
    })
    log(arr_sale)// массив с обновлёнными ценами
 
    // Сохранить в переменной `average` среднюю цену всех продуктов без скидок
    average = (arr.reduce((sum, value) => sum + value.price, 0)) / arr.length
    log(average)// средняя цена всех продуктов
 
}
 
setup()
0
Эксперт JS
2454 / 1761 / 624
Регистрация: 11.07.2016
Сообщений: 4,051
01.04.2022, 09:47 5
Цитата Сообщение от NTHing Посмотреть сообщение
Какой код считает точнее при прочих равных?
При округлении до двух значащих после запятой - одинаково.
А так - неточные вычисления будут и в первом и во втором случае.
Javascript
1
2
3
4
const price = 235234,
      discount = 77;
console.log(price * (1 - discount / 100)); // 54103.81999999999
console.log(price - (price * discount / 100)); // 54103.82000000001
0
1115 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,859
01.04.2022, 21:16 6
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//ИСХОДНЫЕ ДАННЫЕ НЕ ТРОГАТЬ!*
let discount = prompt('Какая скидка?')
let totalSale = Number
let total = Number
let max = Object
let min = Object
let average = Number
 
let arr = [{
    name: 'Milk',
    price: 3.25
  },
  {
    name: 'Coffee',
    price: 1.5
  },
  {
    name: 'Ice Cream',
    price: 7.85
  },
  {
    name: 'Tomatos',
    price: 4.14
  },
  {
    name: 'Onion',
    price: 2.25
  }
]
 
let arr_sale = []
 
const setup = (arg) => {
  max = min = arr[0];
  total = totalSale = average = 0;
 
  for (let i = 0; i < arr.length; i++) {
    if (max.price < arr[i].price) {
      max = arr[i];
    }
    if (min.price > arr[i].price) {
      min = arr[i];
    }
    total += Number((arr[i].price).toFixed(2));
    arr_sale.push({
      name: arr[i].name,
      price: Number((arr[i].price * (1 - discount / 100)).toFixed(2))
    });
  }
 
  totalSale = Number((total * (1 - discount / 100)).toFixed(2));
  average = Number((total / arr.length).toFixed(2));
}
 
setup()
0
01.04.2022, 21:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2022, 21:16
Помогаю со студенческими работами здесь

написать программу демонстрирующую работу с объектами двух типов
SymbString символьная строка и DecString десятичная строка, для чего создать систему...

Реализовать программу, демонстрирующую работу с объектами двух типов: SymbString и DecString
Помогите пожалуйста решить задачу. программу, демонстрирующую работу с объектами двух типов:...

Реализовать программу, демонстрирующую работу с объектами двух типов: SymbString и DecString
Здравствуйте помогите сделать задание. Не знаю как все это сделать в main. Задание: Написать...

Задача с объектами
Помогите пожалуйста написать прогу объект 1: поле-строка; методы: верно ли, что в строке цифр...

Задача с объектами
объект 1: поле-строка; методы: верно ли, что в строке цифр больше, чем букв; вставить предпоследнюю...

Разработать программу которая демонстрирует работу структуры при работе со всеми прямоугольными объектами двор
Разработать программу которая демонстрирует работу структуры при работе со всеми прямоугольными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru