Presentation is loading. Please wait.

Presentation is loading. Please wait.

EECE.2160 ECE Application Programming

Similar presentations


Presentation on theme: "EECE.2160 ECE Application Programming"— Presentation transcript:

1 EECE.2160 ECE Application Programming
Instructor: Dr. Michael Geiger Spring 2019 Lecture 21 Arrays

2 ECE Application Programming: Lecture 21
Lecture outline Announcements/reminders Program 5 due 4/5 Exam 2: Monday, April 1 Will again be allowed one 8.5” x 11” note sheet Today’s lecture One-dimensional arrays Two-dimensional arrays 6/26/2019 ECE Application Programming: Lecture 21

3 Review of scalar variables
Variables (up to now) have: name type (int, float, double, char) address value N 28C4 (int) q 28C8 (float) r 28CC (float) 35 3.14 8.9 e.g. Name type address value N integer 28C4 35 q float 28C8 3.14 r float 28CC 8.9 6/26/2019 ECE Application Programming: Lecture 21

4 ECE Application Programming: Lecture 21
Intro to Arrays Any single element of x may be used like any other scalar variable x[0] 45 3044 x[1] 55 3048 x[2] 25 304C x[3] 85 3050 x[4] 75 3054 printf("%d",x[3]); // prints 85 printf("%d",x[7]+x[1]); // prints 115 x[5] 65 3058 x[6] 100 305C x[7] 60 3060 6/26/2019 ECE Application Programming: Lecture 21

5 ECE Application Programming: Lecture 21
Declaring Arrays Define an 8 element array: int x[8]; Elements numbered 0 to 7 Arrays in C always start with location 0 (zero based) The initial value of each array element is unknown (just like scalar variables) x[0] ? 3044 x[1] ? 3048 x[2] ? 304C x[3] ? 3050 x[4] ? 3054 x[5] ? 3058 x[6] ? 305C x[7] ? 3060 6/26/2019 ECE Application Programming: Lecture 21

6 Declaring/defining Arrays
double A[]={ 1.23, , 2.718, }; A[0] 1.23 4430 You can also define the values to be held in the array and instruct the compiler to figure out how many elements are needed. Not putting a value within the [] tells the compiler to determine how many locations are needed. A[1] 4438 A[2] 2.718 4440 A[3] 0.7071 4448 6/26/2019 ECE Application Programming: Lecture 21

7 Working with Arrays (input)
#include <stdio.h> void main(void) { int x[8]; int i; // get 8 values into x[] for (i=0; i<8; i++) { printf("Enter test %d:",i+1); scanf("%d",&x[i]); } } 6/26/2019 ECE Application Programming: Lecture 21

8 Working with Arrays (input)
Sample run (user input underlined): Enter test 1:80 Enter test 2:75 Enter test 3:90 Enter test 4:100 Enter test 5:65 Enter test 6:88 Enter test 7:40 Enter test 8:90 x[0] 80 x[1] 75 x[2] 90 x[3] 100 x[4] 65 x[5] 88 x[6] 40 x[7] 90 6/26/2019 ECE Application Programming: Lecture 21

9 ECE Application Programming: Lecture 21
Pitfalls What happens if we change previous code to: #include <stdio.h> void main(void) { int x[8]; int i; float sum, avg; // used later // get 8 values into x[] for (i=0; i<=8; i++) { printf("Enter test %d:",i+1); scanf("%d",&x[i]); } } 6/26/2019 ECE Application Programming: Lecture 21

10 ECE Application Programming: Lecture 21
Pitfalls (cont.) Although x has 8 elements, x[8] is not one of those elements! Compiler will not stop you from accessing elements outside the array Must make sure you know the size of the array 6/26/2019 ECE Application Programming: Lecture 21

11 ECE Application Programming: Lecture 21
Example What does the following program print? int main() { int arr[10]; int i; printf("First loop:\n"); for (i = 0; i < 10; i++) { arr[i] = i * 2; printf("arr[%d] = %d\n", i, arr[i]); } printf("\nSecond loop:\n"); for (i = 0; i < 9; i++) { arr[i] = arr[i] + arr[i + 1]; return 0; 6/26/2019 ECE Application Programming: Lecture 21

12 ECE Application Programming: Lecture 21
Example solution First loop: arr[0] = 0 arr[1] = 2 arr[2] = 4 arr[3] = 6 arr[4] = 8 arr[5] = 10 arr[6] = 12 arr[7] = 14 arr[8] = 16 arr[9] = 18 Output continued: Second loop: arr[0] = 2 arr[1] = 6 arr[2] = 10 arr[3] = 14 arr[4] = 18 arr[5] = 22 arr[6] = 26 arr[7] = 30 arr[8] = 34 6/26/2019 ECE Application Programming: Lecture 21

13 Two-dimensional arrays
Two-dimensional arrays: can be used to represent tabular data Declaration: <type> <name>[<rows>][<cols>] Example (see below): int x[3][4]; Index elements similarly to 1-D arrays Col. 0 Col. 1 Col. 2 Col. 3 Row 0 x[0][0] x[0][1] x[0][2] x[0][3] Row 1 x[1][0] x[1][1] x[1][2] x[1][3] Row 2 x[2][0] x[2][1] x[2][2] x[2][3] 6/26/2019 ECE Application Programming: Lecture 21

14 ECE Application Programming: Lecture 21
Initializing 2D arrays Can initialize similarly to 1D arrays, but must specify dimensions Each row treated like a 1D array; rows separated by commas: int y[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; 1 2 3 4 5 6 7 8 9 10 11 12 6/26/2019 ECE Application Programming: Lecture 21

15 ECE Application Programming: Lecture 21
2D arrays and loops Typically use nested loops to work with 2-D arrays One loop inside another: for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { x[i][j] = y[i][j] * 2; } Be careful in loop body—switching your loop indices will cause trouble Using x[j][i] would take you outside of the array! 6/26/2019 ECE Application Programming: Lecture 21

16 Example: Working with 2-D arrays
Complete this program, which counts the # of negative values in each row of a 2-D array (assume the necessary #includes are done): #define NRows 3 // # of rows #define NCols 4 // # of columns int main() { double x[NRows][NCols] = // 2-D array { { 10, 2.5, 0, 1.5}, {-2.3, -1.1, -0.2, 0}, {10.5, -6.1, 23.4, -9.2} }; int negCnt[NRows] = {0}; // Initialize entire row count array to 0 int i, j; // Row and column indices /* INSERT CODE HERE--Visit every element in array x and count the number of negative values in each row */ // Now print the row counts for (i = 0; i < NRows; i++) printf(“Row %d has %d negative values.\n”, i, negCnt[i]); return 0; } 6/26/2019 ECE Application Programming: Lecture 21

17 ECE Application Programming: Lecture 21
Example solution /* Code to be added to visit every element in array x and count the number of negative values in each row */ for (i = 0; i < NRows; i++) for (j = 0; j < NCols; j++) if (x[i][j] < 0) negCnt[i]++; 6/26/2019 ECE Application Programming: Lecture 21

18 ECE Application Programming: Lecture 21
Final notes Next time Arrays and functions Reminders: Program 5 due 4/5 Exam 2: Monday, April 1 Will again be allowed one 8.5” x 11” note sheet 6/26/2019 ECE Application Programming: Lecture 21


Download ppt "EECE.2160 ECE Application Programming"

Similar presentations


Ads by Google