Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions package.json
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you ran the command npm install prompt-sync on the root level. You don't need package.json on root level. You already have one inside the task-1 folder. You can remove package.json and package-lock.json from the root level.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"dependencies": {
"prompt-sync": "^4.2.0"
},
"type": "module"
}
19 changes: 19 additions & 0 deletions task-1/leap-year.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,22 @@ const prompt = promptSync();
// Step 1: prompt the user to enter a year
// Step 2: convert the user input to a number so we can perform calculations
// Step 3: Implement the logic


const year = Number(prompt('Enter to check the year: '));
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good that you converted the user input to a Number type. But it is a good practice to create readable variables with clear names so that future developers can understand the code more easily. Like, for example:

const userInput = prompt('Enter to check the year: ');
const year = Number(userInput);



if (isNaN(year) || year > 9999 || year < 1) {
console.log("Invalid year!");
} else if ((year % 400) === 0) {
console.log(`Yes, ${year} is a leap year`);
} else if ((year % 100) === 0) {
console.log(`No, ${year} is not a leap year`);
} else if ((year % 4) === 0) {
console.log(`Yes, ${year} is a leap year`);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice that you met all the required conditions. However, one improvement would be to follow the DRY principle. In programming, there is a principle called DRY (Don't Repeat Yourself). So, in this case, for example, you could create a variable called isLeapYear and reuse it wherever needed. Also, this way you could avoid repeating the same console statement, and the code becomes more readable for the future. Like, for example:

const isLeapYear = (year % 4 === 0) && (year % 100 !== 0 || year % 400 === 0);

if (isLeapYear) {
  console.log(`Yes, ${year} is a leap year`);
} else {
  console.log(`No, ${year} is not a leap year`);
}

}
else {
console.log(`No, ${year} is not a leap year`);
}


25 changes: 22 additions & 3 deletions task-2/login.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,29 @@ import { errorMessage, successMessage } from './app.js';
let incorrectAttempts = 0;

function onLogin(username, password) {
// Write your code here.
// Use the variables 'username' and 'password' to access the input values
// Use incorrectAttempts to track the number of failed attempts
if ((username === "admin" && password === "Hack1234") || (username === "user" && password === "7654321")) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The first thing you should check in your logic is that if incorrectAttempts is 4 or more, you need to show the correct message accordingly. In your current logic, even if the incorrect attempts exceed 3, if the user enters correct credentials, it will still show the success message.

successMessage("Logged in successfully");
} else {
incorrectAttempts++;

if (incorrectAttempts >= 4) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice that you check incorrectAttempts in the same session after it increases.

errorMessage("Login blocked: Too many incorrect attempts");
} else {
errorMessage("Incorrect credentials");
}
}
}

// Do not change the line below
export { onLogin };








// Write your code here.
// Use the variables 'username' and 'password' to access the input values
// Use incorrectAttempts to track the number of failed attempts
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to move these comments. Either you can remove them or you can keep them in the same place.

21 changes: 13 additions & 8 deletions task-3/converter.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,19 @@ const prompt = promptSync();
const EUR_USD_RATE = 1.1643;

// Menu display
conole.log("Hello and welcome to the currency converter. Please choose: ");
console.log("1: Convert EUR to USD");
console.log("2: Convert USD to EUR");
const menuSelection = prompt("Select your option [1 or 2]: ");
console.log("Hello and welcome to the currency converter. Please choose: ")
console.log("1: Convert EUR to USD")
console.log("2: Convert USD to EUR")
console.log("3: Display the current exchange rate")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are not supposed to remove the semicolons at the end of the lines.

const menuSelection = prompt("Select your option [1, 2 or 3]: ");

console.log("\n");

if (menuSelection === "1") {
// EUR to USD
const eurAmountInput = prompt("Enter amount in EUR: ");
const eurAmountNum = Number(eurAmountInput);
if (Number.isNaN(eurAmountNum) || eurAmountNum > 0) {
if (Number.isNaN(eurAmountNum) || eurAmountNum < 0) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on the error message, the logic should check if the inputted amount is a valid positive number:

eurAmountNum <= 0

console.log("Please enter a valid positive number for the amount.");
} else {
const usdAmount = eurAmountNum * EUR_USD_RATE;
Expand All @@ -29,9 +30,13 @@ if (menuSelection === "1") {
if (Number.isNaN(usdAmountNum) || usdAmountNum < 0) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on the error message, the logic should check if the inputted amount is a valid positive number:

usdAmountNum <= 0

console.log("Please enter a valid positive number for the amount.");
} else {
const eurAmount = usdAmountNum / eur_usd_rate;
const eurAmount = usdAmountNum / EUR_USD_RATE;
console.log(usdAmountNum.toFixed(2) + ' USD is equal to ' + usdAmountNum.toFixed(2) + ' EUR.');
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should use the correct variable.

eurAmount.toFixed(2)

}
} else {
console.log("Invalid selection. Please choose either 1 or 2.");
} else if (menuSelection === "3"){
//The current exchange rate
console.log ("The current exchange rate is 1 EUR = 1.1643 USD")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The output is correct. However, it is a good practice if you reuse the existing variable:

console.log(`The current exchange rate is 1 EUR = ${EUR_USD_RATE} USD.`);

}
else {
console.log("Invalid selection. Please choose either 1, 2 or 3.");
}
Loading