Problem Solving and Program Design in C 5
Problem Solving and Program Design in C (5 th Edition) by Jeri R. Hanly and Elliot B. Koffman CP 202 Chapter 8 11 -10 -1429
# © FCIT@KAU CHAPTER 8 - Arrays Chapter 8 1. Arrays 2. Arrays and Loops 3. Arrays and Pointers 4. Arrays and Functions 1 a. Declaring 4 a. Arrays as Output Arguments 1 b. Manipulating 4 b. Arrays as Input Arguments 1 c. Declaring and Initializing 5. Multidimensional Arrays
1 A. Introduction An array is a collection of two or more adjacent memory cells that are associated with a particular symbolic name. B. Subtopics Declaring arrays Manipulating arrays Declaring and initializing arrays © FCIT@KAU Arrays
1 a A. Introduction Declaring arrays is similar to declaring variables, but declaring arrays requires declaring the name of the array and the number of the cells associated with it. B. Syntax type array_name[size] ; C. Example int id[3]; double dollar[5]; char gender[2]; Data Types Numbers only Integer (int) Double (double) Character (char) © FCIT@KAU Arrays Declaring
1 b Statement Explanation printf(“%. 1 f”, x[0]); Displays the value of x[0], which is 16. 0. x[3] = 25. 0; Stores the value 25. 0 in x[3]. sum = x[0] + x[1]; Stores the sum of x[0] and x[1], which is 28. 0 in the variable sum += x[2]; Adds x[2] to sum. The new sum is 34. 0. x[3] += 1. 0; Adds 1. 0 to x[3]. The new x[3] is 26. 0. x[2] = x[0] + x[1]; Stores the sum of x[0] and x[1] in x[2]. The new x[2] is 28. 0. © FCIT@KAU Arrays Manipulating
Statement 1 b Explanation i = 5; printf(“%d %. 1 f”, 4, x[4]); Displays 4 and 2. 5 ( value of x[4]) printf(“%d %. 1 f”, i, x[i]); Displays 5 and 12. 0 ( value of x[5]) printf(“%. 1 f”, x[i] +1); Displays 13. 0 ( value of x[5] plus 1) printf(“%. 1 f”, x[i] +i); Displays 17. 0 ( value of x[5] plus 5) printf(“%. 1 f”, x[i +1]); Displays 14. 0 ( value of x[6]) printf(“%. 1 f”, x[i +i]); Invalid. Attempt to display x[10] printf(“%. 1 f”, x[2 * i-3]); Displays -54. 5 ( value of x[7]) printf(“%. 1 f”, x[(int) x[4]]); Displays 6. 0 ( value of x[2]) printf (“%. 1 f”, x[i++]); Displays 12. 0 ( value of x[5]); then assign 6 to I printf (“%. 1 f”, x[--i]); Assigns 5(6 -1) to i and then displays 12. 0 (value of x[5]) x[ i – 1] = x[i]; Assigns 12. 0 (value of x[5]) to x[4] x[i] = x[i+1]; Assigns 14. 0 (value of x[6]) to x[5] x[i] – 1 = x[i]; Illegal assignment statement © FCIT@KAU Arrays Manipulating
1 c A. Introduction Arrays can be initialized when they are declared as same as variables B. Example int prime[] = {2, 3, 5, 7, 11, 13, 17, 19}; char vowels[] = {‘A’, ‘E’, ‘I’, ‘O’, ‘U’}; © FCIT@KAU Arrays Declaring and Initializing
2 A. Introduction If you wish to process the elements of an array in sequence, you can use loop Note: any array starts with element zero (not one) B. Example Write a fragment of a program that stores the squares of the integers 0 through 9 ? int square[10], i; for (i=0; i<10; ++i) square[i] = i * i; [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] 0 1 4 9 16 25 36 49 64 81 © FCIT@KAU Arrays and Loops
Analysis Design Outline Implementation Testing Maintenance Calculating Mean and SD Write a program that computes the mean and standard deviation of an array of data and displays the difference between each value and the mean. 1 © FCIT@KAU Problem
Analysis Design Outline Implementation Calculating Mean and SD Testing Maintenance 1 © FCIT@KAU Problem
Analysis Design Outline Implementation Calculating Mean and SD Testing Maintenance 1 © FCIT@KAU Problem
A. Without 3 © FCIT@KAU Arrays and Pointers arrays: int andy, *ted; andy = 25; fred = andy; ted = &andy; B. With arrays: char andy[]={‘a’, ‘b’, ‘c’}; char fred[3]; char *ted; fred[0] = andy[0]; fred[1] = andy[1]; fred[2] = andy[2]; [0] ted = andy; andy [0] 1775 [2] ‘a’ ‘b’ ‘c’ 1776 fred [1] [2] ‘a’ ‘b’ ‘c’ 1777 1778 1779 ted 1776
[0] [1] [2] [3] [4] © FCIT@KAU Arrays and Pointers Tutorial *p no pointer Way 5 Way 4 Way 3 Way 2 Way 1 ‘a’ ‘b’ ‘c’ ‘d’ ‘e’ int main (void) 1775 1776 1777 1778 { letters char letters[5], char *p; int n; p = letters; *p = ‘a’; // ≡ letters[0]=‘a’ p++; *p = ‘b’; // ≡ letters[1]=‘b’ p = &letters[2]; *p = ‘c’; // ≡ letters[2]=‘c’ p = letters + 3; *p = ‘d’; // ≡ letters[3]=‘d’ p = letters; *(p+4) = ‘e’; // ≡ letters[4]=‘e’ for (n=0; n<5; n++) printf(“%c”, letters[n]); return (0); } 1779
4 A. Introduction Previous examples in functions show that the arguments are variables, so changing their values inside the functions will not affect the original values in the main function However, using pointers allows you to send the address of a variable instead of the value of a variable, so the changing will take affect Sending an array as an argument requires sending the address of the first element in the array B. Subtopics Arrays as output arguments Arrays as input arguments © FCIT@KAU Arrays and Functions
4 a A. Introduction In simple (not array) parameters: void test(int *list) *list = 10; } int main(void) { int x; test(&x); } { In array parameters: void test(int *list) *(list+5) = 10; } int main(void) { int x[10]; test(&x[0]); } { or test(int list[]) or list[5] = 10; or test(x) © FCIT@KAU Arrays and Functions Arrays as Output Arguments
B. Example 4 a © FCIT@KAU Arrays and Functions Arrays as Output Arguments
4 b © FCIT@KAU Arrays and Functions Arrays as Input Arguments A. Introduction In simple (not array) parameters: void function test(int list) : } int main(void) { int x; test(x); } In array parameters: { ) nt i st n o (c t s te or void test(const int *list) { : } int main(void) { int x[10]; test(&x[0]); or test(x) } l [] t s i
B. Example 4 b © FCIT@KAU Arrays and Functions Arrays as Input Arguments
C. Example 4 © FCIT@KAU Arrays and Functions
Analysis Design Outline Implementation Testing Maintenance Simulating Stacks 2 A stack is a data structure in which only the top element can be accessed. Inserting a new element at the top of a stack is called push. Removing the top element of a stack is called pop. © FCIT@KAU Problem
Analysis Design Outline Simulating Stacks Implementation Testing Maintenance 2 © FCIT@KAU Problem Write the main() function for this program?
Analysis Design Outline Implementation Array Search - Linear Search Testing Maintenance 3 Search for a value inside an array. The simple process is to check each element in the array using a loop and exit the loop if the value is found or you finished checking all the elements. This process is called a linear search. © FCIT@KAU Problem
Analysis Design Outline Implementation Testing Maintenance Array Search - Linear Search Assume the target has not been found. Start with the initial array element. Repeat while the target is not found and there are more array elements. If the current element matches the target Set a flag to indicate that the target has been found. else Advance to the next array element. If the target was found Return the target index as the search result. else Return -1 as the search result. 3 © FCIT@KAU Problem
Analysis Design Outline Implementation Array Search - Linear Search Testing Maintenance 3 © FCIT@KAU Problem
Analysis Design Outline Implementation Sorting an Array Start from the first data element until the previous of the last one and do the following: Search for the smallest element from the current data element until the last one [subarray]. If you find one, exchange it with the current data element. Testing Maintenance 4 © FCIT@KAU Problem
Analysis Design Outline Sorting an Array Implementation Testing Maintenance 4 © FCIT@KAU Problem
5 © FCIT@KAU Multidimensional Arrays Multi-dimensional arrays are arrays with two or more dimensions. Example of two dimensions: char jimmy[3][5]; Example of three dimensions: int cube[100][5][4]; cube[0][2][3] = 2;
One Dimension arrays: int prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29}; char vowels[] = {‘A’, ‘E’, ‘I’, ‘O’, ‘U’}; Two Dimensions arrays: int words[2][3] = { {‘a’, ’n’, ’d’}, {‘o’, ’r’, ’ ’}}; 5 © FCIT@KAU Multidimensional Arrays Declaring and Initializing
Analysis Design Tic-Tac-Toe Outline Implementation Testing Maintenance 5 Write a function to check whether a tic-tac-toe board is completely filled, assuming the original value for each cell is one space? ttt_brd[1][2] © FCIT@KAU Problem
Analysis Design Tic-Tac-Toe Outline Implementation Testing Maintenance 5 © FCIT@KAU Problem
Analysis Design Outline Implementation Testing Enrollment Data in 3 D Maintenance 6 Assuming that you have three-dimensional array, called enroll, that may be used to store the enrollment data for a college. The college offers 100 courses at five different campuses. We will number the freshman year 0, the sophomore year 1, … 3 Write the code for: Display number of students in each course Display number of students at each campus © FCIT@KAU Problem
Analysis Design Outline Implementation Testing Maintenance Enrollment Data in 3 D 6 // Display number of students in each course for (course = 0; course < 100; course++) { course_sum = 0; for (campus = 0; campus < 5; campus++) { for (cls_rank = 0; cls_rank < 4; cls_rank++) { course_sum += enroll[course][campus][cls_rank]; } } printf(“Number of students in course %d is %dn”, course_sum); } © FCIT@KAU Problem
Analysis Design Outline Implementation Testing Maintenance Enrollment Data in 3 D 6 // Display number of students at each campus for (campus = 0; campus < 5; campus++) { campus_sum = 0; for (course = 0; course < 100; course++) { for (cls_rank = 0; cls_rank < 4; cls_rank++) { campus_sum += enroll[course][campus][cls_rank]; } } printf(“Number of students at campus %d is %dn”, campus_sum); } © FCIT@KAU Problem
C © FCIT@KAU CHAPTER 8 - Arrays Chapter 8 1. Arrays 2. Arrays and Loops 3. Arrays and Pointers 4. Arrays and Functions 1 a. Declaring 4 a. Arrays as Output Arguments 1 b. Manipulating 4 b. Arrays as Input Arguments 1 c. Declaring and Initializing 5. Multidimensional Arrays
- Slides: 34