COMS1018 - Department of Computer Science
Transcription
COMS1018 - Department of Computer Science
School of Computer Science Lab Handout Introduction to Algorithms & Programming (COMS1018) 12 March, 2015 Lab Handout #2 Teaching Staff: • Lab Assistants: Ritesh Ajooda, email: ritesh.ajoodha@students.wits.ac.za, Mafora Lebogang, email: maforalebogang8@gmail.com, Andile Nxongo, email: andile.nxongo@students.wits.ac.za, Hlayisani Chauke, email: hlayisani.chauke@students.wits.ac.za, Tshepo Molefe, email: tshepomolefe2@ gmail.com Useful Terminal Commands Make sure you are comfortable working with terminal commands such as: ls cd rm mkdir If you are unfamiliar with using terminal then please watch the following YouTube videos as they provide provide a good introduction to using terminal: http://www.youtube.com/watch?v=2FiQSLdnBqA and http: //www.youtube.com/watch?v=_JWj6u8mI7k. You also need to know how to add arguments to commands and that includes redirects. Always consult the internet for help! Objective The aim of this lab session is to understand what a pseudocode/algorithm is and to develop the corresponding flowchart representation together with C++ source code. 1 Finding the minimum of two numbers In the class, you learned how to write an algorithm and draw the flowchart for finding and displaying the maximum of two numbers entered by a user. In this lab session, this algorithm will be modified to find the minimum of two numbers instead of the maximum. Please compile and test C++ code. Algorithm/Pseudocode Flowchart C++ Code START x 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: START INPUT x INPUT y IF (x <= y) THEN minimum = x ELSE minimum = y ENDIF PRINT minimum STOP y FALSE x <= y minimum = y TRUE minimum = x minimum STOP 1 of 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 // F i l e : FindMinimumOfTwoNumbers . cpp #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; i n t main ( void ) { double x ; double y ; double minimum ; c i n >> x ; c i n >> y ; if { ( x <= y ) minimum = x ; } else { minimum = y ; } c o u t << minimum c o u t << ” \n ” ; T return ( 0 ) ; } ; School of Computer Science 2 Lab Handout Finding the minimum of three numbers Using the above algorithm, develop a new algorithm for finding and displaying the minimum of three numbers entered by a user. To ease your task, pseudocode and flowchart is given below. Your task is to complete and successfully compile the corresponding C++ source code. Algorithm/Pseudocode Flowchart START C++ Code x y z 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: START INPUT x INPUT y INPUT z IF (x <= y) THEN minimum = x ELSE minimum = y ENDIF IF (z <= minimum) THEN minimum = z ENDIF PRINT minimum STOP FALSE TRUE x <= y minimum = y minimum = x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 // F i l e : FindMinimumOfThree . cpp #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; i n t main ( void ) { double x = 0 . 0 ; double y = 0 . 0 ; double z = 0 . 0 ; double minimum = 0 . 0 ; // ? // ? // ? c o u t << minimum ; c o u t << ” \n ” ; return ( 0 ) ; } z <= minimum FALSE TRUE minimum = z minimum STOP 3 Statistical application Use the pseudocode provided below to write a C++ program that computes and displays the mean, variance and standard deviation of four numbers entered by a user. Before you implement the program be sure to draw a flowchart of all processors: Hint: To compute the mean (mean), variance (var), and standard deviation (std) of four numbers a, b, c, d entered by a user, use the following three equations respectively. mean = (a + b + c + d)/4 (1) var = (mean − a)2 + (mean − b)2 + (mean − c)2 + (mean − d)2 /4 (2) std = √ var (3) NB: In order to use the square root function in C++ you must first include the #include <cmath> package below the #include <iostream> package in your program. The sqrt() function returns the square root value √ of a number. For example if we wanted to compute 8 we will write it as sqrt(8) in C++. 2 of 5 School of Computer Science Lab Handout Use the following pseudocode to develop your program: 1: START 2: PRINT "Enter the 1st number: " 3: INPUT a 4: PRINT "Enter the 2nd number: " 5: INPUT b 6: PRINT "Enter the 3rd number: " 7: INPUT c 8: PRINT "Enter the 4th number: " 9: INPUT d 10: mean = (a + b + c + d)/4 2 2 2 2 11: var = (mean − a) + (mean − b) + (mean − c) + (mean − d) /4 √ var 12: std = 13: PRINT "The mean is: " 14: PRINT mean 15: PRINT "The variance is: " 16: PRINT var 17: PRINT "The standard deviation is: " 18: PRINT std 19: STOP 4 Mathematical application START a b c d = b2 − 4ac d<0 FALSE a 6= 0 TRUE no solution no solution TRUE FALSE FALSE d=0 FALSE TRUE x = −b/ (2a) √ x1 = −b + d / (2a) one root: x √ x2 = −b − d / (2a) b 6= 0 TRUE x = −c/b two roots: x1 , x2 one root: x STOP Figure 1: Flowchart Write a C++ program based on the flowchart given to you in Figure 1. Your program must take in each coefficient individually and output the roots of the equation as described in the flowchart. Use the hint in section 3 to handle square roots and other mathematical operations. 3 of 5 School of Computer Science Lab Handout Run your program on the following input coefficients: • (x + 1)(x − 3) = 0 • x2 − x = 4 • x2 − 3x − 4 = 0 • x2 − 4 = 0 • 6x2 − 11x − 35 = 0 • x2 − 48 = 0 • x2 − 7x = 0 5 Computer Science application In Basic Computer Organisation (BCO) you learned how to compute the base ten value given any other base value. This can be done by using the following instruction: for any number dn dn−1 ...d2 d1 where dn to d1 are the digits of the number (from left to right) in base R, the base 10 representation is given by dn Rn−1 + dn−1 Rn−1 + ... + d2 R1 + d1 . (4) Use this formula to write a program that will take in a four digit number in any base and will compute its base 10 value. Your program should input the base value first then the four digit number digit by digit. The output of the program will be the value of the four digit number in base 10. 6 The Grading machine Write a C++ program that will take a numerical input (0-100) and will output the grading symbol scored in a mathematics class. If the user scored a 80% then the machine will notify the user that he had received an A+. Use Table 1 as a guide to match marks with the Wits grading system. Mark A++ A+ A B C D F Symbol 90-100 80-89 75-79 70-74 60-69 50-59 0-49 Table 1: The Wits Grading System 7 A Vending machine Write a C++ program that presents the user with a choice of your 5 favourite beverages (Apple Juice, Coke, Water, Sprite, ... , Whatever). Then allow the user to choose a beverage by entering a number 1-5. Output which beverage they chose. Change your the program so that if the user enters a choice other than 1-5 then it will output "Error-choice was not valid, here is your money back." 4 of 5 School of Computer Science 8 Lab Handout Laboratory self test Circle the correct answer in each question. Every question has only one correct answer. When you have completed you may leave the lab after showing your progress to the lab assistants. 1. What is the only function all C++ programs must contain? • start() • system() • main() • program() 2. What is the correct value to return to the operating system upon the successful completion of a program? • -100 • 1 • 0 • a value cannot be returned by a program 3. What punctuation is used to signal the beginning and end of code blocks? • { } • -> • BEGIN and END • ( ) 4. What punctuation ends most lines of C++ code? • . • ; • : • ’ 5. Which of the following is a correct comment? • */ Comments */ • ** Comment ** • /* Comment */ • ( Comment ) 6. Which of the following is not a correct variable type? • float • real • int • double 7. Which of the following is the correct operator to compare two variables? • := • = • ~= • == 5 of 5