C ++ Programming Coursework

lollomichal
CourseworkDescription.pdf

EN3085 Assessed Coursework 1

1. Create a class Complex to allow programmers the easy use of complex numbers in their programs. An object of that class should: [5]

a. Be able to store a complex number in the most efficient way. b. Make use of constructor and destructor functions if needed. The

constructor should take three arguments: a character indicating if the last two arguments should be interpreted as real and imaginary parts or magnitude and angle, and two real numbers defining the value of the complex number. The constructor should also initialise the members of the object appropriately, including for cases when it receives only some or no arguments.

c. Be able to return individual element of the complex number in both rectangular (real and imaginary) and polar form (magnitude and angle).

d. Allow modification of the stored complex number by enabling the modification of individual elements of the complex number (both in rectangular and polar form).

e. Include a function to print on the screen the complex number, either in rectangular or polar form.

2. Create a function GetComplexListFromFile, that: [2]

a. Reads all complex numbers recorded in a text file. Each data line in the text file always consist of one of the following, to define a complex number:

• a letter ‘p’ followed by a magnitude and an angle (in radians), all separated by a space.

• a letter ‘r’ followed by the real and imaginary parts, all separated by a space. b. Creates for each of them an object of type Complex. c. Stores each created Complex object in a vector to obtain a list of all complex number defined in the file. d. Returns the resulting vector to the function call location.

3. Create a function SaveComplexListToFile that saves a provided list of Complex objects into a text file, using the same text file format mentioned in question 2.a. [2]

4. Using the Complex class and the functions developed previously, write a main function which will in the order provided below: [2]

a. Stores in a vector ComplexList all complex number stored in the provided file "ComplexList.txt". b. Prints on the screen, in both rectangular and polar forms, all complex numbers stored in ComplexList. c. Keeps asking on the screen if the user wants to add a complex number to the list and if so asks for the

relevant information and stores the provided new complex number in the vector ComplexList. d. Saves all the object stored in ComplexList in the file "ComplexList.txt".

5. Expand the class Complex with the following overloaded member operators: binary operators "+", "-", "*", and "/" and a unary operator "-". [4]

The operators should return complex numbers only in rectangular form and provide the standard functionality for arithmetic operations on complex numbers. Using these operators, in the main function:

a. Calculate the sum of all complex number stored in the vector ComplexList, after the reading of the file "ComplexList.txt" and after the user has provided additional complex numbers.

b. Demonstrate the use of all operators using the following equation: A= - B*(C-D)/E A, B, C, D and E, being the 5 first complex number provided in the file "ComplexList.txt".

c. Print on the screen the complex number resulting from the equation above in both rectangular and polar form.

When relevant you should make use of all the “best practice” and concepts covered in the lecture (e.g. inline, const…).

r

Ɵ

a

b

Standard form: a + b.i

Im

Re

Polar form: r (cos Ө + i sin Ө)

Submission Procedure You should solve the problems independently from other students and submit only your own work. Submit your solution on “learning central” using the Coursework Answer Sheet provided by 18:00, Friday 27/03/2020 (week 9).

In section one of the Coursework Answer Sheet, explain briefly the structure of your class in terms of memory usage and “user friendliness”, how you tested it and any identified issues. Then, directly from Microsoft Visual C++, copy and paste all your code in the relevant section of the Coursework Answer Sheet. Add a screen shot of the window showing what is printed on the screen when running your program (for example using Microsoft Snipping Tool).

All developed code should be included in the 3 files provided: Complex.h, Complex.cpp and Main.cpp and these 3 completed files should also be uploaded on “learning central” together with the Coursework Answer Sheet to facilitate our testing of your program. Any incomplete submission will be considered late.

Marking scheme Source code. Maximum marks will be awarded for:

• A correctly functioning program. The program should operate according to the specification.

• An efficient program and elegant algorithms. Try to develop algorithms, which are efficient in terms of the amount of

data, which needs to be stored (e.g. minimum number of variables used), and the speed in which they operate.

• Appropriate use of classes and functions. Try to keep your function main() as short as possible.

• A user-friendly program. When your program runs, the messages displayed on the screen should be easy to

understand and succinct. The user should be in no doubt as to what they must do to use the program.

• A well commented program. The judicious use of commenting is essential if somebody else is to easily understand

your program. Start your programs with a short comment specifying the name of the program, your name, and what your

program is designed to do. Supply your functions with pre- and post-conditions.

• A well laid out program. Indent your program code. Indent your comments as well. Use blank lines to space out blocks

of code.

  • EN3085 Assessed Coursework 1
    • Submission Procedure
    • Marking scheme