From ae7af06af69eb5f49b9cd456382e65926b847abe Mon Sep 17 00:00:00 2001 From: Trevor Barnes Date: Tue, 22 Mar 2022 00:13:29 -0500 Subject: [PATCH] lab2 submission ready --- Lab2/lab2 | Bin 19336 -> 0 bytes Lab2/main.cpp | 53 +++++++++++++++++++++++++++++++++++--------------- Lab2/row.cpp | 23 ++++++++++++++-------- 3 files changed, 52 insertions(+), 24 deletions(-) delete mode 100755 Lab2/lab2 diff --git a/Lab2/lab2 b/Lab2/lab2 deleted file mode 100755 index 014852c7f7c1f7bf1816e4b3e0dde51b889cc843..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19336 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 P-?UjtT;)=5q2hl5;r@BP diff --git a/Lab2/main.cpp b/Lab2/main.cpp index 31b21ef..87c6dda 100644 --- a/Lab2/main.cpp +++ b/Lab2/main.cpp @@ -1,7 +1,11 @@ /** * @file main.cpp * @author Trevor Barnes (barnestr@msoe.edu) - * @brief + * @brief A main driver that provides some rudimentary tests for row.cpp + * Tests involving memory leaks were tested using valgrind via the command: + * `valgrind ./lab2` Test output was left in submission to signify modules + * that have successfully passed and provide further clarity of testing + * methods. * @version 1.0 * @date 2022-03-22 * @@ -16,8 +20,11 @@ using namespace std; int main() { // Test Setup int length; - cout << "Enter the desired length for the matrix constructor test:" << endl; + double testValue; + cout << "Enter the desired length for the row matrix:" << endl; cin >> length; + cout << "Enter a double value to test as row data element:" << endl; + cin >> testValue; cout << "Test - Constructor / Access Operator" << endl; // Test: Constructor @@ -25,49 +32,63 @@ int main() { // Test: Access Operator (non const) try{ + // All elements are accessed for(int i = 0; i < length; i++){ cout << row1[i] << " "; } cout << endl; - cout << row1[1] << endl; - //row1[1] = 12.18; - cout << row1[1] << endl; - cout << row1[length+1] << endl; // Might change - }catch(out_of_range){ + // First element shown as 0 + cout << row1[0] << endl; + // First element is assigned the test value + row1[0] = testValue; + // First element is now the test value + cout << row1[0] << endl; + // Throws OOB Exception + cout << row1[length+1] << endl; + }catch(const out_of_range e){ cout << "Out of Range Exception Successfully Caught" << endl; } - cout << "Test - Constructor/AccessOperator: PASS" << endl; + cout << "Test - Constructor / Access Operator: PASS" << endl; - cout << "Test - Copy Constructor/AccessOperator(const)" << endl; + cout << "Test - Copy Constructor / Access Operator (const)" << endl; // Test: Copy Constructor const Row row1Copy(row1); - cout << "before seg"; // Test: Access Operator (const) try{ for(int i = 0; i < length; i++){ cout << row1Copy[i] << " "; } - cout << row1Copy[1]; - cout << row1Copy[length+1]; // Might change - }catch(out_of_range){ + cout << endl; + // First element is the same as the original Row object's + cout << row1Copy[0] << endl; + // Throws OOB Exception + cout << row1Copy[length+1]; + }catch(const out_of_range e){ cout << "Out of Range Exception Successfully Caught" << endl; } cout << "Test - Copy Constructor / Access Operator (const): PASS" << endl; // Test: Assignment Operator - Row row2(length*2); + Row row2(length); + // Set new row object equal to another row object row2 = row1; - for(int i = 0; i < length*2; i++){ + // Show that the elements are identical to the original row object + for(int i = 0; i < length; i++){ cout << row2[i] << " "; } cout << endl; // Test: Clear + cout << "Test - Clear" << endl; row2.clear(); - for(int i = 0; i < length*2; i++){ + for(int i = 0; i < length; i++){ cout << row2[i] << " "; } cout << endl; + cout << "Test - Clear: PASS" << endl; + + // Tested for memory leaks using valgrind: + // Result: "All heap blocks were freed -- no leaks are possible" return 0; } diff --git a/Lab2/row.cpp b/Lab2/row.cpp index f3c5fd2..8042ca2 100644 --- a/Lab2/row.cpp +++ b/Lab2/row.cpp @@ -1,4 +1,15 @@ -#include +/** + * @file row.cpp + * @author Trevor Barnes (barnestr@msoe.edu) + * @brief Contains the main functionality for row matrices utilizing arrays of + * double values + * @version 1.0 + * @date 2022-03-22 + * + * @copyright Copyright (c) 2022 + * + */ +#include #include "row.h" using namespace std; @@ -18,21 +29,17 @@ Row::Row(const Row& from){ // New row matrix gets length from previous matrix this->length = from.length; // Create new array in heap with new length - this->row_data - new double[this->length]; + this->row_data = new double[this->length]; // Copy all row_data values over to new array for(int i = 0; i < this->length; i++) { - cout << "before seg fault" << endl; - cout << this->row_data[i] << endl; this->row_data[i] = from[i]; } - // finish } // destructor Row::~Row(){ - cout << "-Row Destructor-" << endl; // TODO: temp // Check for valid length then free the heap memory - if(this->length > 0 ) { + if(length > 0 ) { delete[] row_data; } } @@ -63,7 +70,7 @@ Row& Row::operator= (const Row& rhs){ // New row matrix gets length from previous matrix this->length = rhs.length; // Create new array in heap with new length - this->row_data - new double[this->length]; + this->row_data = new double[this->length]; // Copy all row_data values over to new array for(int i = 0; i < this->length; i ++) { this->row_data[i] = rhs.row_data[i];