Concept explainers
Reread the code in Display 10.9. Then, write a class TwoD that implements the two-dimensional dynamic array of doubles using ideas from this display in its constructors. You should have a private member of type pointer to double to point to the dynamic array, and two int (or unsigned int) values that are MaxRows and MaxColS.
You should supply a default constructor for which you are to choose a default maximum row and column sizes and a parameterized constructor that allows the programmer to set maximum row and column sizes.
Further, you should provide a void member function that allows setting a particular row and column entry and a member function that returns a particular row and column entry as a value of type double.
Remark: It is difficult or impossible (depending on the details) to overload ( ) so it works as you would like for two-dimensional arrays. So simply use accessor and mutator functions using ordinary function notation.
Overload the + operator as a friend function to add two two-dimensional arrays. This function should return the TwoD object whose ith row, jth column element is the sum of the ith row, jth column element of the left-hand operand TWOD object and the ith row, jth column element of the right-hand operand TwoD object.
Provide a copy constructor, an overloaded operator z, and a destructor.
Declare class member functions that do not change the data as const members.

Program Plan:
- Define class named as TwoD and declare the variables for rows and columns.
- Declare a variable of pointer to double to point to the dynamic array.
- Define the default constructor and parameterized constructor to initialise rows and columns.
- Define the copy constructor that copies the values of one object array to another object array.
- Define operator + function declared as friend that add two dimensional arrays and return the sum.
- Use the setValue () function to set the values in the matrices m1 and m2 of double type.
- Finally write the main function to test the class TwoD.
Program Description:The purpose of the program is to set the values of two matrices of double type and add them to print the third matrix using the class TwoD and its constructors.
Explanation of Solution
Program:
//header files #include <iostream> usingnamespacestd; //Create Class TwoD classTwoD { //Private Data members private: intMaxRows; intMaxCols; //Declare array double&Twoarr; //Access Specifier public: //Create Default Constructor TwoD() { //chooses default rows and columns MaxRows=10; MaxCols=10; Twoarr=newdouble*[MaxRows]; for(int it =0; it <MaxRows;++it) { Twoarr[it]=newdouble[MaxCols]; } } //Create parameterised Constructor for setting the rows and columns TwoD(int rows,int cols) { //chooses Default rows and columns MaxRows= rows; MaxCols= cols; Twoarr=newdouble*[MaxRows]; for(int it =0; it <MaxRows;++it) { Twoarr[it]=newdouble[MaxCols]; } } //included the copy constructor TwoD(constTwoD&matrix) { //rows and columns assigned to the constructor object MaxRows=matrix.MaxRows; MaxCols=matrix.MaxCols; Twoarr=newdouble*[MaxRows]; for(int it =0; it <MaxRows;++it) { Twoarr[it]=newdouble[MaxCols]; for(intjt=0;jt<MaxCols;++jt) { Twoarr[it][jt]=matrix.Twoarr[it][jt]; } } } //Destructor ~TwoD() { for(int it =0; it <MaxRows;++it) { delete[]Twoarr[it]; } deleteTwoarr; } //member function for setting the values voidsetValue(int row,int col,doubleval) { Twoarr[row][col]=val; } //Friend function which overloads the "+" Operator friendTwoDoperator+(TwoD&m1,TwoD&m2) { TwoD*m3 =newTwoD(m1.MaxRows, m1.MaxCols); for(int it =0; it < m3->MaxRows;++it) { for(intjt=0;jt< m3->MaxCols;++jt) { //Performs addition m3->Twoarr[it][jt]= m1.Twoarr[it][jt]+ m2.Twoarr[it][jt]; } } return*m3; } //Void function to print the values void print() { for(int it =0; it <MaxRows;++it) { for(intjt=0;jt<MaxCols;++jt) { cout<<Twoarr[it][jt]<<""; } cout<<endl; } } }; intmain() { //declare variables intmaxRows; intmaxColumns; //Getting inputs from the user cout<<"Enter row Dimensions of the array:"<<endl; cin>>maxRows; cout<<"Enter Column Dimensions of the array:"<<endl; cin>>maxColumns; cout<<"&********************************"**lt;<endl; cout<<"Echoing the two-dimensional Array"<<endl; cout<<"&********************************"**lt;<endl; //passing parameters to the class objects TwoDm1(maxRows,maxColumns); TwoDm2(maxRows,maxColumns); for(int it =0; it <maxRows;++it) { for(intjt=0;jt<maxColumns;++jt) { m1.setValue(it,jt,0.2*(it +jt)); m2.setValue(it,jt,0.3*(it -jt)); } } //printing the results cout<<"&***********"**lt;<endl; cout<<"Matrix 1 "<<endl; cout<<"&***********"**lt;<endl; m1.print(); cout<<"&***********"**lt;<endl; cout<<"Matrix 2"<<endl; cout<<"&***********"**lt;<endl; m2.print(); //performs the addition operation TwoD m3 = m1 + m2; cout<<"&***********"**lt;<endl; cout<<"Addition "<<endl; cout<<"&***********"**lt;<endl; m3.print(); return0; }
Explanation:
First, TwoD class is defined along with all the required variables and constructors. Then, from the main ()function, the instances of the class is called, the rows of the array and the column of the array are entered by the user.
The two dimensional array is echoed randomly. Two matrices of given order are generated. The sum of these two matrices are obtained and displayed on the output screen.
Output Screenshot:
Want to see more full solutions like this?
Chapter 10 Solutions
ABSOLUTE C++ -TEXT
Additional Engineering Textbook Solutions
Management Information Systems: Managing The Digital Firm (16th Edition)
Starting Out with Java: From Control Structures through Objects (7th Edition) (What's New in Computer Science)
Electric Circuits. (11th Edition)
Thinking Like an Engineer: An Active Learning Approach (4th Edition)
SURVEY OF OPERATING SYSTEMS
Computer Science: An Overview (13th Edition) (What's New in Computer Science)
- (Greedy Algorithms) Describe an efficient algorithm that, given a set {x1, x2, . . ., xn} of points on the real line, determines the smallest set of unit-length closed intervals that contains all of the given points. Argue that your algorithm is correct.arrow_forwardWhat does the value of the top variable indicate in this ArrayStack implementation? What will happen if we call pop on this stack? What value will be returned, and what changes will occur in the array and the top variable? 3. If we push the value "echo" onto the stack, where will it be stored in the array, and what will be the new value of top? 4. Explain why index 0 contains the string "alpha" even though top is currently 3. 5. What would the state of the stack look like (values in the array and value of top) after two consecutive pop 0 operations?arrow_forwardPlease solve and show all work. Suppose there are four routers between a source and a destination hosts. Ignoring fragmentation, an IP datagram sent from source to destination will travel over how many interfaces? How many forwarding tables will be indexed to move the datagram from the source to the destination?arrow_forward
- Please solve and show all work. When a large datagram is fragmented into multiple smaller datagrams, where are these smaller datagrams reassembled into a single large datagram?arrow_forwardPlease solve and show all steps. True or false? Consider congestion control in TCP. When the timer expires at the sender, the value of ssthresh is set to one-half of the last congestion window.arrow_forwardPlease solve and show all work. What are the purposes of the SNMP GetRequest and SetRequest messages?arrow_forward
- Please solve and show all steps. Three types of switching fabrics are discussed in our course. List and briefly describe each type. Which, if any, can send multiple packets across the fabric in parallel?arrow_forwardPlease solve and show steps. List the four broad classes of services that a transport protocol can provide. For each of the service classes, indicate if either UDP or TCP (or both) provides such a service.arrow_forwardPlease solve and show all work. What is the advantage of web caches, and how does it work?arrow_forward
- Please solve and show steps. Consider a DASH system for which there are N video versions (at N different rates and qualities) and N audio versions (at N different rates and qualities). Suppose we want to allow the player to choose at any time any of the N video versions and any of the N audio versions. If we create files so that the audio is mixed in with its matched-rate video and the server sends only one media stream at a given time, how many files will the server need to store (each with a different URL)? If the server instead sends the audio and video streams separately and has the client synchronize the streams, how many files will the server need to store?arrow_forwardPlease solve and show all work. Recall that TCP can be enhanced with SSL to provide process-to-process security services, including encryption. Does SSL operate at the transport layer or the application layer?arrow_forwardPlease solve and show all work. Compute the checksum of the words 1011 1001, 1001 1110, and 0111 1011. Show all work.arrow_forward
- C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage LearningProgramming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:CengageEBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENT
- C++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology PtrMicrosoft Visual C#Computer ScienceISBN:9781337102100Author:Joyce, Farrell.Publisher:Cengage Learning,



