MAT1503 ASSIGNMENT 2 2022
Question 1 (5) Write an overloaded function max that takes either two or three parameters of type double and returns the largest of them. Test your overloaded function in a program with the appropriate function calls and displays on the screen to demonstrate that the overloaded function works. Question 2 (5) Write a C++ program that includes a function to calculate the discount applicable on the price of an item. Your function should have three arguments: the price as a reference parameter to a double, the discount as a double value, and a bool to indicate if the discount is calculated as a percentage or a fixed amount. Call the parameter to indicate whether the discount is a fixed amount, or a percentage, fixed. When fixed is true, it will indicate that the discount is a fixed amount and when it is false, the discount is a percentage. Your function should calculate the discount and modify the price of the item accordingly. Your function should check that the discount is not negative and that the price does not drop to zero or below zero after applying the discount. Use the assert() function to ensure that the discount is not negative and that the price does not drop to zero or below zero once the discount is applied. Test you program with the following input, and submit the output for all the cases: 235.97 7.35 false 5430.55 120.00 true 856.00 -12.5 false 120.00 130.00 true MAT1503 ASSIGNMENT 2 2022 NB: Note that you are expected to use the assert macro in this question. Question 3 (10) Write a program to help new parents find a name for their baby. The file BabyN contains a list of the most popular names for boys and girls, ranked according to their popularity. The user should be able to choose whether to look for boys’ names or girls’ names and to specify which letter of the alphabet the names should begin with. E.g. I may want to look for girls’ names starting with an ‘E’. Your program should copy the names that satisfy the user’s criteria (girls’ names starting with an ‘E’ in my example) to another file and include the ranking allocated to the name. E.g. if BabyN contains the following data showing that James is the most popular boys’ name and Ellen the most popular girls’ name, with Micahel and Zaheers in the 10th place: 1 James Ellen 2 Peter Eleanor 3 Rodger Mary 4 John Elise 5 Mpho Anne 6 Molefe Ella 7 Zaheer Petunia 8 Charles Eugenie 9 Tabang Charlotte 10 Michael Nazeera The output file should look as follows, showing all the names starting with an ‘E’ and their rank: 1 Ellen 2 Eleanor 4 Elise 6 Ella 8 Eugenie NB: First plan your program on paper (using your computational thinking to do so). You have to submit your plan for your program as well as the actual program code, input and output. Planning your program can take the form of a flowchart, pseudocode, or notes to guide you in the development of the program. Question 4 (10) Write a program to remove unnecessary blanks from a text file. Your program should read the text file and copy it to another text file, but whenever more than one blank occurs consecutively, only one blank should be copied to the second file. The second file should be identical to the first file, except that all consecutive blanks have been replaced by a single blank. If the input file e.g. looked like this: What a beautiful day! I wish I was at the beach… The output file should look like this: What a beautiful day! I wish I was at the beach… NB: First plan your program on paper (using your computational thinking to do so). You have to submit your plan for your program as well as the actual program code, input and output files. Planning your program can take the form of a flowchart, pseudocode, or notes to guide you in the development of the program. Question 5 (5) A palindrome is a word spelled the same way backwards and forwards. For example, Anna, radar, madam and racecar are all palindromes. Certain words can be turned into palindromes when the first letter is removed and added at the back, e.g. ‘potato’ will read the same backwards if we remove the ‘p’ and add it at the back, i.e. ‘otatop’ read backwards will still say ‘potato’. Similarly, ‘banana’ when you remove the ‘b’ and add it at the back so that it becomes ‘ananab’ will still say ‘banana’ if you read it backwards. Write a program that reads a word into a C-string (a character array). The program should then determine whether the word would be a palindrome if we remove the first character and add it at the back of the word. Use only C-string functions and C-strings. Assume that we will not work with words longer than 20 characters. Hint: You may consider using the C-string function strrev() but it is not compulsory. Remember to plan your program! Question 6 (5) Write a program that initialises a vector with the following string values: “what” “book” “is” “that” “you” “are” “reading”. Display the contents of the vector on the screen to the user as a question and read in the name of the book the user is reading (you can decide what it will be). Have the program add the name of the book to the vector, word by word. For example, if I am reading “How to learn C++”, the program should add the words, “How” “to” “learn” “C++”, one by one to the vector. Display the new vector. Remember to plan your program! Question 7 (25) (a) What is a pointer? (b) What is a dereferencing operator? (c) What is the difference between assignment statements p1 = p2; and *p1 = *p2; (d) What is a dangling pointer? (e) What is a dynamic variable? (f) What is the purpose of the new operator? (g) What is the purpose of the delete operator? (h) What is the freestore (also called the heap)? (i) What is the difference between dynamic variables and automatic variables? (j) What is a dynamic array? (k) What is the advantage of using dynamic arrays? (l) What is the relationship between pointers and arrays? (m) Explain what is the difference between int* p1, p2; and typedef int* IntPtr; IntPtr p1, p2; (n) For each of the following, write a single C++ statement that performs the identified task. (7) (i) Declare two variables fPtr1 and fPtr2 to be pointers to objects of type double. (ii) Create a dynamic variable to which fPtr1 points. (iii) If the pointer fPtr2 is undefined (i.e. it does not point to any variable), let it point to the same variable that fPtr1 points to. (iv) Print the address of the object pointed to by fPtr1. (v) Print the value of the object pointed to by fPtr2. (vi) Release the memory occupied by the dynamic variable to which fPtr1 points. (vii) Assign null values to the pointers fPtr1 and fPtr2
Written for
- Institution
- MAT1503
- Course
- MAT1503
Document information
- Uploaded on
- June 20, 2022
- Number of pages
- 5
- Written in
- 2021/2022
- Type
- Exam (elaborations)
- Contains
- Questions & answers
Subjects
- mat1503 assignment 2 2022
-
question 1 5 write an overloaded function max that takes either two or three parameters of type double and returns the largest of them test your overloaded function in a p