Part 1
Q01:
Given a 1D array of int "intA" initialized to 10 values: 100, 200, ... 1000, a second un initialized array intB:
1. Write a program to copy intA to intB in reverse order
2. Must use looping techniques
3. Must print both arrays
Q02:
Given a 2D array of chars chA initialized to
A B C D
E F G H
I J K L
M N O P
Q R S T
1. Write a code block to print the content of chA as it is shown above.
2. Write a code block to print the transpose of chA.
Transpose example:
If m = 1 2 3 → mT = 1 4
4 5 6 2 5
3 6
3. Write a code block to compute the individual summation per each column, per each row and the overall summation of chA.
4. Must use looping techniques
Part 2
Q01:
Write a program to do the following:
1) Declare three uninitialized array of ints, intA1, intA2, intA3, all of length of 16.
2) A function that prints an int array in one line.
3) A function that randomly generates an int array. (hint: check random32 in Irvinelib help)
4) A function that copies an int array from another.
5) A function that reverses an int array.
6) A function computes the summation of an int array.
7) A function that computes an element-wise addition of two int arrays.
8) A function that computes an element-wise subtraction of two int arrays.
9) A function that computes element-wise abs of an int array.
10) Test each function from main, print appropriate array after each test.
Part 3
Q01: menu, while, if, for, etc.
Write a program to do the following:
1) A function that prompts the user to enter a string of a predefined max length, reads the string and stores it in a byte array.
2) Define a second byte array to store the frequencies of each character in the input string.
3) A Function that computes and saves the frequencies in item 2 above.
4) A Function to print the character and its frequency in two columns format.
5) A Function to allow the user to replace a passed character with another in the input string.
6) A Function that counts/prints how many words in the input string.
7) Make the above tasks menu options and keep prompting the user to select an option to be performed until he/she chooses to quit.
Part 4
Q01:
1. Study the algorithm of the selection sort, given below.
2. Write a function to randomly generate a char array.
3. Implement selectionSort algorithm and test it with the array in (2).
4. Test three cases: random array, sorted array and array in reverse order.
Input: A[], Size
Output: A[] : A[i] < A[i+1], i*[0,Size-1].
Assumptions: 1) IdxofMin, is a function that returns index of smallest element in A[]. You need to write the idxofMin function.
3) Swap(x,y) is a function that swaps the values of the passed arguments. You need to write the swap function.
2) A[] is in no particular order.
Algorithm: SelectionSort
FOR i=1 TO Size-1
k = idxofMin(A, i+1, Size-1)
Swap(A[i], A[k])
ROF
Part 5
Q01;
Copy part 2 and do the following:
1. Add a menu listing all the tasks to be done by the program.
2. Add a while loop structure
3. Add a switch structure based on the technique "Table-driven selection". Review CH06.58 (I am attaching at the end of this part)
4. Test all options.
"Table-driven selection". Review CH06.58
Step 1: create a table containing lookup values and procedure offsets:
.data
CaseTable BYTE 'A' ; lookup value
DWORD Process_A ; address of procedure
EntrySize = ($ - CaseTable)
BYTE 'B'
DWORD Process_B
BYTE 'C'
DWORD Process_C
BYTE 'D'
DWORD Process_D
NumberOfEntries = ($ - CaseTable) / EntrySize
Table of Procedure Offsets:
Step 2: Use a loop to search the table. When a match is found, call the procedure offset stored in the current table entry:
movebx,OFFSETCaseTable ; point EBX to the table
movecx,NumberOfEntries ; loop counter
L1: cmp al,[ebx] ; match found?
jne L2 ; no: continue
call NEAR PTR [ebx + 1] ; yes: call the procedure
; +1: address after the byte
jmp Default ; and exit the loop
L2: add ebx,EntrySize ; point to next entry
loop L1 ; repeat until ECX = 0
Default: ; could have a default-case handler