1. Engineering
  2. Computer Science
  3. you are given hw03q1c file which contains a partially completed...

Question: you are given hw03q1c file which contains a partially completed...

Question details

You are given hw03q1.c file, which contains a partially completed program. You are to
follow the instructions contained in comments and complete the required functions.
You will be writing functions for a program that does manipulation on 1-D and 2-D
arrays. In one part, the program accepts four strings and an integer key as input from
the user. The program will then use the integer key to encrypt the input strings
(reversing the string and adding the key to each character in the string), decrypt the
strings and then print the strings. In another function, one long user-input string is
broken into sentences to count and print them. There is also a matrix operation of
determinant which uses 2D integer array. Example output given below. Go through the
C file and see the sample expected output below.


void reverseStrings(char strings[NUM_STRINGS][STRING_LENGTH]);

void encryptStrings(char[NUM_STRINGS][STRING_LENGTH], int);

void decryptStrings(char[NUM_STRINGS][STRING_LENGTH], int);

int splitAndPrintSentences(char s[NUM_STRINGS*STRING_LENGTH]);

void inputMatrix(int matrixA[3][3]);

void determinant(int matrixA[3][3]);

// Problem 1: initializeStrings (5 points)

// Traverse the 2D array of characters variable 'strings' (input from user

in main() ) and set all characters in each

// array to a null terminator so that there is a 4 row and 35 column 2D

array full of null terminators.

// The null terminator is represented by the character value '' and is

used to denote the end of a string.

// This may come in use later in the program to know the end of string.

void initializeStrings(char strings[NUM_STRINGS][STRING_LENGTH])



// Problem 2: printStrings (5 points)

// Traverse the 2D character array "strings" and print each of the

contained strings.

// See the example outputs provided in the word document. Your output

should match the example outputs.

void printStrings(char strings[NUM_STRINGS][STRING_LENGTH])



// Problem 3: reverseString (5 points)

// Reverse each string of strings[][].

// Consider one string at a time and reverse the characters. For instance,

"hi hello" should reverse to "olleh ih".

void reverseStrings(char strings[NUM_STRINGS][STRING_LENGTH])



// Problem 4: encryptStrings (5 points)

// Traverse the 2D character array 'strings' and encrypt each string in 2

steps as follows-

// 1) Reverse the string.

// Hint: Use 'reverseStrings()' for this step.

// 2) Then shift those ASCII characters forward by the integer value of


// If the string is "hello" and key = 2, reversing will get you "olleh"

and adding key to it will result in "qnnfj"

// If the value of 'key' is large, you will extend past the alphabetical

characters and reach non-alphabetical characters. Thats ok.

// NOTE: DO NOT encrypt the null terminator character. Use the null

terminator '' to find the end string.

// *** NOTE: If you were unable to code for reverseStrings(), then skip

that step in this function and simply shift the characters ahead by 'key'.

// While decrypting in the next function, you will again

have to skip the reversing part. You will get partial points in that case.

void encryptStrings(char strings[NUM_STRINGS][STRING_LENGTH], int key)



// Problem 5: decryptStrings (5 points)

// HINT: This should be very similiar to the encryption function defined


// Traverse the 2D character array 'strings' and decrypt each string in 2

steps as follows-

// 1) Shift those ASCII characters backward by the integer value of 'key'.

// 2) Then reverse the string.

// Hint: Use 'reverseStrings()' for this step.

// *** NOTE: If you were unable to code for reverseStrings(), then skip

that step in this function and simply shift the characters backward by


// You will get partial points in that case.

void decryptStrings(char strings[NUM_STRINGS][STRING_LENGTH], int key)



// Problem 6: splitAndPrintSentences (10 points)

// Split s[] into individual sentences and store them in str[][].

// Read s[] character by character and copy into str[][], such that

sentence 1 is in str[0][], sentence 2 is in str[1][] and so on.

// Print the char array str[][], so that you will print the separated

sentences. Finally return the number of sentences in 'count'

// Dont forget to initialize str[][] with nulls.

// Hint: Sentences are separated by full-stop.

int splitAndPrintSentences(char s[NUM_STRINGS*STRING_LENGTH])



int count = 0;

// enter code below

return count;


// Problem 7: inputMatrix (10 points)

// Ask the user for each element of the 3X3 matrix and store the elements

in "matrixA[][]"

// Display the matrix in the following form:

// matrixA =

// 1 2 3

// 4 5 6

// 7 8 9

// The user may input any inetgers for matrix elements, not necessarily

same as example above.

void inputMatrix(int matrixA[3][3])



// Problem 8: determinant (5 points)

// Calculate the determinant of the 3x3 matrix "matrixA[][]" and print it.

// Read about how to caclualte the determinant of 3x3 matrix. Here is a

video tutorial: https://www.khanacademy.org/math/algebra-home/alg-



// Since it is strictly a 3x3 matrix, you may use hardcoded indices. For

eg- matrixA[0][0] to access 1st element of the matrix

void determinant(int matrixA[3][3])


int det = 0;

// enter code below

printf(" Determinant of matrix = %d ", det);


// You should study and understand how this main() works.

// *** DO NOT modify it in any way ***

int main()



char strings[NUM_STRINGS][STRING_LENGTH]; // will store four strings

each with a max length of 34

int i, key, count;

char input[STRING_LENGTH];

int matrixA[3][3]; // 3x3 int array

for matrix

printf("CSE240 HW3: 2D Character Arrays ");


for (i = 0; i < NUM_STRINGS; i++)


printf("Enter string for encryption: "); // prompt for


fgets(input, sizeof(input), stdin); // store input string

input[strlen(input) - 1] = ''; // convert trailing ' '

char to '' (null terminator)

strcpy(strings[i], input); // copy input to 2D strings



printf(" Enter a key value for encryption: "); // prompt for

integer key

scanf("%d", &key);

encryptStrings(strings, key);

printf(" Encrypted Strings: ");


decryptStrings(strings, key);

printf(" Decrypted Strings: ");


i = getchar(); // remove the character ' '

printf(" Enter sentences(max 4): ");

fgets(sentences, sizeof(sentences), stdin); // store string

input[strlen(sentences) - 1] = ''; // convert

trailing ' ' char to '' (null terminator)

count = splitAndPrintSentences(sentences);

printf(" Number of sentences= %d ", count);

printf(" CSE240 HW3: 2D Integer Arrays ");



i = getchar(); // remove the character ' '

i = getchar(); // keep console open in VS

return 0;


Expected output:

CSE240 HW3 2D Character Arrays Enter string for encryption: This is CSE240 Enter string for encryption: homework three Enter string for encryption: Arizona state university Enter string for encryption: tempe Enter a key value for encryption: 2 Encrypted Strings: 264GUEukukjv ggtjvmtqygoqj (vkutgxkpwgvcvucpqlktc grogv Decrypted Strings: This is CSE240 homework three rizona state university tempe Enter sentences (max 4): I am grad student. I study at ASU. I like movies. I am grad student I study at ASU I like movies Number of sentences 3 CSE240 HW3 2D Integer Arrays Enter matrix Enter matrix element [e] [1]: 5 Enter matrix element [e]12]: 7 Enter matrix element [1][0]: 9 Enter matrix element [1][1]: 2 Enter matrix element [1][2]: 5 Enter matrix element [211el: 7 Enter matrix element [21111: 3 Enter matrix element 2121: 1 element [e][e]: 3 mat rixA= 3 5 7 9 2 5 7 3 1 Determinant of matrix = 182


Solution by an expert tutor
Blurred Solution
This question has been solved
Subscribe to see this solution