Upload Lab 8 Files
++ Lab 8 Files Signed-off-by: cdez <cdez@cdezselfhosted.pw>
This commit is contained in:
parent
c6fe12062c
commit
8651123e1e
9 changed files with 2973 additions and 0 deletions
280
Lab08/Lab8.c
Normal file
280
Lab08/Lab8.c
Normal file
|
|
@ -0,0 +1,280 @@
|
|||
// header files
|
||||
#include "StandardConstants.h"
|
||||
#include "Console_IO_Utility.h"
|
||||
#include "File_Input_Utility.h"
|
||||
#include "File_Output_Utility.h"
|
||||
|
||||
|
||||
// function prototypes
|
||||
|
||||
/*
|
||||
Name: isLowerCaseLetter
|
||||
Process: returns true if test character is lower case letter,
|
||||
MUST USE ONLY one line of code
|
||||
Function input/parameters: test character (char)
|
||||
Function output/parameters: none
|
||||
Function output/returned: Boolean result of specified test
|
||||
Function input/keyboard: none
|
||||
Device input/file: none
|
||||
Dependencies: none
|
||||
*/
|
||||
bool isLowerCaseLetter(char testChar);
|
||||
|
||||
|
||||
/*
|
||||
Name: isUpperCaseLetter
|
||||
Process: returns true if test character is upper case letter,
|
||||
MUST USE ONLY one line of code
|
||||
Function input/parameters: test character (char)
|
||||
Function output/parameters: none
|
||||
Function output/returned: Boolean result of specified test
|
||||
Function input/keyboard: none
|
||||
Device input/file: none
|
||||
Dependencies: none
|
||||
*/
|
||||
bool isUpperCaseLetter(char testChar);
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Name: countLettersInFile
|
||||
Process: input file is opened and checked for success,
|
||||
characters are retrieved and counted;
|
||||
upper case, lower case, and other symbol ints are updated,
|
||||
pointer must be dereferenced to so it can be incemented use "*"
|
||||
if file opening failure occurs returns false
|
||||
Function input/parameters: file name (const char *)
|
||||
Function output/parameters: upper and lower case values as well as other symbols
|
||||
Function output/returned: Boolean result of operation as specified
|
||||
Function input/keyboard: none
|
||||
Device input/file: data accessed from hard drive as specified
|
||||
Dependencies: File Input Utility tools, isUpperCaseLetter, isLowerCaseLetter,
|
||||
getLetterIndex
|
||||
*/
|
||||
bool countLettersInFile(char *inputFileName, int *upperCaseLetters,
|
||||
int *lowerCaseLetters, int *otherSymbols);
|
||||
|
||||
|
||||
/*
|
||||
Name: outputResultsToFile
|
||||
Process: opens file for output, writes multiple strings and integers to file,
|
||||
each pair of string and integer has coresponding endline
|
||||
Function input/parameters: file name (const char *),
|
||||
int upper case letters,
|
||||
int lower case letters,
|
||||
int other symbols letters,
|
||||
Function output/parameters: none
|
||||
Function output/returned: none
|
||||
Function input/keyboard: none
|
||||
Device output/file: none
|
||||
Dependencies: openOutputFile, writeStringToFile, writeIntegerToFile,
|
||||
writeEndlineToFile, closeOutputFile
|
||||
*/
|
||||
void outputResultsToFile(char *outputFileName, int upperCaseLetters,
|
||||
int lowerCaseLetters, int otherSymbols);
|
||||
|
||||
// main program
|
||||
int main()
|
||||
{
|
||||
// initialize function
|
||||
|
||||
// initialize variables, function
|
||||
char inputFileName[ STD_STR_LEN ], outputFileName[ STD_STR_LEN ];
|
||||
int upperCaseLetters = 0, lowerCaseLetters = 0, otherSymbols = 0;
|
||||
bool fileSuccess;
|
||||
|
||||
// show title
|
||||
// function: printf
|
||||
printf( "\nLETTER ANALYSIS PROGRAM\n" );
|
||||
printf( "=======================\n\n" );
|
||||
|
||||
// get input
|
||||
|
||||
// get input file name
|
||||
// function: promptForString
|
||||
promptForString( "Enter input file name to be accessed: ",
|
||||
inputFileName );
|
||||
|
||||
// get output file name
|
||||
// function: promptForString
|
||||
promptForString( "Enter output file name for output : ",
|
||||
outputFileName );
|
||||
|
||||
|
||||
// processing
|
||||
|
||||
// run analysis process
|
||||
// function: countLettersInFile
|
||||
fileSuccess = countLettersInFile( inputFileName,
|
||||
&upperCaseLetters,
|
||||
&lowerCaseLetters,
|
||||
&otherSymbols );
|
||||
|
||||
// output/display results
|
||||
|
||||
// check for successful access
|
||||
if( fileSuccess )
|
||||
{
|
||||
// output both letter analyses to file
|
||||
// function: outputResultsToFile
|
||||
outputResultsToFile( outputFileName,
|
||||
upperCaseLetters,
|
||||
lowerCaseLetters,
|
||||
otherSymbols );
|
||||
// print success message
|
||||
// function: printf
|
||||
printf( "\nSUCCESS: Output was saved to file\n\n" );
|
||||
}
|
||||
// otherwise, assume failed file access
|
||||
else
|
||||
{
|
||||
// print error message
|
||||
// function: printf
|
||||
printf( "\nERROR: Unable to open input file,"
|
||||
"program aborted\n\n" );
|
||||
}
|
||||
|
||||
// end program
|
||||
|
||||
// show program end
|
||||
// function: printf
|
||||
printf( "Program End\n" );
|
||||
|
||||
// return successful program
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// supporting functions
|
||||
|
||||
/*
|
||||
Name: countLettersInFile
|
||||
Process: input file is opened and checked for success,
|
||||
characters are retrieved and counted;
|
||||
upper case, lower case, and other symbol ints are updated,
|
||||
pointer must be dereferenced to so it can be incemented use "*"
|
||||
if file opening failure occurs returns false
|
||||
Function input/parameters: file name (const char *)
|
||||
Function output/parameters: upper and lower case values as well as other symbols
|
||||
Function output/returned: Boolean result of operation as specified
|
||||
Function input/keyboard: none
|
||||
Device input/file: data accessed from hard drive as specified
|
||||
Dependencies: File Input Utility tools, isUpperCaseLetter, isLowerCaseLetter,
|
||||
getLetterIndex
|
||||
*/
|
||||
bool countLettersInFile(char *inputFileName, int *upperCaseLetters,
|
||||
int *lowerCaseLetters, int *otherSymbols)
|
||||
{
|
||||
// Initialize variables
|
||||
char testChar;
|
||||
*lowerCaseLetters = 0;
|
||||
*upperCaseLetters = 0;
|
||||
*otherSymbols = 0;
|
||||
bool fileSuccess;
|
||||
// Open the file and check for success
|
||||
// Function openInputFile
|
||||
fileSuccess = openInputFile(inputFileName);
|
||||
// Count and retrieve characters in file
|
||||
// Create while loop
|
||||
while(!checkForEndOfInputFile())
|
||||
{
|
||||
testChar = readCharacterFromFile();
|
||||
// Function isLowerCaseLetter, isUpperCaseLetter
|
||||
if(isLowerCaseLetter(testChar))
|
||||
{
|
||||
// Count for lowercase
|
||||
*lowerCaseLetters = *lowerCaseLetters + 1;
|
||||
}
|
||||
else if(isUpperCaseLetter(testChar))
|
||||
{
|
||||
// Count for uppercase
|
||||
*upperCaseLetters = *upperCaseLetters + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Count for symbols
|
||||
// Catch all else statemnt
|
||||
*otherSymbols = *otherSymbols + 1;
|
||||
}
|
||||
}
|
||||
*otherSymbols = *otherSymbols - 1;
|
||||
// return
|
||||
return fileSuccess;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Name: isLowerCaseLetter
|
||||
Process: returns true if test character is lower case letter,
|
||||
MUST USE ONLY one line of code
|
||||
Function input/parameters: test character (char)
|
||||
Function output/parameters: none
|
||||
Function output/returned: Boolean result of specified test
|
||||
Function input/keyboard: none
|
||||
Device input/file: none
|
||||
Dependencies: none
|
||||
*/
|
||||
bool isLowerCaseLetter(char testChar)
|
||||
{
|
||||
// check if letter is lowercase
|
||||
return testChar >= 'a' && testChar <= 'z';
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Name: isUpperCaseLetter
|
||||
Process: returns true if test character is upper case letter,
|
||||
MUST USE ONLY one line of code
|
||||
Function input/parameters: test character (char)
|
||||
Function output/parameters: none
|
||||
Function output/returned: Boolean result of specified test
|
||||
Function input/keyboard: none
|
||||
Device input/file: none
|
||||
Dependencies: none
|
||||
*/
|
||||
bool isUpperCaseLetter(char testChar)
|
||||
{
|
||||
//check if char is lowerCase
|
||||
return testChar >= 'A' && testChar <= 'Z';
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Name: outputResultsToFile
|
||||
Process: opens file for output, writes multiple strings and integers to file,
|
||||
each pair of string and integer has coresponding endline
|
||||
Function input/parameters: file name (const char *),
|
||||
int upper case letters,
|
||||
int lower case letters,
|
||||
int other symbols letters,
|
||||
Function output/parameters: none
|
||||
Function output/returned: none
|
||||
Function input/keyboard: none
|
||||
Device output/file: none
|
||||
Dependencies: openOutputFile, writeStringToFile, writeIntegerToFile,
|
||||
writeEndlineToFile, closeOutputFile
|
||||
*/
|
||||
void outputResultsToFile(char *outputFileName, int upperCaseLetters,
|
||||
int lowerCaseLetters, int otherSymbols)
|
||||
{
|
||||
// Opens output file
|
||||
openOutputFile(outputFileName);
|
||||
// Write string count to output file
|
||||
// Endline between each line of data
|
||||
// Functions openOutputFile, writeStringToFile, writeIntegerToFile
|
||||
// functions: writeEndlineToFile, closeOutputFile
|
||||
writeStringToFile("Total upper case letters : ");
|
||||
writeIntegerToFile(upperCaseLetters);
|
||||
writeEndlineToFile();
|
||||
writeStringToFile("Total lower case letters : ");
|
||||
writeIntegerToFile(lowerCaseLetters);
|
||||
writeEndlineToFile();
|
||||
writeStringToFile("Total other symbols : ");
|
||||
writeIntegerToFile(otherSymbols);
|
||||
writeEndlineToFile();
|
||||
|
||||
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue