Skip to content
This repository has been archived by the owner on Jan 14, 2024. It is now read-only.

glasgow class 6-siver omar-javascript-week2 #450

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
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
7 changes: 7 additions & 0 deletions extra/1-factorial.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,13 @@

function factorial(input) {
// TODO
if (input < 0)
return -1;
else if (input == 0)
return 1;
else {
return (input * factorial(input - 1));
Copy link

Choose a reason for hiding this comment

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

Issue: This works, but isn't implemented using a loop as requested in the description. This uses a recursive function, which is an advanced topic we haven't covered yet.

}
}

/* ======= TESTS - DO NOT MODIFY ===== */
Expand Down
8 changes: 4 additions & 4 deletions mandatory/1-fix-functions.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@

*/

function getMood() {
let isHappy = true;
function getMood(isHappy) {


if (isHappy) {
return "I am happy";
Expand All @@ -23,13 +23,13 @@ function getMood() {
function greaterThan10(num) {
let isBigEnough;
Copy link

Choose a reason for hiding this comment

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

Nitpick: What you've done is correct, but it leaves a pointless variable isBigEnough that is never used. One possibility could be to use the isBigEnough variable to store the condition output. e.g.

let isBigEnough = num > 10;

if (isBigEnough) {
...

Or alternatively you could have just deleted the isBigEnough variable.


if (isBigEnough) {
if (num > 10) {
return "num is greater than 10";
} else {
return "num is not big enough";
}
}

// npm test -- --testPathPattern 1-fix-function
/* ======= TESTS - DO NOT MODIFY ===== */

describe("getMood", () => {
Expand Down
56 changes: 50 additions & 6 deletions mandatory/2-function-creation.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,15 @@
1. the user should be 18 or older
2. the user must be logged in
*/
function isAcceptableUser(userAge, isLoggedIn) {}
// npm test -- --testPathPattern 2-function-creation
function isAcceptableUser(userAge, isLoggedIn) {
if( userAge >= 18 && isLoggedIn){
Copy link

Choose a reason for hiding this comment

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

Nitpick: While this is OK, it's slightly better to do isLoggedIn === true as this type checks isLoggedIn to make sure it's passed into the function as a boolean.

return true
}
else{
return false
}
}

/*
Complete the function to apply discount percent based on how much is totalPrice in user cart.
Expand All @@ -15,26 +23,56 @@ function isAcceptableUser(userAge, isLoggedIn) {}
is applieds and 142.5 should be returned)
*/

function applyDiscount(totalPrice) {}
function applyDiscount(totalPrice,discount) {
Copy link

Choose a reason for hiding this comment

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

Issue: There's no need to take discount as a parameter to this function. You should only define the inputs that are needed by the function or expected by the tests.

if (totalPrice >200) {
total= totalPrice-(totalPrice*0.1);
Copy link

Choose a reason for hiding this comment

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

Nitpick: You've created a new variable total, this is OK but you should always declare a new variable with let (or const if it's appropriate)

return total;
} else if (totalPrice < 200){
total=totalPrice-(totalPrice*0.05);
return total;
}
}

/*
Complete the function to print to the console the odd numbers between 1 and limit (use a while loop):
*/
function printOddNumbers(limit) {}
function printOddNumbers(limit) {
let count = 1;
while(count<=limit){
Copy link

Choose a reason for hiding this comment

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

Nitpick: The logic is correct, but the indentation seems incorrect here.

if(count %2 == 1){
console.log(count);
}
count++
}
}

/*
Complete the buyTwoGetTheCheapestFree function: if user buys two items, the cheapest item will be free!
The function should return the price to be paid once the discount is applied.
*/
function buyTwoGetTheCheapestFree(price1, price2) {}
function buyTwoGetTheCheapestFree(price1, price2) {
if (price1>price2) {
return price1;
} else {
return price2;
}
}

/*
Complete the function to determine if it is suitable for a person to register based on their age!
- if the person is 12 or younger it should return "You Are Too Young To Register"
- if the person is older than 12 and younger than 90 it should return "You Can Register"
- if the person is 90 or older it should return "You Don't Need To Register"
*/
function canRegister(age) {}
function canRegister(age) {
if (age <= 12) {
return "You Are Too Young To Register"
} else if(age > 12 && age <90){
return "You Can Register"
} else {
return "You Don't Need To Register"
}
}

/*
Complete the function so that it prints out to the console numbers in reverse order starting at
Expand All @@ -45,7 +83,13 @@ function canRegister(age) {}
)
*/

function countReverse(number) {}
function countReverse(number) {
while( number >= 1){
Copy link

Choose a reason for hiding this comment

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

Suggestion: create a new variable that you can loop over and decrement rather than using the input number. e.g.

let currentNumber = number;
while (currentNumber  >= minNum) {
  console.log(number);
  currentNumber--;
}

The reason for this is you still have access to the unmodified user input in case you need to use it in a future modification of the function.
Also you'll find in the future lessons that for certain types passed to a function modifying the input data could have an impact on other parts of the program (this isn't a problem for integers though so wouldn't be an issue here)


console.log(number);
number--;
}
}

/* ======= TESTS - DO NOT MODIFY ===== */

Expand Down