diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 653d6f5a0..06d225c66 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -1,13 +1,27 @@ // Predict and explain first... // =============> write your prediction here + +// The code will capitalize the first word of the str which gives "Str" // call the function capitalise with a string input // interpret the error message and figure out why an error is occurring -function capitalise(str) { - let str = `${str[0].toUpperCase()}${str.slice(1)}`; - return str; -} +// The error occurs in line 13 and it says "SyntaxError: Identifier 'str' has already been declared" +// The error is informing us that the string str has already been declared in line 12 so we can not declare it again. + +//function capitalise(str) { +// let str = `${str[0].toUpperCase()}${str.slice(1)}`; +// return str; +//} // =============> write your explanation here + +// The code is written to capitalize the first letter of str which is expected to give the result Str. + // =============> write your new code here + +function capitalise(str) { + str = `${str[0].toUpperCase()}${str.slice(1)}`; + return str; +} +console.log(capitalise("str")) \ No newline at end of file diff --git a/Sprint-2/1-key-errors/1.js b/Sprint-2/1-key-errors/1.js index f2d56151f..2be1daf55 100644 --- a/Sprint-2/1-key-errors/1.js +++ b/Sprint-2/1-key-errors/1.js @@ -2,19 +2,31 @@ // Why will an error occur when this program runs? // =============> write your prediction here +// This code is tend to be a code to convert decimal number in to %. I predict there will be an error because the call for the function has a bug. // Try playing computer with the example to work out what is going on +const decimalNumber = 0.5; + function convertToPercentage(decimalNumber) { - const decimalNumber = 0.5; + const percentage = `${decimalNumber * 100}%`; return percentage; } -console.log(decimalNumber); +console.log(convertToPercentage(decimalNumber)); // =============> write your explanation here +// A syntaxError has been observed because the decimalNumber is already declared. +// if we delete line 10 anther error happen this time about calling the function in which decimalNumber is not defined in the global scope. // Finally, correct the code to fix the problem // =============> write your new code here +function convertToPercentage(decimalNumber) { + const percentage = `${decimalNumber * 100}%`; + + return percentage; +} + +console.log(convertToPercentage("0.5")); \ No newline at end of file diff --git a/Sprint-2/1-key-errors/2.js b/Sprint-2/1-key-errors/2.js index aad57f7cf..75b776f84 100644 --- a/Sprint-2/1-key-errors/2.js +++ b/Sprint-2/1-key-errors/2.js @@ -4,17 +4,26 @@ // this function should square any number but instead we're going to get an error // =============> write your prediction of the error here +/* There is a problem in the function parameter. we can not use number in parameter. +even though line 12 by it self has no coding problem but the num is not declared before.*/ +/* function square(3) { return num * num; } +*/ // =============> write the error message here - +/* unexpected number // =============> explain this error message here +we can not use number in a parameter so 3 is not used as identifier */ // Finally, correct the code to fix the problem // =============> write your new code here +function square(num) { + return num * num; +} +console.log(square("3")) diff --git a/Sprint-2/2-mandatory-debug/0.js b/Sprint-2/2-mandatory-debug/0.js index b27511b41..01b167f42 100644 --- a/Sprint-2/2-mandatory-debug/0.js +++ b/Sprint-2/2-mandatory-debug/0.js @@ -1,14 +1,21 @@ // Predict and explain first... // =============> write your prediction here +/*the function doesn't return any thing so there will be an error. */ -function multiply(a, b) { +/*function multiply(a, b) { console.log(a * b); } -console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); +console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`);*/ // =============> write your explanation here +/* As predicted the function does not return any thing. But the first call gives 320. and the second undefine. */ // Finally, correct the code to fix the problem // =============> write your new code here +function multiply(a, b) { + return a * b; +} + +console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); \ No newline at end of file diff --git a/Sprint-2/2-mandatory-debug/1.js b/Sprint-2/2-mandatory-debug/1.js index 37cedfbcf..4a234a779 100644 --- a/Sprint-2/2-mandatory-debug/1.js +++ b/Sprint-2/2-mandatory-debug/1.js @@ -1,13 +1,20 @@ // Predict and explain first... // =============> write your prediction here +/* The code will give us the sum of 10 and 32 which will be " The sum of 10 and 32 is 42" */ -function sum(a, b) { +/*function sum(a, b) { return; a + b; } -console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); +console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);*/ // =============> write your explanation here +/* the call of the function gives undefine result. the reason for this is the semicolon after return which shouldn't be placed there. // Finally, correct the code to fix the problem -// =============> write your new code here +// =============> write your new code here */ +function sum(a, b) { + return a + b; +} + +console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); \ No newline at end of file diff --git a/Sprint-2/2-mandatory-debug/2.js b/Sprint-2/2-mandatory-debug/2.js index 57d3f5dc3..d16337c65 100644 --- a/Sprint-2/2-mandatory-debug/2.js +++ b/Sprint-2/2-mandatory-debug/2.js @@ -2,8 +2,12 @@ // Predict the output of the following code: // =============> Write your prediction here +/* I predict that the three call are giving +The last digit of 42 is 2 +The last digit of 105 is 5 +The last digit of 806 is 6 */ -const num = 103; +/*const num = 103; function getLastDigit() { return num.toString().slice(-1); @@ -12,13 +16,25 @@ function getLastDigit() { console.log(`The last digit of 42 is ${getLastDigit(42)}`); console.log(`The last digit of 105 is ${getLastDigit(105)}`); console.log(`The last digit of 806 is ${getLastDigit(806)}`); - + */ // Now run the code and compare the output to your prediction // =============> write the output here +/* The last digit of 42 is 3 + The last digit of 105 is 3 + The last digit of 806 is 3 */ // Explain why the output is the way it is // =============> write your explanation here +/* because the num is determined at fires and 103 is given to the num. as a result we see the same result.*/ // Finally, correct the code to fix the problem // =============> write your new code here +function getLastDigit(num) { + return num.toString().slice(-1); +} + +console.log(`The last digit of 42 is ${getLastDigit(42)}`); +console.log(`The last digit of 105 is ${getLastDigit(105)}`); +console.log(`The last digit of 806 is ${getLastDigit(806)}`); + // This program should tell the user the last digit of each number. // Explain why getLastDigit is not working properly - correct the problem diff --git a/Sprint-2/3-mandatory-implement/1-bmi.js b/Sprint-2/3-mandatory-implement/1-bmi.js index 17b1cbde1..d5f72862e 100644 --- a/Sprint-2/3-mandatory-implement/1-bmi.js +++ b/Sprint-2/3-mandatory-implement/1-bmi.js @@ -14,6 +14,10 @@ // Then when we call this function with the weight and height // It should return their Body Mass Index to 1 decimal place -function calculateBMI(weight, height) { +function calculateBMI(weight, height) { + const bmi= weight/ (height*height) + //return bmi.toFixed(1); // return the BMI of someone based off their weight and height -} \ No newline at end of file + return Numberbmi.toFixed(1); +} +console.log(calculateBMI(86,1.70)); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/2-cases.js b/Sprint-2/3-mandatory-implement/2-cases.js index 5b0ef77ad..3767c2a85 100644 --- a/Sprint-2/3-mandatory-implement/2-cases.js +++ b/Sprint-2/3-mandatory-implement/2-cases.js @@ -14,3 +14,9 @@ // You will need to come up with an appropriate name for the function // Use the MDN string documentation to help you find a solution // This might help https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase +function toUpperCase(text) { + eturn text.replace(/ /g, "_").toUpperCase(); +} + +console.log(toUpperCase("hello there")); +console.log(toUpperCase("lord_of_the_ring")); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/3-to-pounds.js b/Sprint-2/3-mandatory-implement/3-to-pounds.js index 6265a1a70..bc69519c2 100644 --- a/Sprint-2/3-mandatory-implement/3-to-pounds.js +++ b/Sprint-2/3-mandatory-implement/3-to-pounds.js @@ -4,3 +4,13 @@ // You will need to declare a function called toPounds with an appropriately named parameter. // You should call this function a number of times to check it works for different inputs +function toPounds(pennies) { + const pounds = (parseInt(pennies.replace("p", ""), 10)) / 100; + return pounds.toFixed(2); +} +// calling the function to make sure it works +console.log(toPounds("32391p")); +console.log(toPounds("3239p")); +console.log(toPounds("323p")); +console.log(toPounds("32p")); +console.log(toPounds("3p")); diff --git a/Sprint-2/4-mandatory-interpret/time-format.js b/Sprint-2/4-mandatory-interpret/time-format.js index 7c98eb0e8..c15aac252 100644 --- a/Sprint-2/4-mandatory-interpret/time-format.js +++ b/Sprint-2/4-mandatory-interpret/time-format.js @@ -10,6 +10,7 @@ function formatTimeDisplay(seconds) { return `${pad(totalHours)}:${pad(remainingMinutes)}:${pad(remainingSeconds)}`; } +console.log(formatTimeDisplay(61)); // You will need to play computer with this example - use the Python Visualiser https://pythontutor.com/visualize.html#mode=edit // to help you answer these questions @@ -18,17 +19,22 @@ function formatTimeDisplay(seconds) { // a) When formatTimeDisplay is called how many times will pad be called? // =============> write your answer here +/* pad will be called 3 times. one for totalHours, one for remainingMinutes and one for remainingSeconds.*/ // Call formatTimeDisplay with an input of 61, now answer the following: // b) What is the value assigned to num when pad is called for the first time? // =============> write your answer here +/* when I run the code the result is 00:01:01 there for the value assigned to num is "0". // c) What is the return value of pad is called for the first time? // =============> write your answer here +/* the return value is "00". this comes 0 changed to string and then padstart(2,0) changes it to "00" */ // d) What is the value assigned to num when pad is called for the last time in this program? Explain your answer // =============> write your answer here +/* The value assigned to num when the pad is called for the last time is 1. */ // e) What is the return value assigned to num when pad is called for the last time in this program? Explain your answer // =============> write your answer here +/* The return value is 1. The code 1.toString() changes the num 1 to string "1" then the code .padStart(2, "0"); changes "1" to "01" */ \ No newline at end of file diff --git a/Sprint-2/5-stretch-extend/format-time.js b/Sprint-2/5-stretch-extend/format-time.js index 32a32e66b..05a750dfe 100644 --- a/Sprint-2/5-stretch-extend/format-time.js +++ b/Sprint-2/5-stretch-extend/format-time.js @@ -4,12 +4,13 @@ function formatAs12HourClock(time) { const hours = Number(time.slice(0, 2)); - if (hours > 12) { - return `${hours - 12}:00 pm`; - } - return `${time} am`; + const minutes = time.slice(-2); + const ampm = hours >= 12 ? "pm" : "am"; + const hour = String(hours % 12 === 0 ? 12 : hours % 12).padStart(2, "0") + return `${hour}:${minutes} ${ampm}`; } + const currentOutput = formatAs12HourClock("08:00"); const targetOutput = "08:00 am"; console.assert( @@ -22,4 +23,17 @@ const targetOutput2 = "11:00 pm"; console.assert( currentOutput2 === targetOutput2, `current output: ${currentOutput2}, target output: ${targetOutput2}` + +); +const currentOutput3 = formatAs12HourClock("00:00"); +const targetOutput3 = "12:00 am"; +console.assert( + currentOutput3 === targetOutput3, + `current output: ${currentOutput2}, target output: ${targetOutput2}` +); +const currentOutput4 = formatAs12HourClock("12:00"); +const targetOutput4 = "12:00 pm"; +console.assert( + currentOutput4 === targetOutput4, + `current output: ${currentOutput2}, target output: ${targetOutput2}` );