diff --git a/Assignments/MP2_CalebFontenot_clion/2DArrayOperations.cpp b/Assignments/MP2_CalebFontenot_clion/2DArrayOperations.cpp new file mode 100644 index 0000000..25cae01 --- /dev/null +++ b/Assignments/MP2_CalebFontenot_clion/2DArrayOperations.cpp @@ -0,0 +1,142 @@ +// +// Created by caleb on 3/6/24. +// +#import +#import +#include +#include + +class OutOfBoundsException: public std::exception { + virtual const char* what() const throw() + { + return "Method attempted to call a vector location that was larger than the vector itself."; + } +} OutOfBoundsException; + +int getTotal(std::vector arr) { + int sum = 0; + for (int i = 0; i < arr.size(); ++i) { + sum += arr[i]; + } + return sum; +} + +int getTotal(std::vector> arr) { + int sum = 0; + for (int i = 0; i < arr.size(); ++i) { + sum += getTotal(arr[i]); + } + return sum; +} + +int getAverage(std::vector arr) { + return getTotal(arr) / arr.size(); // NOLINT(*-narrowing-conversions) +} + +int getAverage(std::vector> arr) { + return getTotal(arr) / arr.size(); +} + +int getRowTotal(std::vector> arr, int desiredRow) { + // validate + if (desiredRow > arr[desiredRow].size()) { + throw OutOfBoundsException; + } + int sum = 0; + for (int i = 0; i < arr[desiredRow].size(); ++i) { + sum += arr[desiredRow][i]; + } + return sum; +} + +int getColumnTotal(std::vector> arr, int desiredColumn) { + // validate + if (desiredColumn > arr.size()) { + throw OutOfBoundsException; + } + int sum = 0; + for (int i = 0; i < arr.size(); ++i) { + sum += arr[i][desiredColumn]; + } + return sum; +} + +int getHighestInRow(std::vector> arr, int desiredRow) { + // validate + if (desiredRow > arr[desiredRow].size()) { + throw OutOfBoundsException; + } + int highest = INT_MIN; + for (int i = 0; i < arr[desiredRow].size(); ++i) { + if (arr[desiredRow][i] > highest) { + highest = arr[desiredRow][i]; + } + } + return highest; +} + +int getLowestInRow(std::vector> arr, int desiredRow) { + // validate + if (desiredRow > arr[desiredRow].size()) { + throw OutOfBoundsException; + } + int lowest = INT_MAX; + for (int i = 0; i < arr[desiredRow].size(); ++i) { + if (arr[desiredRow][i] < lowest) { + lowest = arr[desiredRow][i]; + } + } + return lowest; +} + +int getHighestInColumn(std::vector> arr, int desiredColumn) { + // validate + if (desiredColumn > arr.size()) { + throw OutOfBoundsException; + } + int highest = INT_MIN; + for (int i = 0; i < arr.size(); ++i) { + if (arr[i][desiredColumn] > highest) { + highest = arr[i][desiredColumn]; + } + } + return highest; +} + +int getLowestInColumn(std::vector> arr, int desiredColumn) { + // validate + if (desiredColumn > arr.size()) { + throw OutOfBoundsException; + } + int lowest = INT_MAX; + for (int i = 0; i < arr.size(); ++i) { + if (arr[i][desiredColumn] < lowest) { + lowest = arr[i][desiredColumn]; + } + } + return lowest; +} + +std::string printVector(std::vector arr) { + std::string output = "{"; + for (int i = 0; i < arr.size(); ++i) { + output.append(std::to_string(arr[i])); + if ((arr.size() - 1) > i) { + output.append(", "); + } + } + output.append("}"); + return output; +} + +std::string printVector(std::vector> arr) { + std::string output = "{\n"; + for (int i = 0; i < arr.size(); ++i) { + output.append(printVector(arr[i])); + if ((arr.size() - 1) > i) { + output.append(",\n"); + } + } + output.append("\n}"); + return output; +} \ No newline at end of file diff --git a/Assignments/MP2_CalebFontenot_clion/2DArrayOperations.h b/Assignments/MP2_CalebFontenot_clion/2DArrayOperations.h new file mode 100644 index 0000000..1a417bc --- /dev/null +++ b/Assignments/MP2_CalebFontenot_clion/2DArrayOperations.h @@ -0,0 +1,29 @@ +// +// Created by caleb on 3/6/24. +// + +#ifndef MP2_CALEBFONTENOT_CLION_2DARRAYOPERATIONS_H +#define MP2_CALEBFONTENOT_CLION_2DARRAYOPERATIONS_H + +#include +#include + +int getTotal(std::vector arr); +int getTotal(std::vector> arr); + +int getAverage(std::vector arr); +int getAverage(std::vector> arr); + +int getRowTotal(std::vector> arr, int desiredRow); +int getColumnTotal(std::vector> arr, int desiredColumn); + +int getHighestInRow(std::vector> arr, int desiredRow); +int getLowestInRow(std::vector> arr, int desiredRow); + +int getHighestInColumn(std::vector> arr, int desiredColumn); +int getLowestInColumn(std::vector> arr, int desiredColumn); + +std::string printVector(std::vector arr); +std::string printVector(std::vector> arr); + +#endif //MP2_CALEBFONTENOT_CLION_2DARRAYOPERATIONS_H diff --git a/Assignments/MP2_CalebFontenot_clion/CMakeLists.txt b/Assignments/MP2_CalebFontenot_clion/CMakeLists.txt index f0dacda..dbd21c6 100644 --- a/Assignments/MP2_CalebFontenot_clion/CMakeLists.txt +++ b/Assignments/MP2_CalebFontenot_clion/CMakeLists.txt @@ -4,4 +4,6 @@ project(MP2_CalebFontenot_clion) set(CMAKE_CXX_STANDARD 23) add_executable(MP2_CalebFontenot_clion main.cpp - rockPaperScissors.cpp) + rockPaperScissors.cpp + 2DArrayOperations.cpp + 2DArrayOperations.h) diff --git a/Assignments/MP2_CalebFontenot_clion/build.sh b/Assignments/MP2_CalebFontenot_clion/build.sh new file mode 100755 index 0000000..d7306a8 --- /dev/null +++ b/Assignments/MP2_CalebFontenot_clion/build.sh @@ -0,0 +1,2 @@ +#!/bin/bash +cmake --build /home/caleb/ASDV-Cpp/Assignments/MP2_CalebFontenot_clion/cmake-build-debug --target all -j diff --git a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-62f2326d2e99006d14ca.json b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-fb3b9160ce314057a50e.json similarity index 92% rename from Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-62f2326d2e99006d14ca.json rename to Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-fb3b9160ce314057a50e.json index 824068b..55169d9 100644 --- a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-62f2326d2e99006d14ca.json +++ b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-fb3b9160ce314057a50e.json @@ -39,7 +39,7 @@ { "directoryIndex" : 0, "id" : "MP2_CalebFontenot_clion::@6890427a1f51a3e7e1df", - "jsonFile" : "target-MP2_CalebFontenot_clion-Debug-09c3b71a7da4287bde03.json", + "jsonFile" : "target-MP2_CalebFontenot_clion-Debug-d3c01b322ca9d00e6fc5.json", "name" : "MP2_CalebFontenot_clion", "projectIndex" : 0 } diff --git a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/index-2024-03-06T05-52-13-0057.json b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/index-2024-03-07T01-56-26-0473.json similarity index 93% rename from Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/index-2024-03-06T05-52-13-0057.json rename to Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/index-2024-03-07T01-56-26-0473.json index f6752a9..6285a56 100644 --- a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/index-2024-03-06T05-52-13-0057.json +++ b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/index-2024-03-07T01-56-26-0473.json @@ -26,7 +26,7 @@ "objects" : [ { - "jsonFile" : "codemodel-v2-62f2326d2e99006d14ca.json", + "jsonFile" : "codemodel-v2-fb3b9160ce314057a50e.json", "kind" : "codemodel", "version" : { @@ -86,7 +86,7 @@ }, "codemodel-v2" : { - "jsonFile" : "codemodel-v2-62f2326d2e99006d14ca.json", + "jsonFile" : "codemodel-v2-fb3b9160ce314057a50e.json", "kind" : "codemodel", "version" : { diff --git a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/target-MP2_CalebFontenot_clion-Debug-09c3b71a7da4287bde03.json b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/target-MP2_CalebFontenot_clion-Debug-d3c01b322ca9d00e6fc5.json similarity index 82% rename from Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/target-MP2_CalebFontenot_clion-Debug-09c3b71a7da4287bde03.json rename to Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/target-MP2_CalebFontenot_clion-Debug-d3c01b322ca9d00e6fc5.json index c414af8..4b83536 100644 --- a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/target-MP2_CalebFontenot_clion-Debug-09c3b71a7da4287bde03.json +++ b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.cmake/api/v1/reply/target-MP2_CalebFontenot_clion-Debug-d3c01b322ca9d00e6fc5.json @@ -50,7 +50,8 @@ "sourceIndexes" : [ 0, - 1 + 1, + 2 ] } ], @@ -84,7 +85,15 @@ "sourceIndexes" : [ 0, - 1 + 1, + 2 + ] + }, + { + "name" : "Header Files", + "sourceIndexes" : + [ + 3 ] } ], @@ -101,6 +110,17 @@ "compileGroupIndex" : 0, "path" : "rockPaperScissors.cpp", "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "2DArrayOperations.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "2DArrayOperations.h", + "sourceGroupIndex" : 1 } ], "type" : "EXECUTABLE" diff --git a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.ninja_deps b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.ninja_deps index ae33bf4..af76044 100644 Binary files a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.ninja_deps and b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.ninja_deps differ diff --git a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.ninja_log b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.ninja_log index c79c366..8da3fa4 100644 --- a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.ninja_log +++ b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/.ninja_log @@ -1,18 +1,35 @@ # ninja log v5 -0 363 1709704257681942810 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c -0 25 1709704333049275905 build.ninja 4f9c96c928b44f5a -373 427 1709703559957882338 MP2_CalebFontenot_clion 32f5091ba2f7c719 +0 353 1709774862988641657 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c +0 25 1709776586463940833 build.ninja 4f9c96c928b44f5a 1 377 1709704341778548085 CMakeFiles/MP2_CalebFontenot_clion.dir/rockPaperScissors.cpp.o 3c611e61c65d5f2f -378 426 1709704341826549583 MP2_CalebFontenot_clion b1e68aaee7799e43 -1 353 1709704428914284883 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c -353 406 1709704428966286526 MP2_CalebFontenot_clion b1e68aaee7799e43 -0 367 1709704460530286122 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c -367 423 1709704460584287836 MP2_CalebFontenot_clion b1e68aaee7799e43 -0 385 1709704576044976334 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c -385 432 1709704576089977781 MP2_CalebFontenot_clion b1e68aaee7799e43 -1 376 1709704712826400106 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c -376 431 1709704712881401895 MP2_CalebFontenot_clion b1e68aaee7799e43 -1 371 1709704731305001505 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c -372 430 1709704731362003361 MP2_CalebFontenot_clion b1e68aaee7799e43 -1 398 1709704841528604451 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c -398 452 1709704841580606157 MP2_CalebFontenot_clion b1e68aaee7799e43 +1 385 1709776397897671852 CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o 8c11d8cca87b33c8 +385 436 1709776397947672742 MP2_CalebFontenot_clion 2529c2e4cc438c09 +1 486 1709776909610255954 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c +486 540 1709776909662256789 MP2_CalebFontenot_clion 2529c2e4cc438c09 +1 391 1709777002952746019 CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o 8c11d8cca87b33c8 +392 444 1709777003003746829 MP2_CalebFontenot_clion 2529c2e4cc438c09 +1 434 1709777403803008881 CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o 8c11d8cca87b33c8 +1 497 1709777403866009853 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c +497 547 1709777403915010609 MP2_CalebFontenot_clion 2529c2e4cc438c09 +1 462 1709778672519150590 CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o 8c11d8cca87b33c8 +1 487 1709778672544151092 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c +487 565 1709778672621152637 MP2_CalebFontenot_clion 2529c2e4cc438c09 +0 466 1709778868815008595 CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o 8c11d8cca87b33c8 +466 519 1709778868866009578 MP2_CalebFontenot_clion 2529c2e4cc438c09 +0 443 1709778918707966837 CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o 8c11d8cca87b33c8 +443 499 1709778918762967889 MP2_CalebFontenot_clion 2529c2e4cc438c09 +1 444 1709778995379425134 CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o 8c11d8cca87b33c8 +444 496 1709778995430426099 MP2_CalebFontenot_clion 2529c2e4cc438c09 +0 479 1709779063921715938 CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o 8c11d8cca87b33c8 +0 488 1709779063930716107 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c +488 543 1709779063983717101 MP2_CalebFontenot_clion 2529c2e4cc438c09 +1 461 1709779158015470987 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c +461 515 1709779158068471971 MP2_CalebFontenot_clion 2529c2e4cc438c09 +0 449 1709779333918709617 CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o 8c11d8cca87b33c8 +449 503 1709779333971710586 MP2_CalebFontenot_clion 2529c2e4cc438c09 +1 477 1709779373170426152 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c +477 529 1709779373221427082 MP2_CalebFontenot_clion 2529c2e4cc438c09 +1 494 1709779531940306563 CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o 8cba3aec4cecc88c +494 557 1709779532001307664 MP2_CalebFontenot_clion 2529c2e4cc438c09 +0 463 1709780164528184443 CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o 8c11d8cca87b33c8 +463 518 1709780164582185648 MP2_CalebFontenot_clion 2529c2e4cc438c09 diff --git a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o new file mode 100644 index 0000000..bb3b275 Binary files /dev/null and b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o differ diff --git a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o index 0e39e09..9c0e1bd 100644 Binary files a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o and b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o differ diff --git a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/MP2_CalebFontenot_clion b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/MP2_CalebFontenot_clion index e740108..41c16bd 100755 Binary files a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/MP2_CalebFontenot_clion and b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/MP2_CalebFontenot_clion differ diff --git a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/build.ninja b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/build.ninja index 42b78ad..8dfc0dd 100644 --- a/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/build.ninja +++ b/Assignments/MP2_CalebFontenot_clion/cmake-build-debug/build.ninja @@ -61,6 +61,12 @@ build CMakeFiles/MP2_CalebFontenot_clion.dir/rockPaperScissors.cpp.o: CXX_COMPIL OBJECT_DIR = CMakeFiles/MP2_CalebFontenot_clion.dir OBJECT_FILE_DIR = CMakeFiles/MP2_CalebFontenot_clion.dir +build CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o: CXX_COMPILER__MP2_CalebFontenot_clion_unscanned_Debug /home/caleb/ASDV-Cpp/Assignments/MP2_CalebFontenot_clion/2DArrayOperations.cpp || cmake_object_order_depends_target_MP2_CalebFontenot_clion + DEP_FILE = CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o.d + FLAGS = -lncurses -Wno-write-strings -g -std=gnu++23 -fdiagnostics-color=always + OBJECT_DIR = CMakeFiles/MP2_CalebFontenot_clion.dir + OBJECT_FILE_DIR = CMakeFiles/MP2_CalebFontenot_clion.dir + # ============================================================================= # Link build statements for EXECUTABLE target MP2_CalebFontenot_clion @@ -69,7 +75,7 @@ build CMakeFiles/MP2_CalebFontenot_clion.dir/rockPaperScissors.cpp.o: CXX_COMPIL ############################################# # Link the executable MP2_CalebFontenot_clion -build MP2_CalebFontenot_clion: CXX_EXECUTABLE_LINKER__MP2_CalebFontenot_clion_Debug CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o CMakeFiles/MP2_CalebFontenot_clion.dir/rockPaperScissors.cpp.o +build MP2_CalebFontenot_clion: CXX_EXECUTABLE_LINKER__MP2_CalebFontenot_clion_Debug CMakeFiles/MP2_CalebFontenot_clion.dir/main.cpp.o CMakeFiles/MP2_CalebFontenot_clion.dir/rockPaperScissors.cpp.o CMakeFiles/MP2_CalebFontenot_clion.dir/2DArrayOperations.cpp.o FLAGS = -lncurses -Wno-write-strings -g LINK_FLAGS = -rdynamic OBJECT_DIR = CMakeFiles/MP2_CalebFontenot_clion.dir diff --git a/Assignments/MP2_CalebFontenot_clion/main.cpp b/Assignments/MP2_CalebFontenot_clion/main.cpp index bb4b50b..ff5ffe7 100644 --- a/Assignments/MP2_CalebFontenot_clion/main.cpp +++ b/Assignments/MP2_CalebFontenot_clion/main.cpp @@ -12,12 +12,22 @@ #include #include +#include using namespace std; #include "rockPaperScissors.h" #include "main.h" +#include "2DArrayOperations.h" int main(){ + + std::vector> vector = { + {1, 2, 3, 4}, + {5, 6, 7, 8}, + {9, 10, 11, 12}, + {13, 14, 15, 16} + }; + int ch; static int selection = 0; static int * selectionPointer = &selection; @@ -45,8 +55,23 @@ int main(){ gameLoop(); break; case 1: + cout << "\033[2J\033[1;1H"; // Clear screen unicode sequence + printf("2D Vector:\n%s\n", printVector(vector).c_str()); + printf("getTotal: %i\n", getTotal(vector)); + printf("getAverage: %i\n", getAverage(vector)); + printf("getRowTotal 0: %i\n", getRowTotal(vector, 0)); + printf("getColumnTotal 0: %i\n", getColumnTotal(vector, 0)); + printf("getHighestInRow 0: %i\n", getHighestInRow(vector, 0)); + printf("getHighestInColumn 0: %i\n", getHighestInColumn(vector, 0)); + printf("getLowestInRow 3: %i\n", getLowestInRow(vector, 3)); + printf("getLowestInColumn 3: %i\n", getLowestInColumn(vector, 3)); + cout << "Press Enter to Continue"; + getchar(); break; case 2: + cout << "\033[2J\033[1;1H"; // Clear screen unicode sequence + cout << "Press Enter to Continue"; + getchar(); break; } break;