From 4f559ab8c5011a140e94f39fdd702f6463704bad Mon Sep 17 00:00:00 2001 From: Dasha-MyOleg Date: Thu, 12 Jun 2025 13:54:43 +0300 Subject: [PATCH 1/2] Update JavaScript\7-either.js --- JavaScript/7-either.js | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/JavaScript/7-either.js b/JavaScript/7-either.js index fbde416..2636192 100644 --- a/JavaScript/7-either.js +++ b/JavaScript/7-either.js @@ -1,5 +1,13 @@ 'use strict'; +//була зроблена функція для обчислення податку з доходу + +//для зчитування введення з клавіатури +const readline = require('node:readline'); + +//податок (24%) +const taxRate = 0.24; + class Either { #left = null; #right = null; @@ -46,6 +54,7 @@ class Either { // Usage +/* const success = Either.right(42); const failure = Either.left(500); @@ -58,3 +67,41 @@ const result = failure.match( ); console.log({ result }); +*/ + + + +//функція для обчислення податку з доходу +function calculateTax(income) { + if (typeof income !== 'number' || income <= 0) { + // Якщо ні то помилка (left) + return Either.left('Invalid income amount'); + } + + //якщо немає помилки (right) + return Either.right(income * taxRate); +} + + +//зчитування введення користувача +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + + +//логіка взаємодії з користувачем +rl.question('Введіть ваш дохід: ', (input) => { + const income = Number(input); + + //виклик функції розрахунку податку + calculateTax(income) + //знаки після коми при успіху (right) + .map((tax) => tax.toFixed(2)) + .match( + (err) => console.log('Помилка:', err), // якщо помилка (left) + (tax) => console.log('Податок становить:', tax + ' грн') // якщо успіх (right) + ); + + rl.close(); +}); \ No newline at end of file From b263eb27d7829210482e28113715ec650beee729 Mon Sep 17 00:00:00 2001 From: Dasha-MyOleg Date: Thu, 12 Jun 2025 22:49:56 +0300 Subject: [PATCH 2/2] new update --- JavaScript/7-either.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/JavaScript/7-either.js b/JavaScript/7-either.js index 2636192..65bce8a 100644 --- a/JavaScript/7-either.js +++ b/JavaScript/7-either.js @@ -53,7 +53,6 @@ class Either { } // Usage - /* const success = Either.right(42); const failure = Either.left(500); @@ -73,13 +72,15 @@ console.log({ result }); //функція для обчислення податку з доходу function calculateTax(income) { - if (typeof income !== 'number' || income <= 0) { + if (isNaN(income) || income <= 0) { // Якщо ні то помилка (left) return Either.left('Invalid income amount'); } + const tax = income * taxRate; + //якщо немає помилки (right) - return Either.right(income * taxRate); + return Either.right({ tax, rate: taxRate }); } @@ -97,10 +98,17 @@ rl.question('Введіть ваш дохід: ', (input) => { //виклик функції розрахунку податку calculateTax(income) //знаки після коми при успіху (right) - .map((tax) => tax.toFixed(2)) + .map(({ tax, rate }) => ({ + tax: tax.toFixed(2), + rate: (rate * 100).toFixed(0) + '%' + })) + //обробка результату .match( - (err) => console.log('Помилка:', err), // якщо помилка (left) - (tax) => console.log('Податок становить:', tax + ' грн') // якщо успіх (right) + (err) => console.log('Помилка:', err), + ({ tax, rate }) => { + console.log('Податок становить:', tax, 'при ставці', rate); + console.log('[LOG] Розрахунок виконано успішно.'); + } ); rl.close();