From 6c83506cb44b1d20f66df404f0b6468b0e291b6b Mon Sep 17 00:00:00 2001 From: RossTheRoss Date: Tue, 25 Jun 2019 17:55:13 -0500 Subject: Do a thing: --- ee1301/wk5/hw5_directory/maze.txt | 18 +- ee1301/wk5/hw5_directory/strap012_HW5A.cpp | 366 ++++++++++++++--------------- ee1301/wk5/hw5_directory/strap012_HW5B.cpp | 100 ++++---- ee1301/wk5/hw5_directory/strap012_HW5C.cpp | 260 ++++++++++---------- 4 files changed, 372 insertions(+), 372 deletions(-) (limited to 'ee1301/wk5/hw5_directory') diff --git a/ee1301/wk5/hw5_directory/maze.txt b/ee1301/wk5/hw5_directory/maze.txt index cd95590..aa3c598 100644 --- a/ee1301/wk5/hw5_directory/maze.txt +++ b/ee1301/wk5/hw5_directory/maze.txt @@ -1,10 +1,10 @@ -WWWW-O-WWW ----W------ ---WWWWWW-W ----------- -WWWWWWWWW- ----------- --WW-WW-WW- ----------- -WW-WW-WW-W +WWWW-O-WWW +---W------ +--WWWWWW-W +---------- +WWWWWWWWW- +---------- +-WW-WW-WW- +---------- +WW-WW-WW-W X--------- \ No newline at end of file diff --git a/ee1301/wk5/hw5_directory/strap012_HW5A.cpp b/ee1301/wk5/hw5_directory/strap012_HW5A.cpp index 5249ea5..768e8e2 100644 --- a/ee1301/wk5/hw5_directory/strap012_HW5A.cpp +++ b/ee1301/wk5/hw5_directory/strap012_HW5A.cpp @@ -1,183 +1,183 @@ -/* -Date: April 4 2019 -Name: Matthew Strapp -Student ID number: 5449340 -Course number: EE 1301 -Term: Spring 2019 -Lab/assignment number: HW 5A -Short Program Description: Maze Runner 2.0 -*/ - -#include -#include -#include -#include -using namespace std; -ifstream fin; -ofstream fout; - -const char BLANK = '-'; -const char ROBOT = 'X'; -const char GOAL = 'O'; -const char WALL = 'W'; -const int screen_num_lines = 25; -const int lengthX = 10; // for now we only support square boards -const int lengthY = 10; // it "should" work with non-square, YMMV -// Board is described by the following coordinate system: -// 0 --> +X -// | -// | -// V -// +Y - -void initBoardDefault(char board[lengthX][lengthY], int &xPos, int &yPos); -void initBoardCustom(char board[lengthX][lengthY], int &xPos, int &yPos); -void clearScreen(); -void showGrid(char board[lengthX][lengthY]); - -bool hasChar(char board[lengthX][lengthY], char findMe); -void updateGrid(char board[lengthX][lengthY], int &xPos, int &yPos, char action); - -int main() -{ - srand(time(NULL)); - char board[lengthX][lengthY] = {0}; - int xPos = 0, yPos = 0; - fin.open("maze.txt"); //maze.txt is in the directory that it is run in - if (!fin.is_open()) //If a custom maze does not exist, generate one automatically - { - initBoardDefault(board, xPos, yPos); - } - else - { - initBoardCustom(board, xPos, yPos); - } - while (hasChar(board, GOAL)) - { - char action; - clearScreen(); - showGrid(board); - cout << "Where would you like to go? (l, r, u, d) " << endl; - cin >> action; - - updateGrid(board, xPos, yPos, action); - } - - clearScreen(); - showGrid(board); - cout << "You found the cookie! Congratulations!\n"; - - return 0; -} - -//The default (no custom file) maze is procedurally generated, sometimes rendering levels impossible to solve. -//This bug is not as important as finishing the monster that is 5C. -void initBoardDefault(char board[lengthX][lengthY], int &xPos, int &yPos) -{ - for (int curRow = 0; curRow < lengthY; curRow++) - { - for (int curCol = 0; curCol < lengthX; curCol++) - { - if ((rand() % 5) + 1 == 4 || (rand() % 10) + 1 == 7) - { - board[curCol][curRow] = WALL; - } - else - { - board[curCol][curRow] = BLANK; - } - } - } - - board[rand() % lengthX][rand() % lengthY] = GOAL; - xPos = rand() % lengthX; - yPos = rand() % lengthY; - board[xPos][yPos] = ROBOT; -} - -void initBoardCustom(char board[lengthX][lengthY], int &xPos, int &yPos) -{ - for (int curRow = 0; curRow < lengthY; curRow++) - { - for (int curCol = 0; curCol < lengthX; curCol++) - { - fin >> board[curCol][curRow]; - if (board[curCol][curRow] == 'X') - { - board[curCol][curRow] = ROBOT; - xPos = curCol; - yPos = curRow; - } - } - } -} - -bool hasChar(char board[lengthX][lengthY], char findMe) -{ - for (int curRow = 0; curRow < lengthY; curRow++) - { - for (int curCol = 0; curCol < lengthX; curCol++) - { - if (board[curCol][curRow] == findMe) - { - return true; - } - } //end curCol loop - } // end curRow loop - - return false; -} - -void clearScreen() -{ - for (int i = 0; i < screen_num_lines; i++) - { - cout << endl; - } -} - -void showGrid(char board[lengthX][lengthY]) -{ - for (int curRow = 0; curRow < lengthY; curRow++) - { - for (int curCol = 0; curCol < lengthX; curCol++) - { - cout << board[curCol][curRow]; - } // end curCol loop - cout << endl; - } // end curRow loop -} - -void updateGrid(char board[lengthX][lengthY], int &xPos, int &yPos, char action) -{ - int oldX = xPos; - int oldY = yPos; - if (action == 'l' && xPos > 0) - { - xPos--; - } - else if (action == 'r' && xPos < lengthX - 1) - { - xPos++; - } - else if (action == 'u' && yPos > 0) - { - yPos--; - } - else if (action == 'd' && yPos < lengthY - 1) - { - yPos++; - } - //Hit detection - if (board[xPos][yPos] == WALL) - { - xPos = oldX; - yPos = oldY; - board[xPos][yPos] = WALL; - } - else - { - board[oldX][oldY] = BLANK; - } - board[xPos][yPos] = ROBOT; -} +/* +Date: April 4 2019 +Name: Matthew Strapp +Student ID number: 5449340 +Course number: EE 1301 +Term: Spring 2019 +Lab/assignment number: HW 5A +Short Program Description: Maze Runner 2.0 +*/ + +#include +#include +#include +#include +using namespace std; +ifstream fin; +ofstream fout; + +const char BLANK = '-'; +const char ROBOT = 'X'; +const char GOAL = 'O'; +const char WALL = 'W'; +const int screen_num_lines = 25; +const int lengthX = 10; // for now we only support square boards +const int lengthY = 10; // it "should" work with non-square, YMMV +// Board is described by the following coordinate system: +// 0 --> +X +// | +// | +// V +// +Y + +void initBoardDefault(char board[lengthX][lengthY], int &xPos, int &yPos); +void initBoardCustom(char board[lengthX][lengthY], int &xPos, int &yPos); +void clearScreen(); +void showGrid(char board[lengthX][lengthY]); + +bool hasChar(char board[lengthX][lengthY], char findMe); +void updateGrid(char board[lengthX][lengthY], int &xPos, int &yPos, char action); + +int main() +{ + srand(time(NULL)); + char board[lengthX][lengthY] = {0}; + int xPos = 0, yPos = 0; + fin.open("maze.txt"); //maze.txt is in the directory that it is run in + if (!fin.is_open()) //If a custom maze does not exist, generate one automatically + { + initBoardDefault(board, xPos, yPos); + } + else + { + initBoardCustom(board, xPos, yPos); + } + while (hasChar(board, GOAL)) + { + char action; + clearScreen(); + showGrid(board); + cout << "Where would you like to go? (l, r, u, d) " << endl; + cin >> action; + + updateGrid(board, xPos, yPos, action); + } + + clearScreen(); + showGrid(board); + cout << "You found the cookie! Congratulations!\n"; + + return 0; +} + +//The default (no custom file) maze is procedurally generated, sometimes rendering levels impossible to solve. +//This bug is not as important as finishing the monster that is 5C. +void initBoardDefault(char board[lengthX][lengthY], int &xPos, int &yPos) +{ + for (int curRow = 0; curRow < lengthY; curRow++) + { + for (int curCol = 0; curCol < lengthX; curCol++) + { + if ((rand() % 5) + 1 == 4 || (rand() % 10) + 1 == 7) + { + board[curCol][curRow] = WALL; + } + else + { + board[curCol][curRow] = BLANK; + } + } + } + + board[rand() % lengthX][rand() % lengthY] = GOAL; + xPos = rand() % lengthX; + yPos = rand() % lengthY; + board[xPos][yPos] = ROBOT; +} + +void initBoardCustom(char board[lengthX][lengthY], int &xPos, int &yPos) +{ + for (int curRow = 0; curRow < lengthY; curRow++) + { + for (int curCol = 0; curCol < lengthX; curCol++) + { + fin >> board[curCol][curRow]; + if (board[curCol][curRow] == 'X') + { + board[curCol][curRow] = ROBOT; + xPos = curCol; + yPos = curRow; + } + } + } +} + +bool hasChar(char board[lengthX][lengthY], char findMe) +{ + for (int curRow = 0; curRow < lengthY; curRow++) + { + for (int curCol = 0; curCol < lengthX; curCol++) + { + if (board[curCol][curRow] == findMe) + { + return true; + } + } //end curCol loop + } // end curRow loop + + return false; +} + +void clearScreen() +{ + for (int i = 0; i < screen_num_lines; i++) + { + cout << endl; + } +} + +void showGrid(char board[lengthX][lengthY]) +{ + for (int curRow = 0; curRow < lengthY; curRow++) + { + for (int curCol = 0; curCol < lengthX; curCol++) + { + cout << board[curCol][curRow]; + } // end curCol loop + cout << endl; + } // end curRow loop +} + +void updateGrid(char board[lengthX][lengthY], int &xPos, int &yPos, char action) +{ + int oldX = xPos; + int oldY = yPos; + if (action == 'l' && xPos > 0) + { + xPos--; + } + else if (action == 'r' && xPos < lengthX - 1) + { + xPos++; + } + else if (action == 'u' && yPos > 0) + { + yPos--; + } + else if (action == 'd' && yPos < lengthY - 1) + { + yPos++; + } + //Hit detection + if (board[xPos][yPos] == WALL) + { + xPos = oldX; + yPos = oldY; + board[xPos][yPos] = WALL; + } + else + { + board[oldX][oldY] = BLANK; + } + board[xPos][yPos] = ROBOT; +} diff --git a/ee1301/wk5/hw5_directory/strap012_HW5B.cpp b/ee1301/wk5/hw5_directory/strap012_HW5B.cpp index 433f09e..f1e0c2c 100644 --- a/ee1301/wk5/hw5_directory/strap012_HW5B.cpp +++ b/ee1301/wk5/hw5_directory/strap012_HW5B.cpp @@ -1,51 +1,51 @@ -/* -Date: April 4 2019 -Name: Matthew Strapp -Student ID number: 5449340 -Course number: EE 1301 -Term: Spring 2019 -Lab/assignment number: HW 5B -Short Program Description: Random Array -*/ - -#include -#include -using namespace std; - -int main(int argc, char *argv[]) -{ - if (argc != 4) { - cout << "Invalid input!" << endl << " USAGE: ./rand-array m n max" << endl; - return 2; - } - - srand(time(NULL)); - int m, n, max; - m = atoi(argv[1]); //number of rows - n = atoi(argv[2]); //number of columns - int randArray[m][n]; - max = atoi(argv[3]); //Maximum number in array - - //Loop to make the random array - for (int curRow = 0; curRow < m; curRow++) - { - for (int curCol = 0; curCol < n; curCol++) - { - if (rand() % 2 + 1 == 2) { //Decide the sign of the number - randArray[curCol][curRow] = -1 * (rand() % (max+1)); - } else { - randArray[curCol][curRow] = (rand() % (max+1)); - } - } - } - - //Loop to output the array in the console - for (int curRow = 0; curRow < m; curRow++) - { - for (int curCol = 0; curCol < n; curCol++) - { - cout << randArray[curCol][curRow] << " "; - } - cout << endl; - } +/* +Date: April 4 2019 +Name: Matthew Strapp +Student ID number: 5449340 +Course number: EE 1301 +Term: Spring 2019 +Lab/assignment number: HW 5B +Short Program Description: Random Array +*/ + +#include +#include +using namespace std; + +int main(int argc, char *argv[]) +{ + if (argc != 4) { + cout << "Invalid input!" << endl << " USAGE: ./rand-array m n max" << endl; + return 2; + } + + srand(time(NULL)); + int m, n, max; + m = atoi(argv[1]); //number of rows + n = atoi(argv[2]); //number of columns + int randArray[m][n]; + max = atoi(argv[3]); //Maximum number in array + + //Loop to make the random array + for (int curRow = 0; curRow < m; curRow++) + { + for (int curCol = 0; curCol < n; curCol++) + { + if (rand() % 2 + 1 == 2) { //Decide the sign of the number + randArray[curCol][curRow] = -1 * (rand() % (max+1)); + } else { + randArray[curCol][curRow] = (rand() % (max+1)); + } + } + } + + //Loop to output the array in the console + for (int curRow = 0; curRow < m; curRow++) + { + for (int curCol = 0; curCol < n; curCol++) + { + cout << randArray[curCol][curRow] << " "; + } + cout << endl; + } } \ No newline at end of file diff --git a/ee1301/wk5/hw5_directory/strap012_HW5C.cpp b/ee1301/wk5/hw5_directory/strap012_HW5C.cpp index d99d978..2bdda92 100644 --- a/ee1301/wk5/hw5_directory/strap012_HW5C.cpp +++ b/ee1301/wk5/hw5_directory/strap012_HW5C.cpp @@ -1,130 +1,130 @@ -/* -Date: April 4 2019 -Name: Matthew Strapp -Student ID number: 5449340 -Course number: EE 1301 -Term: Spring 2019 -Lab/assignment number: HW 5C -Short Program Description: Pixel Averaging -*/ -#include -#include -#include -using namespace std; - -#define SIZE 100 -int maxRow = -1, maxColumn = 0; -void getInput(int input[SIZE][SIZE]); -void makeNewArray(int oldArray[SIZE][SIZE], int newArray[SIZE][SIZE]); -void pixelAverage(int inArray[SIZE][SIZE], int outArray[SIZE][SIZE]); -void printArray(int array[SIZE][SIZE]); - -int main() { - int inputArray[SIZE][SIZE] = {0}, - outputArray[SIZE][SIZE] = {0}; - getInput(inputArray); - makeNewArray(inputArray, outputArray); - pixelAverage(inputArray, outputArray); - printArray(outputArray); -} - -// Function: getInput -// --------------------------- -// Takes the stream of stdin, puts that into a stringsream and puts that stringsteam into an integer array -// input: an empty array of SIZE, as defined in line 15. -void getInput(int input[SIZE][SIZE]) { - string test, temp1; int temp2=0; - //I would mainly like to thank whatever user on StackOverflow solved my problem - while (getline(cin,test,'\n')) { - temp2 = -1; - istringstream ss(test); - while(getline(ss,temp1,' ')) { - temp2++; - input[maxRow][temp2] = stoi(temp1); - } - if (temp2>maxColumn) { - maxColumn = temp2+1; //1 is added to make the math work. - } - maxRow++; - } - maxRow++; -} - -// Function: makeNewArray -// --------------------------- -// Takes the array made in getInput and puts that same array into a new array to manipulate -// oldArray: Array generated in getInput of SIZE -// newArray: Array of same dimensions and data -void makeNewArray(int oldArray[SIZE][SIZE], int newArray[SIZE][SIZE]) { - for (int row = 0; row < maxRow; row++) { - for (int column = 0; column < maxColumn; column++) { - newArray[row][column] = oldArray[row][column]; - } - } -} - -// Function: pixelAverage -// --------------------------- -// The meat of the program, taking the surrounding values, adding them, and divides by the number of surrounding values -// inArray: Generated in getInput -// outArray: Generated in makeNewArray -void pixelAverage(int inArray[SIZE][SIZE], int outArray[SIZE][SIZE]) { - int sum = 0, n = 0, average; //n is the number of surrounding pixels - for (int row = -1; row < maxRow-1; row++) { - for (int column = -1; column < maxColumn-1; column++) { - sum=0; n=0; //Sum and n are reset every loop - if ( !((row)<0) ) { //True when array is in lower bounds row-wise - sum += inArray[row-1][column]; - n++; - } - if ( (row+1) +#include +#include +using namespace std; + +#define SIZE 100 +int maxRow = -1, maxColumn = 0; +void getInput(int input[SIZE][SIZE]); +void makeNewArray(int oldArray[SIZE][SIZE], int newArray[SIZE][SIZE]); +void pixelAverage(int inArray[SIZE][SIZE], int outArray[SIZE][SIZE]); +void printArray(int array[SIZE][SIZE]); + +int main() { + int inputArray[SIZE][SIZE] = {0}, + outputArray[SIZE][SIZE] = {0}; + getInput(inputArray); + makeNewArray(inputArray, outputArray); + pixelAverage(inputArray, outputArray); + printArray(outputArray); +} + +// Function: getInput +// --------------------------- +// Takes the stream of stdin, puts that into a stringsream and puts that stringsteam into an integer array +// input: an empty array of SIZE, as defined in line 15. +void getInput(int input[SIZE][SIZE]) { + string test, temp1; int temp2=0; + //I would mainly like to thank whatever user on StackOverflow solved my problem + while (getline(cin,test,'\n')) { + temp2 = -1; + istringstream ss(test); + while(getline(ss,temp1,' ')) { + temp2++; + input[maxRow][temp2] = stoi(temp1); + } + if (temp2>maxColumn) { + maxColumn = temp2+1; //1 is added to make the math work. + } + maxRow++; + } + maxRow++; +} + +// Function: makeNewArray +// --------------------------- +// Takes the array made in getInput and puts that same array into a new array to manipulate +// oldArray: Array generated in getInput of SIZE +// newArray: Array of same dimensions and data +void makeNewArray(int oldArray[SIZE][SIZE], int newArray[SIZE][SIZE]) { + for (int row = 0; row < maxRow; row++) { + for (int column = 0; column < maxColumn; column++) { + newArray[row][column] = oldArray[row][column]; + } + } +} + +// Function: pixelAverage +// --------------------------- +// The meat of the program, taking the surrounding values, adding them, and divides by the number of surrounding values +// inArray: Generated in getInput +// outArray: Generated in makeNewArray +void pixelAverage(int inArray[SIZE][SIZE], int outArray[SIZE][SIZE]) { + int sum = 0, n = 0, average; //n is the number of surrounding pixels + for (int row = -1; row < maxRow-1; row++) { + for (int column = -1; column < maxColumn-1; column++) { + sum=0; n=0; //Sum and n are reset every loop + if ( !((row)<0) ) { //True when array is in lower bounds row-wise + sum += inArray[row-1][column]; + n++; + } + if ( (row+1)