From c7bcb36a7671f58453c7ab2bdd82113af92cf9e3 Mon Sep 17 00:00:00 2001 From: cdez Date: Mon, 4 Sep 2023 23:20:38 -0700 Subject: [PATCH] Release Ready! +- Makefile for compiling +- EncryptionUtility.c (80 char limits) ++ outRelease (precompiled program for UNIX systems) --- PA01-0906/EncryptionUtility.c | 91 +++++++++++++++++------------ PA01-0906/Makefile | 8 +-- PA01-0906/PA01_Main | Bin 24656 -> 28752 bytes PA01-0906/build/Release/outRelease | Bin 0 -> 36848 bytes 4 files changed, 58 insertions(+), 41 deletions(-) create mode 100755 PA01-0906/build/Release/outRelease diff --git a/PA01-0906/EncryptionUtility.c b/PA01-0906/EncryptionUtility.c index 253cfc0..5b5bfef 100644 --- a/PA01-0906/EncryptionUtility.c +++ b/PA01-0906/EncryptionUtility.c @@ -21,11 +21,11 @@ Dependencies: as needed */ SquareArrayType *clearArrayType( SquareArrayType *data ) { - int oneDimensionIndex; + int rowIndex; - for( oneDimensionIndex = 0; oneDimensionIndex < data->sideSize; oneDimensionIndex++ ) + for( rowIndex = 0; rowIndex < data->sideSize; rowIndex++ ) { - free( data->array[ oneDimensionIndex ] ); + free( data->array[ rowIndex ] ); } free( data->array ); @@ -50,7 +50,7 @@ Dependencies: as needed */ SquareArrayType *createArrayType( int sideSize ) { - int oneDimensionIndex, twoDimensionIndex; + int rowIndex, colIndex; SquareArrayType *newData; newData = (SquareArrayType *)malloc( sizeof( SquareArrayType ) ); @@ -59,13 +59,13 @@ SquareArrayType *createArrayType( int sideSize ) newData->array = (int **)malloc( sideSize * sizeof( int * ) ); - for( oneDimensionIndex = 0; oneDimensionIndex < sideSize; oneDimensionIndex++ ) + for( rowIndex = 0; rowIndex < sideSize; rowIndex++ ) { - newData->array[ oneDimensionIndex ] = (int *)malloc( sideSize * sizeof( int ) ); + newData->array[ rowIndex ] = (int *)malloc( sideSize * sizeof( int ) ); - for( twoDimensionIndex = 0; twoDimensionIndex < sideSize; twoDimensionIndex++ ) + for( colIndex = 0; colIndex < sideSize; colIndex++ ) { - newData->array[ oneDimensionIndex ][ twoDimensionIndex ] = (int)ASTERISK; + newData->array[ rowIndex ][ colIndex ] = (int)ASTERISK; } } @@ -93,20 +93,22 @@ void decryptData( char *decryptStr, SquareArrayType *data ) int differenceIndex; int currentCharacter = 0; int stringComplete = 0; - for(oneDimensionIndex = arraySizeData * 2; oneDimensionIndex >= 0; oneDimensionIndex--) + for(oneDimensionIndex = arraySizeData * 2; oneDimensionIndex >= 0; + oneDimensionIndex--) { // does one dimensional indices - for(twoDimensionIndex = oneDimensionIndex; twoDimensionIndex >= 0; twoDimensionIndex--) + for(twoDimensionIndex = oneDimensionIndex; twoDimensionIndex >= 0; + twoDimensionIndex--) { // does two dimensional indices differenceIndex = oneDimensionIndex - twoDimensionIndex; if(differenceIndex < arraySizeData && twoDimensionIndex < arraySizeData) { - // printf("C "); // second dimension to move through array if(stringComplete == 0) { - if(data->array[twoDimensionIndex][differenceIndex] == UNPRINTABLE_CHAR_VALUE) + if(data->array[twoDimensionIndex][differenceIndex] == + UNPRINTABLE_CHAR_VALUE) { // check for the unprintable character decryptStr[currentCharacter] = NULL_CHAR; @@ -115,13 +117,13 @@ void decryptData( char *decryptStr, SquareArrayType *data ) else { // put the character into the string. - decryptStr[currentCharacter] = data->array[twoDimensionIndex][differenceIndex]; + decryptStr[currentCharacter] = + data->array[twoDimensionIndex][differenceIndex]; currentCharacter = currentCharacter + 1; } } } } - // printf("\n"); } // no return. } @@ -144,12 +146,15 @@ void displayArray( const SquareArrayType data, ControlCode ctrlCode ) int oneDimensionIndex = 0, twoDimensionIndex = 0; // check the control code, branch to the respective path. // iterate through the array, one character at a time. - // get the side size from the array, iterate that number of times, then output a new line. + // get the side size from the array, + // iterate that number of times, then output a new line. if(ctrlCode == DISPLAY_CHARS) { - for(oneDimensionIndex = 0; oneDimensionIndex < arraySize; oneDimensionIndex++) + for(oneDimensionIndex = 0; oneDimensionIndex < arraySize; + oneDimensionIndex++) { - for(twoDimensionIndex = 0; twoDimensionIndex < arraySize; twoDimensionIndex++) + for(twoDimensionIndex = 0; twoDimensionIndex < arraySize; + twoDimensionIndex++) { printCharacter((char)data.array[oneDimensionIndex][twoDimensionIndex]); printCharacter(SPACE); @@ -159,9 +164,11 @@ void displayArray( const SquareArrayType data, ControlCode ctrlCode ) } else { - for(oneDimensionIndex = 0; oneDimensionIndex < arraySize; oneDimensionIndex++) + for(oneDimensionIndex = 0; oneDimensionIndex < arraySize; + oneDimensionIndex++) { - for(twoDimensionIndex = 0; twoDimensionIndex < arraySize; twoDimensionIndex++) + for(twoDimensionIndex = 0; twoDimensionIndex < arraySize; + twoDimensionIndex++) { printInteger((int)data.array[oneDimensionIndex][twoDimensionIndex]); printCharacter(SPACE); @@ -199,10 +206,12 @@ void downloadData( const char *fileName, const SquareArrayType data ) // write a new line writeEndlineToFile(); // iterate through array outputting each integer. - for(oneDimensionIndex = 0; oneDimensionIndex < data.sideSize; oneDimensionIndex++) + for(oneDimensionIndex = 0; oneDimensionIndex < data.sideSize; + oneDimensionIndex++) { // - for(twoDimensionIndex = 0; twoDimensionIndex < data.sideSize; twoDimensionIndex++) + for(twoDimensionIndex = 0; twoDimensionIndex < data.sideSize; + twoDimensionIndex++) { // currentData = data.array[oneDimensionIndex][twoDimensionIndex]; @@ -250,49 +259,55 @@ SquareArrayType *encryptData( const char *toEncrypt ) { // get length of string (store in variable) int stringLen = findStringLength(toEncrypt); - // create the array (get the square root, add one, then call the function to make a square array.) + // create the array (get the square root, add one, + // then call the function to make a square array.) int stringLenRoot = findSquareRoot(stringLen) + 1; SquareArrayType *encryptedData = createArrayType(stringLenRoot); - // iterate through the array (backwards?) [Past Charles, see diagram that you made of Square Array] + // iterate through the array (backwards, diagonally) int oneDimensionIndex; int twoDimensionIndex; int differenceIndex; int currentCharacter = 0; - for(oneDimensionIndex = stringLenRoot * 2; oneDimensionIndex >= 0; oneDimensionIndex--) + for(oneDimensionIndex = stringLenRoot * 2; oneDimensionIndex >= 0; + oneDimensionIndex--) { // does one dimensional indices - for(twoDimensionIndex = oneDimensionIndex; twoDimensionIndex >= 0; twoDimensionIndex--) + for(twoDimensionIndex = oneDimensionIndex; twoDimensionIndex >= 0; + twoDimensionIndex--) { // does two dimensional indices differenceIndex = oneDimensionIndex - twoDimensionIndex; if(differenceIndex < stringLenRoot && twoDimensionIndex < stringLenRoot) { - // printf("C "); // second dimension to move through array if(currentCharacter >= stringLen) { if(currentCharacter == stringLen) { - // if the null character is there, replace with the Unprintable, set flag to one. - encryptedData->array[twoDimensionIndex][differenceIndex] = UNPRINTABLE_CHAR_VALUE; + // if the null character is there, + // replace with the Unprintable, set flag to one. + encryptedData->array[twoDimensionIndex][differenceIndex] = + UNPRINTABLE_CHAR_VALUE; } else { // if not the null, put random data into array - encryptedData->array[twoDimensionIndex][differenceIndex] = getRandomLetterValue(); + encryptedData->array[twoDimensionIndex][differenceIndex] = + getRandomLetterValue(); } } else { // otherwise, continue putting the data into the 2d array. - encryptedData->array[twoDimensionIndex][differenceIndex] = toEncrypt[currentCharacter]; + encryptedData->array[twoDimensionIndex][differenceIndex] = + toEncrypt[currentCharacter]; } currentCharacter = currentCharacter + 1; } } - //printf("\n"); } - // once null character is reached, put the 'unprintable character' then random data afterward. + // once null character is reached, put the 'unprintable character' + // then random data afterward. // returns a Square Array. return encryptedData; } @@ -425,13 +440,15 @@ SquareArrayType *uploadData( const char *fileName ) // create the square array readArray = createArrayType(arraySizeFile); // read integer, iterate through array inputting each integer. - for(oneDimensionIndex = 0; oneDimensionIndex < arraySizeFile; oneDimensionIndex++) + for(oneDimensionIndex = 0; oneDimensionIndex < arraySizeFile; + oneDimensionIndex++) { - // - for(twoDimensionIndex = 0; twoDimensionIndex < arraySizeFile; twoDimensionIndex++) + for(twoDimensionIndex = 0; twoDimensionIndex < arraySizeFile; + twoDimensionIndex++) { - // - readArray->array[oneDimensionIndex][twoDimensionIndex] = readIntegerFromFile(); + // input data into array from file + readArray->array[oneDimensionIndex][twoDimensionIndex] = + readIntegerFromFile(); } } } diff --git a/PA01-0906/Makefile b/PA01-0906/Makefile index 654ac86..b806f02 100644 --- a/PA01-0906/Makefile +++ b/PA01-0906/Makefile @@ -2,10 +2,7 @@ CC = gcc -Wall SOURCES = PA01_Main.c EncryptionUtility.c Console_IO_Utility.c File_Input_Utility.c File_Output_Utility.c OBJECTS = PA01_Main.o EncryptionUtility.o Console_IO_Utility.o File_Input_Utility.o File_Output_Utility.o -all: PA01_Main.out - -PA01_Main.out: PA01_Main - ./PA01_Main | tee PA01_Main.out +all: PA01_Main PA01_Main: $(OBJECTS) $(CC) $(OBJECTS) -o PA01_Main @@ -30,3 +27,6 @@ clean: clean_objects: rm -f $(OBJECTS) + +run: + ./PA01_Main \ No newline at end of file diff --git a/PA01-0906/PA01_Main b/PA01-0906/PA01_Main index 70ca7c01756fab69b2512958ddebba3e261687ff..73d212aea64236965c46fe36a082efb299a5c736 100755 GIT binary patch delta 9612 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 diff --git a/PA01-0906/build/Release/outRelease b/PA01-0906/build/Release/outRelease new file mode 100755 index 0000000000000000000000000000000000000000..5ef0f694c7a3db2742fd1e530115adb9ae291dd8 GIT binary patch literal 36848 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