Question: The code is fully implemented but when running it there is problem. Please make changes to my code to make it match to the expected
The code is fully implemented but when running it there is problem.
Please make changes to my code to make it match to the expected output.
everything is provided.
Please make the move constructors work.
Thank you!
#ifndef CSCI335_HOMEWORK1_POINTS2_H_ #define CSCI335_HOMEWORK1_POINTS2_H_
#include
namespace teaching_project { // Place comments that provide a brief explanation of the class, // and its sample usage. template
// Zero-parameter constructor. // Set size to 0. Points2():size_{0}, sequence_{nullptr} { }
// Copy-constructor. Points2(const Points2 &rhs){ /* sequence_ = new std::array
// Copy-assignment. If you have already written // the copy-constructor and the move-constructor // you can just use: // { // Points2 copy = rhs; // std::swap(*this, copy); // return *this; // } Points2& operator=(const Points2 &rhs) { Points2 copy = rhs; std::swap(*this, copy); return *this; }
// Move-constructor. Points2(Points2 &&rhs){ }
// Move-assignment. // Just use std::swap() for all variables. Points2& operator=(Points2 &&rhs) { }
~Points2() { delete []sequence_; }
// End of big-five. // One parameter constructor. Points2(conststd::array
// @location: an index to a location in the sequence. // @returns the point at @location. // const version. // abort() if out-of-range. conststd::array
private: // Sequence of points. std::array
The following program is the main program to run the class on. // Do not change this file other than adding header files // if needed.
using namespace std; using namespace teaching_project;
// Place stand-alone function in unnamed namespace. namespace { void TestPart1() { Points2 a, b; // Two empty Points2 are created. cout << a.size() << " " << b.size() << endl; // yields 0 0. const array a_point2{{7, 10}}; Points2 d{a_point2}; // A Points2 containing (7, 10) should be created. cout << d; // Should just print (7, 10). cout << "Enter a sequence of points (integer)" << endl; a.ReadPoints2(); // User enters a set of points in the form: // 3 7 4 3 2 1 10 // 3 specifies number of points. Points are the pairs // (7, 4) (3, 2) and (1, 10). cout << "Output1: " << endl; cout << a; // Output should be what user entered. cout << "Enter a sequence of points (integer)" << endl; b.ReadPoints2(); // Enter another sequence. cout << "Output2: " << endl; cout << b; Points2 c{a}; // Calls copy constructor for c. cout << "After copy constructor1 c{a}: " << endl; cout << c; cout << a; a = b; // Should call the copy assignment operator for a. cout << "After assignment a = b" << endl; cout << a; Points2 e = move(c); // Move constructor for d. cout << "After e = move(c) " << endl; cout << e; cout << c; cout << "After a = move(e) " << endl; a = move(e); // Move assignment operator for a. cout << a; cout << e; }
void TestPart2() { Points2 a, b; cout << "Enter a sequence of points (double)" << endl; a.ReadPoints2(); // User provides input for Points2 a. cout << a; cout << "Enter a sequence of points (double)" << endl; b.ReadPoints2(); // User provides input for Points2 b. cout << b << endl; cout << "Result of a + b" << endl; cout << a + b << endl; Points2 d = a + b; cout << "Result of d = a + b" << endl; cout << d; cout << "Second element in a: " << endl; cout << a[1][0] << ", " << a[1][1] << endl; // Should print the 2nd element. }
} // namespace
int main(int argc, char **argv) { TestPart1(); TestPart2(); return 0; } And the text file of points I read in from standard input
3 7 4 3 5 19 71 4 100 101 2 3 40 50 11 33 3 2.1 20.3 11.11 12.45 13.1 14.2 2 1.1 100.0 20.1 30.2
The expected output should be
0 0 (7, 10) Enter a sequence of points (integer)
Output1: (7, 4) (3, 5) (19, 71) Enter a sequence of points (integer)
Output2: (100, 101) (2, 3) (40, 50) (11, 33) After copy constructor1 c{a}: (7, 4) (3, 5) (19, 71) (7, 4) (3, 5) (19, 71) After assignment a = b (100, 101) (2, 3) (40, 50) (11, 33) After e = move(c) (7, 4) (3, 5) (19, 71) () After a = move(e) (7, 4) (3, 5) (19, 71) (100, 101) (2, 3) (40, 50) (11, 33) Enter a sequence of points (double)
(2.1, 20.3) (11.11, 12.45) (13.1, 14.2) Enter a sequence of points (double)
(1.1, 100) (20.1, 30.2)
Result of a + b (3.2, 120.3) (31.21, 42.65) (13.1, 14.2)
Result of d = a + b (3.2, 120.3) (31.21, 42.65) (13.1, 14.2) Second element in a: 11.11, 12.45
And the point of this program
Create and test a class called Points2. This class describes a sequence of 2D points. For example (1, 3), (4, 5) is a sequence of two points, where each coordinate is an integer. (1.2, 3.4), (5.6, 10.1), (11.1, 12.0) is a sequence of three points where each coordinate is a double. A sequence can have any size. An empty sequence has size 0
And using the big five constructors (as already written) and the rest of the functions.
Thank you.
Please let me know the problems of my program!
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
