Есть такая небольшая программа для расчета ЗП за день.
Проблема в том, что она считает количество упакованных пачек по 18 и в общем за день и каждому, а должна считать общее за день по 18, а каждому отдельно по 9.
<!DOCTYPE html>
<html lang="uk">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Калькулятор заробітку</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 600px;
margin: 0 auto;
padding: 20px;
background-color: #f4f4f4;
}
label, input {
display: block;
margin: 10px 0;
}
button {
padding: 10px;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #45a049;
}
.result {
margin-top: 20px;
font-weight: bold;
}
</style>
</head>
<body>
<h2>Калькулятор заробітку</h2>
<label for="packages">Кількість запакованих пачок:</label>
<input type="number" id="packages" value="0">
<label for="strips">Кількість запакованих полос:</label>
<input type="number" id="strips" value="0">
<label for="mattresses">Кількість запакованих матрасів:</label>
<input type="number" id="mattresses" value="0">
<label for="hours">Кількість відпрацьованих годин:</label>
<input type="number" id="hours" value="0">
<label for="blocks">Кількість перевезених блоків:</label>
<input type="number" id="blocks" value="0">
<label for="bags">Кількість вакуумованих мішків:</label>
<input type="number" id="bags" value="0">
<label for="workers">Кількість працівників:</label>
<input type="number" id="workers" value="1">
<button onclick="calculateEarnings()">Порахувати заробіток</button>
<div class="result" id="totalResult"></div>
<div class="result" id="workerResult"></div>
<script>
function calculateEarnings() {
// Отримання даних
let packages = parseInt(document.getElementById('packages').value);
let strips = parseInt(document.getElementById('strips').value);
let mattresses = parseInt(document.getElementById('mattresses').value);
let hours = parseInt(document.getElementById('hours').value);
let blocks = parseInt(document.getElementById('blocks').value);
let bags = parseInt(document.getElementById('bags').value);
let workers = parseInt(document.getElementById('workers').value);
// Якщо всі значення дорівнюють 0, висвітлюємо помилку
if (packages === 0 && strips === 0 && mattresses === 0 && hours === 0 && blocks === 0 && bags === 0) {
document.getElementById('totalResult').innerText = "Помилка: Всі значення не можуть бути нулями!";
document.getElementById('workerResult').innerText = "";
return;
}
// Розрахунок загального заробітку
let totalEarnings = (packages * 18) + (strips * 0.5) + (mattresses * 10) + (hours * 60) + (blocks * 10) + (bags * 10);
// Виведення загальної суми
document.getElementById('totalResult').innerText = `Загальний заробіток за день: ${totalEarnings.toFixed(2)} грн`;
// Запит імен працівників
let workerNames = [];
for (let i = 0; i < workers; i++) {
let workerName = prompt(`Введіть ім'я працівника ${i + 1}:`);
workerNames.push(workerName);
}
// Розподіл роботи між працівниками
let workerTasks = [];
for (let i = 0; i < workers; i++) {
workerTasks.push({
name: workerNames[i],
packages: 0,
strips: 0,
mattresses: 0,
hours: 0,
blocks: 0,
bags: 0
});
}
distributeTasks(workerTasks, 'packages', packages);
distributeTasks(workerTasks, 'strips', strips);
distributeTasks(workerTasks, 'mattresses', mattresses);
distributeTasks(workerTasks, 'hours', hours);
distributeTasks(workerTasks, 'blocks', blocks);
distributeTasks(workerTasks, 'bags', bags);
// Виведення результатів розподілу
let resultText = "";
workerTasks.forEach(worker => {
resultText += `${worker.name}:\n`;
resultText += `Пачки: ${worker.packages}\n`;
resultText += `Полоси: ${worker.strips}\n`;
resultText += `Матраси: ${worker.mattresses}\n`;
resultText += `Години: ${worker.hours}\n`;
resultText += `Блоки: ${worker.blocks}\n`;
resultText += `Мішки: ${worker.bags}\n\n`;
});
document.getElementById('workerResult').innerText = resultText;
}
function distributeTasks(workerTasks, task, totalAmount) {
let workersCount = workerTasks.length;
let baseAmount = Math.floor(totalAmount / workersCount);
let remainder = totalAmount % workersCount;
// Рівномірний розподіл
workerTasks.forEach(worker => {
worker[task] = baseAmount;
});
// Додаємо залишок, якщо є
for (let i = 0; i < remainder; i++) {
workerTasks[i][task]++;
}
}
</script>
</body>
</html>