In: Computer Science
In C++ for netbeans.
Use a 1 dimensional array object to create a 2 dimensional table object. Then modify to create a triangular table.
Objective -> create an array of dynamic objects of RowAray inside Table i.e. an Aggregate. See Specs RowAray.h, Table.h Then create a triangular table, i.e. Triangle.
Fill each cell with random 2 digit integers. The example Table has 8 columns of RowAray objects each filled with 6 rows of random 2 digit numbers.
Then create a triangular table using the concept of the original table.
Complete the class implementations RowAray.cpp, Table,cpp, and Triangle.cpp use the driver program, obtain similar results.
https://github.com/ml1150258/2019_Fall_CSC-CIS_17c/tree/master/Hmwk/Review1_CSC17c_Object_Array
When complete for #rows=#cols, then create a version 2 that does a random number of cols per row with sorted column size output like the first assignment for the Triangular Matrix.
We will augment this assignment later and progress to templates.
If you have any doubts, please give me comment...
RowAray.h
/*
* File: RowAray.h
* Author: Dr. Mark E. Lehr
* Created on January 22nd, 2019, 8:36 PM
* Specification for the RowAray
*/
#ifndef ROWARAY_H
#define ROWARAY_H
#include <cstdlib>
class RowAray
{
private:
int size;
int *rowData;
public:
RowAray(int size);
~RowAray();
int getSize();
int getData(int i);
};
#endif
RowAray.cpp
#include "RowAray.h"
RowAray::RowAray(int size)
{
this->size = size;
rowData = new int[size];
for (int i = 0; i < size; i++)
{
rowData[i] = (rand() % 90) + 10;
}
}
RowAray::~RowAray()
{
delete rowData;
}
int RowAray::getSize()
{
return size;
}
int RowAray::getData(int i)
{
return rowData[i];
}
Table.h
/* * File: Table.h * Author: Dr. Mark E. Lehr * Created on January 22nd, 2019, 8:36 PM * Specification for the Table */
#ifndef TABLE_H
#define TABLE_H
#include "RowAray.h"
class Table
{
private:
int szRow;
int szCol;
RowAray **records;
public:
Table(int row, int col);
~Table();
int getSzRow();
int getSzCol();
int getData(int r, int c);
};
#endif
Table.cpp
/* * File: Triangle.h * Author: Dr. Mark E. Lehr * Created on January 22nd, 2019, 8:36 PM * Purpose: Specification of a Triangular array from a Row Array */
#include "Table.h"
Table::Table(int row, int col)
{
this->szRow = row;
this->szCol = col;
records = new RowAray *[row];
for (int i = 0; i < row; i++)
records[i] = new RowAray(col);
}
Table::~Table()
{
delete[] records;
}
int Table::getSzRow()
{
return szRow;
}
int Table::getSzCol()
{
return szCol;
}
int Table::getData(int r, int c)
{
return records[r]->getData(c);
}
Triangle.h
#ifndef TRIANGLE_H
#define TRIANGLE_H
#include "RowAray.h"
class Triangle
{
private:
int szRow;
RowAray **records;
public:
Triangle(int row);
~Triangle();
int getSzRow();
int getData(int r, int c);
};
#endif
Triangle.cpp
#include "Triangle.h"
Triangle::Triangle(int row)
{
this->szRow = row;
records = new RowAray *[row];
for (int i = 0; i < row; i++)
records[i] = new RowAray(row);
}
Triangle::~Triangle()
{
delete[] records;
}
int Triangle::getSzRow()
{
return szRow;
}
int Triangle::getData(int r, int c)
{
return records[r]->getData(c);
}
main.cpp
/*
* File: main.cpp
* Author: Dr. Mark E. Lehr
* Created on January 22nd, 2019, 8:36 PM
* Purpose: Dynamic Object Arrays
*/
//User Libraries
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
//User Libraries
#include "Table.h"
#include "Triangle.h"
//Global Constants
//Function Prototype
void prntRow(RowAray *, int);
void prntTab(Table *);
void prntTri(Triangle *);
//Execution Begins Here!
int main(int argc, char **argv)
{
//Initialize the random seed
srand(static_cast<unsigned int>(time(0)));
//Declare Variables
int rows = 6, cols = 8, perLine = cols / 2;
//Test out the RowAray
RowAray row(cols);
//Print the RowAray
cout << "The Row Array size = " << row.getSize()
<< " printed " << perLine << " per Line";
prntRow(&row, perLine);
//Test out the Table
Table tab(rows, cols);
//Print the Table
cout << "The table size is [row,col] = [" << rows << "," << cols << "]";
prntTab(&tab);
//Test out the Triangular Table
Triangle tri(rows);
//Print the Triangular Table
cout << "The triangular table size is [row,row] = [" << rows << "," << rows << "]";
prntTri(&tri);
//Exit Stage Right
return 0;
}
void prntRow(RowAray *a, int perLine)
{
cout << endl;
for (int i = 0; i < a->getSize(); i++)
{
cout << a->getData(i) << " ";
if (i % perLine == (perLine - 1))
cout << endl;
}
cout << endl;
}
void prntTab(Table *a)
{
cout << endl;
for (int row = 0; row < a->getSzRow(); row++)
{
for (int col = 0; col < a->getSzCol(); col++)
{
cout << a->getData(row, col) << " ";
}
cout << endl;
}
cout << endl;
}
void prntTri(Triangle *a)
{
cout << endl;
for (int row = 0; row < a->getSzRow(); row++)
{
for (int col = 0; col <= row; col++)
{
cout << a->getData(row, col) << " ";
}
cout << endl;
}
cout << endl;
}