Presentation is loading. Please wait.

Presentation is loading. Please wait.

Array Processing Lecture 7.

Similar presentations


Presentation on theme: "Array Processing Lecture 7."— Presentation transcript:

1 Array Processing Lecture 7

2 Motivation One of the most powerful programming tools available
Help to organize a collection of homogeneous data items (same type and lenght). The individual data items that make up the array are called as Element of the array Example: Scores[3]  indicated the third exam score

3 Operation on Arrays Loading initial value into the element of array
Processing the elements of the array Searching an array (linear or binary search) Writing out the array content to the report

4 Simple Algorithm to manipulate Array

5 Example 7.1 Find the sum of the elements of an array
Each elemen of the array is accumulated into a variable called sum. When all elements have been added, the variable sum is printed.

6 Find_sum_of_elements
Set sum to zero DO index = 1 to number_of_elements sum = sum + array(index) ENDO Print sum END

7 Example 7.2 Find the average of the elements of an array
Each element of the array is accumulated into a variable called sum. When all elements have been added, the average of the elements is found and printed.

8 Find_element_average
Set sum to zero DO index = 1 to number_of_elements sum = sum + array(index) ENDO Average = sum / number_of_elements Print average END

9 Example 7.3 Find the largest elements of an array
The elements of an array are searched to determine which element is the largest. The algorithm starts by putting the first element of the array into the variable largest_element, and then looks at the other elements of the array to see if a larger value exists. The largest value is then printed.

10 Find_largest_element
Set largest_element to array(1) DO index = 2 to number_of_elements IF array(index) > largest_element THEN largest_element = array(index) ENDIF ENDO Print largest_element END

11 Example 7.4 Find the smallest of the elements of an array
The elements of an array are searched to determine the smallest element. The algorithm starts by putting the first element of the array into the variable smallest_element, and then looks at the other elements of the array to see if a smaller value exists. The smallest value is then printed.

12 Find_smallest_element
Set smallest_element to array (1) DO index = 2 to number_of_elements IF array(index) < smallest_element THEN smallest_element = array(index) ENDIF ENDO Print smallest_element END

13 Example 7.5 Find the range of the elements of an array
The elements of an array are searched to determine the smallest and the largest elements. The algorithm starts by putting the first element of the array into the variables smallest_element and largest_element, and then looks at the other elements to see if a smaller or larger value exists. The two values are then printed.

14 Find_range_of_element Set smallest_element to array(1)
Set largest_element to array(1) DO index = 2 to number_of_elements IF array(index) < smallest_element THEN smallest_element = array(index) ELSE IF array(index) > largest_element THEN largest_element = array(index) ENDIF ENDO Print the range as smallest_element followed by largest_element END

15 Initialising the elements of an array
Because an array is an iternal data structure, initial values must be placed into the array before any information can be retrieved from it. The initial values can be assigned to the element as constant or be read from file.

16 Loading constant values into array (only be used for data which is unlikely to be changed)
Initialise_month_table month_table(1) = `Januari` month_table(2) = `February` . month_table(12) = `December` END

17 2. Loading initial values into an array from an input file
Read_values_into_array Set max_num_elements to required value Set index to zero Read first input value DOWHILE (input value exist) AND (index<max_num_elements) index = index + 1 array(index) = input value Read next input value ENDDO IF (input value exist) AND index = max_num_elements THEN Print `Array size is too small` ENDIF END

18 Array of variable size Read_values_into_variable_array
Set max_num_elements to required value Set index to zero Read first input value DOWHILE (input value NOT = 9999) AND (index<max_num_elements) index = index + 1 array(index) = input value Read next input value ENDDO IF index < max_num_elements THEN array(index) = 9999 ELSE Print `Array size is too small` ENDIF END Sentinel value  indicate the end of input records during initial processing and the last element of the array during further processing

19 Paired Arrays Two array with the same number of elements are paired because they correspond each other. Example: A student number ID array and student name array

20 Paired Arrays Example (Algorithm to read a file of product codes and corresponding selling price and load them into corresponding arrays) Read_values_into_paired_array Set max_num_elements to required value Set index to zero Read first input value DOWHILE (NOT EOF input record) AND (index<max_num_elements) index = index + 1 product_codes(index) = input_product_code selling_prices (index) = input_selling_price Read next record ENDDO IF (NOT EOF input record) AND index = max_num_elements THEN Print `Array size is too small` ENDIF END

21 Searching an Array The reason:
To edit an input value (ie. Valid element or not) To retrieve information from array To retrieve information from corresponding element in a paired array.

22 Linear search array Linear_search_of_an_array
Set max_num_elements to required value Set element_found to false Set index to 1 DOWHILE (NOT element_found) AND (index <= max_num_elements) IF array(index) = input_value THEN Set element_found to true ELSE index = index + 1 ENDIF ENDDO IF element_found THEN Print array (index) Print ´value not found´, input_value END

23 Binary Search Array (effective method for elements more than 25 and sorted into ascending sequence)
Binary_search_of_an_array Set element_found to false Set low_element to 1 Set high_element to max_num_elements DOWHILE (NOT element_found) AND (low_element <= high_elements) index = (low_element + high_element)/2 IF input_value = array(index) THEN Set element_found to true ELSE IF input_value < array (index) THEN high_element = index – 1 low_element = index + 1 ENDIF ENDDO IF element_found THEN Print array (index) Print ´value not found´, input_value END

24 Writing out the contents of an Array
Write_values_of_array DO index = 1 to number_of_elements Print array (index) ENDDO END

25 Programming Example Using Array

26 Example 7.6 Process exam scores
Design a program that will prompt for and receive 18 examination scores from a mathematics test, compute the class average, and display all the scores and the class average to the screen.

27 Defining diagram Input Processing Output 18 exam scores
Prompt the scores Get scores Compute class average Display scores Display class average Class_average

28 Control Structures required
An array to store the exam scores – called ´scores´ An index to identify each element in the array A DO loop to accept the scores Another DO loop to display the scores to the screen.

29 Solution Algorithm Process_exam_scores Set total_score to zero
DO index = 1 to 18 Prompt operator for score Get scores(index) total_score = total_score + scores(index) ENDDO Compute average_score = total_score / 18 DO index = 1 to 18 Display scores(index) Display average_score END

30 Example 7.7 Process integer array
Design an algorithm that will read an array of 100 integer values, calculate the average integer value, and count the number of integers in the array that are greater than the average integer value. The algorithm is to display the average integer value and the count of integers greater than average.

31 Defining diagram Input Processing Output Read integer values
Compute integer values Compute integer count Display integer average Display integer count Integer_average integer_count

32 Control Structures required
An array of integer values – called ´numbers´ A DO loop to calculate the average of the integers Another DO loop to count the number of integers greater than the average.

33 Solution Algorithm Process_integer_array Set integer_total to zero
Set integer_count to zero DO index = 1 to 100 integer_total = integer_total + numbers(index) ENDDO integer_average = integer_total / 100 DO index = 1 to 100 IF numbers(index) > integer_average THEN add 1 to integer_count ENDIF Display integer_average, integer_count END

34 Example 7.8 Validate sales number
Design an algorithm that will read a file of sales transactions and validate the sales numbers on each record. As each sales record is read, the sales number on the record is to be verifief against an array of 35 sales numbers. Any sales number not found in the array is to be flagged as an error.

35 Defining diagram Input Processing Output Sales_record
Sales_number Read sales records Validate sales numbers Print error message Error_message

36 Control Structures required
A previously initialised array of sales numbers, called ´sales_numbers´ A DOWHILE loop to read the sales file A DOWHILE loop to perform linear search A variable element_found to stop the search

37 Solution Algorithm Validate_sales_numbers Set max_num_elements to 35
Read sales record DOWHILE sales_records exist Set element_found to false Set index to 1 DOWHILE (NOT element_found) AND (index <= max_num_elements) IF sales_numbers(index) = input sales number THEN Set element_found to true ELSE index = index + 1 ENDIF ENDDO IF NOT element_found THEN Print `invalid sales numer`, input sales number END

38 Example 7.9 Calculate shipping Charge
Design an algorithm that will read an input weight for an item to be shipped, search an array of shipping weigths and retrieve a corresponding shipping charge. In this algorithm, two paired arrays, each containing six elements, have been established and initialised. The array, shipping_weights, contains a range of shipping weights in grams, and the array, shipping_charges, contains a corresponding array of shipping charges in dollars, as follows:

39 Shipping weights (grams)
Shipping charges 1 – 100 3.00 101 – 500 5.00 501 – 1000 7.50 1001 – 3000 12.00 3001 – 5000 16.00 35.00

40 Defining diagram Input Processing Output Entry weight
Prompt for entry weight Get entry weight Search shipping weight array Computer shipping charges Display shipping charge Shipping_charge error_message

41 Control Structures required
Two arrays, called ´shipping_weigths´ and ´shipping_charges` A DOWHILE loop to search the shipping_weigths array and then retrieve the shipping_charges A variable element_found to stop the search when entry weight is found

42 Solution Algorithm Calculate_shipping_charge Set max_num_elements to 6
Read index to 1 Set element found to false Prompt for entry weigth Get entry weight DOWHILE (NOT element_found) AND (index <= max_num_elements) IF shipping_weights(index) < entry weight THEN add 1 to index ELSE set element_found to true ENDIF ENDDO IF element_found THEN shipping_charge = shipping charges(index) Display `shipping charge is`, shipping_charge Display `invalid shipping weight`, entry weight END

43 Two-dimensional Arrays
Where two subscripts are required to locate an element in an array. The number of elements is calculated as the product of the number of rows and the number of columns Specified by: array(row_index,column_index)

44 Shipping weights (grams)
One dimensional Array Shipping weights (grams) 1 – 100 101 – 500 501 – 1000 1001 – 3000 3001 – 5000

45 Shipping charges ($) (by shipping zone)
Two dimensional Array Shipping charges ($) (by shipping zone) 1 2 3 4 2.50 3.50 4.00 5.00 6.50 4.50 7.50 10.00 11.00 12.00 13.50 16.00 20.00 27.50 32.00 34.00 35.00 38.00

46 Loading a two-dimensional array (from previous table)
Read_values_into_array Set max_num_elements to 24 Set row_index to zero Read input file DOWHILE (input values exist) AND (row_index < 6) row_index = row_index + 1 DO column_index = 1 to 4 shipping_charges(row_index,column_index) = input value read input file ENDDO IF (input values exist) AND row_index = 6 THEN Print ´Array size to small` ENDIF END

47 Searching Two dimensional Array
Calculate_shipping_Charges Set row_index to 1 Set element_found to false Prompt for shipping_weight, zone Get shipping_weight, zone DOWHILE (NOT element_found) AND (row_index <= 6) IF shipping_weights(row_index) < input shipping_weight THEN add 1 to row_index ELSE set element_found to true ENDIF ENDDO IF element_found THEN IF zone = (1 or 2 or 3 or 4) THEN shipping_charge = shipping_charges(row_index, zone) display ´shipping charge is`, shipping_charge display `invalid zone`, zone Display `invalid shipping weight`, input shipping_weight END

48 Writing out the contents of 2-d array
Write_values_of_array Set number_of_rows to required value Set number_of_columns to required value DO row_index = 1 to number_of_rows DO column_index = 1 to number_of_columns Print array (row_index, column_index) ENDDO END


Download ppt "Array Processing Lecture 7."

Similar presentations


Ads by Google