logo CodeStepByStep logo

reshape

Language/Type: C++ Grid collections
Related Links:
Author: Eric Roberts (on 2016/06/16)

Write a function named reshape that accepts three parameters: A reference to a Grid of integers, and two integers for a row and column, and resizes the grid while retaining its data in a particular format. The resize method in the Grid class resets the dimensions of the grid but also initializes every element of the grid to its default value. Your function should resize the grid but fill in the data from the original grid by copying elements in the standard row-major order (left-to-right/top-to-bottom). For example, if a variable myGrid initially contains the following values:

       col 0   1   2   3
row  0  {{ 1,  2,  3,  4},
     1   { 5,  6,  7,  8},
     2   { 9, 10, 11, 12}}

Then calling the function reshape(myGrid, 4, 3); should change the dimensions and contents of myGrid as follows:

       col 0   1   2
row  0  {{ 1,  2,  3},
     1   { 4,  5,  6},
     2   { 7,  8,  9},
     3   {10, 11, 12}}

If the new grid does not include enough space for all of the original values, the values at the bottom of the grid are simply dropped. For example, if you call reshape(myGrid, 2, 5); there is no room for the last two elements, so the new grid will look like this:

       col 0   1   2   3   4
row  0  {{ 1,  2,  3,  4,  5},
     1   { 6,  7,  8,  9, 10}}

Conversely, if there are not enough elements in the original grid to fill the available space, the entries at the end should simply retain their default values.

Function: Write a C++ function as described, not a complete program.

You must log in before you can solve this problem.

Log In

Need help?

Stuck on an exercise? Contact your TA or instructor.

If something seems wrong with our site, please

Is there a problem? Contact us.