Structured Data Type - Array

About This Presentation
Title:

Structured Data Type - Array

Description:

Structured Data Type - Array. Data types examined so far are atomic: ... Solution: use structured data types - types that represent more than one piece of data ... – PowerPoint PPT presentation

Number of Views:26
Avg rating:3.0/5.0
Slides: 70
Provided by: richard436
Learn more at: https://www.d.umn.edu

less

Transcript and Presenter's Notes

Title: Structured Data Type - Array


1
Structured Data Type - Array
  • Data types examined so far are atomic
  • int, long
  • float, double
  • char
  • Called simple data types because vars hold a
    single value
  • If limited to simple data types, many
    programming applications are tedious
  • Solution use structured data types - types that
    represent more than one piece of data

2
Outline
  • Structured Types
  • A. Arrays
  • 1. Syntax of declaration
  • 2. Layout in memory
  • 3. Referencing array element
  • a. Subscript use (abuse)
  • b. Array elements as variables
  • 4. Array Initialization
  • 5. Processing arrays
  • a. using loop
  • b. types of processing
  • 6. Passing array/part of array
  • a. element of array
  • b. entire array
  • 7. Multidimensional arrays
  • a. declaration
  • b. referencing
  • c. processing
  • d. initialization

3
Outline (cont)
  • Structured Types
  • A. Arrays (cont)
  • 6. Passing array/part of array
  • a. element of array
  • b. entire array
  • 7. Multidimensional arrays
  • a. declaration
  • b. referencing
  • c. processing
  • d. initialization
  • Techniques
  • A. Sorting
  • 1. What is sorted?
  • 2. Selection sort
  • 3. Insertion sort
  • B. Searching
  • 1. (Un)successful searches
  • 2. Sequential search
  • a. Unsorted array

4
Outline (cont)
  • Techniques
  • A. Sorting
  • 1. What is sorted?
  • 2. Selection sort
  • 3. Insertion sort
  • B. Searching
  • 1. (Un)successful searches
  • 2. Sequential search
  • a. Unsorted array
  • b. Sorted array
  • 3. Binary search (sorted array)

5
Sample Problem
  • Problem track sales totals for 10 people
  • Daily data
  • Employee Sale
  • ---------- ----
  • 3 9.99
  • 7 16.29
  • 9 7.99
  • 3 2.59
  • .
  • .
  • .
  • 7 49.00

6
Representing Sales Data
  • FILE sdata
  • int numE
  • float amtS
  • float S0, S1, S2, S3, S4, S5, S6, S7, S8, S9
    0.0 / One var for each employee /
  • if ((sdata fopen(DailySales,r)) NULL)
  • printf(Unable to open DailySales\n)
  • exit(-1)

7
Updating Sales Data
  • while (fscanf(sdata,df,numE,amtS) 2)
  • switch (numE)
  • case 0 S0 amtS break
  • case 1 S1 amtS break
  • case 2 S2 amtS break
  • case 3 S3 amtS break
  • case 4 S4 amtS break
  • case 5 S5 amtS break
  • case 6 S6 amtS break
  • case 7 S7 amtS break
  • case 8 S8 amtS break
  • case 9 S9 amtS break
  • / What if 100 employees? /

8
Data Structure
  • A Data Structure is a grouping of data items in
    memory under one name
  • When data items same type, can use Array
  • Using an array, we can set aside a block of
    memory giving the block a name
  • Sales vs. S0
  • S1
  • S9

9
Parts of an Array
10
Declaring a 1D Array
  • Syntax Type NameIntegerLiteral
  • Type can be any type we have used so far
  • Name is a variable name used for the whole array
  • Integer literal in between the square brackets
    () gives the size of the array (number of
    sub-parts)
  • Size must be a constant value (no variable size)
  • Parts of the array are numbered starting from 0
  • 1-Dimensional (1D) because it has one index
  • Example
  • float Sales10
  • / float array with 10 parts numbered 0 to 9 /

11
Array Indices
  • The array indices are similar to the subscripts
    used in matrix notation
  • Sales0 is C notation for Sales
  • Sales1 is C notation for Sales
  • Sales2 is C notation for Sales
  • The index is used to refer to a part of array
  • Note, C does not check your index (leading to
    index-out-of-range errors)

0
1
2
12
Accessing Array Elements
  • Requires
  • array name,
  • subscript labeling individual element
  • Syntax namesubscript
  • Example
  • Sales5 refers to the sales totals for employee
    5
  • Sales5 can be treated like any float variable
  • Sales5 123.45
  • printf(Sales for employee 5 7.2f\n,Sales5)

13
Invalid Array Usage
  • Example
  • float Sales10
  • Invalid array assignments
  • Sales 17.50 / missing subscript /
  • Sales-1 17.50 / subscript out of range /
  • Sales10 17.50 / subscript out of range /
  • Sales7.0 17.50 / subscript wrong type /
  • Salesa 17.50 / subscript wrong type /
  • Sales7 A / data is wrong type /
  • Conversion will still occur
  • Sales7 17 / 17 converted to float /

14
Array Initialization
  • Arrays may be initialized, but we need to give a
    list of values
  • Syntax
  • Type NameSize
  • value0, value1, value2, , valueSize-1
  • value0 initializes Name0, value1 initializes
    Name1, etc.
  • values must be of appropriate type (though
    automatic casting will occur)

15
Array Initialization
  • Example
  • int NumDays12 31, 28, 31, 30, 31, 30, 31,
    31, 30, 31, 30, 31 / Jan is 0, Feb is 1,
    etc. /
  • int NumDays13 0, 31, 28, 31, 30, 31, 30,
    31, 31, 30, 31, 30, 31 / Jan is 1, Feb is 2,
    /
  • Note
  • if too few values provided, remaining array
    members not initialized
  • if too many values provided, a syntax error or
    warning may occur (extra values ignored)

16
Sales Data as an Array
  • Recall data
  • Employee Sale
  • ---------- ----
  • 3 9.99
  • 7 16.29
  • 9 7.99
  • 3 2.59
  • .
  • .
  • .
  • 7 49.00
  • Idea declare Sales as array, update array items

17
Updating Sales Data
  • while (fscanf(sdata,df,numE,amtS) 2)
  • switch (numE)
  • case 0 Sales0 amtS break
  • case 1 Sales1 amtS break
  • case 2 Sales2 amtS break
  • / cases 3-8 /
  • case 9 Sales9 amtS break
  • Q Whats the big deal??
  • A Can replace entire switch statement with
  • SalesnumE amtS

18
Updating with Arrays
  • while (fscanf(sdata,df,numE,amtS) 2)
  • SalesnumE amtS
  • When referencing array element can use any
    expression producing integer as subscript
  • is an operator, evaluates subscript expression
    then the appropriate location from the array is
    found
  • Note, when we have an integer expression, we may
    want to check subscript before using
  • if ((numE gt 0) (numE lt 9))
  • SalesnumE amtS
  • else
  • / Problem employee /

19
Using Array Elements
  • Array elements can be used like any variable
  • read into
  • printf(Sales for employee 3 )
  • scanf(f,(Sales3))
  • printed
  • printf(Sales for employee 3 7.2f\n,Sales3)
  • used in other expressions
  • Total Sales0 Sales1 Sales2

20
Arrays and Loops
  • Problem initialize Sales with zeros
  • Sales0 0.0
  • Sales1 0.0
  • Sales9 0.0
  • Should be done with a loop
  • for (I 0 I lt 10 I)
  • SalesI 0.0

21
Processing All Elements of Array
  • Process all elements of array A using for
  • / Setup steps /
  • for (I 0 I lt ArraySize I)
  • process AI
  • / Clean up steps /
  • Notes
  • I initialized to 0
  • Terminate when I reaches ArraySize

22
Initialize with Data from File
  • if ((istream fopen(TotalSales,r)) NULL)
  • printf(Unable to open TotalSales\n)
  • exit(-1)
  • for (I 0 I lt 10 I)
  • fscanf(istream,f, (SalesI))
  • fclose(istream)
  • File TotalSales
  • 1276.17 (Emp 0s Sales)
  • 917.50 (Emp 1s Sales)
  • 2745.91 (Emp 9s Sales)

23
Array Programming Style
  • Define constant for highest array subscript
  • define MAXEMPS 10
  • Use constant in array declaration
  • float SalesMAXEMPS
  • Use constant in loops
  • for (I 0 I lt MAXEMPS I)
  • fscanf(istream,f,(SalesI))
  • If MAXEMPS changes, only need to change one
    location

24
Summing Elements in an Array
  • Sales
  • 117.00 Sales0
  • 129.95 Sales1
  • 276.22 Sales2
  • 197.81 Sales9
  • total 0.0
  • for (I 0 I lt MAXEMPS I)
  • total SalesI
  • I Total
  • 0.00
  • 0 117.00 (Emp 0 sales)
  • 1 246.95 (0 1 sales)
  • 2 523.17 (0 1 2 s)
  • 9 1943.89 (All emps)

25
Maximum Element of an Array
  • Sales
  • 117.00 Sales0
  • 129.95 Sales1
  • 276.22 Sales2
  • 197.81 Sales9
  • maxS Sales0
  • for (I 1 I lt MAXEMPS I)
  • if (SalesI gt maxS)
  • maxS SalesI
  • / Note I starts at 1 /
  • I maxS
  • 117.00
  • 1 129.95 (Max of 0,1)
  • 2 276.22 (Max of 0,1,2)
  • 9 276.22 (Max of all)

26
Printing Elements of an Array
  • Sales
  • 117.00 Sales0
  • 129.95 Sales1
  • 276.22 Sales2
  • 197.81 Sales9
  • printf(Emp Num Sales\n)
  • printf(------- -----\n)
  • for (I 0 I lt MAXEMPS I)
  • printf(4d13.2f\n, I, SalesI)
  • Output
  • Emp Num Sales
  • ------- ------
  • 0 117.00
  • 1 129.95
  • 2 276.22
  • 9 197.81

27
Passing an Element of an Array
  • Each element of array may be passed as parameter
    as if it were variable of base type of array
    (type array is made of)
  • When passing array element as reference parameter
    put in front of array element reference ( has
    higher precedence)
  • does not hurt to put parentheses around array
    reference though
  • example (Sales3)

28
Passing Array Element Examples
  • Passing by value
  • void printEmp(int eNum, float eSales)
  • printf(4d13.2f\n, eNum, eSales)
  • in main
  • printf(Emp Num Sales\n)
  • printf(------- -----\n)
  • for (I 0 I lt MAXEMPS I)
  • printEmp(I,SalesI)
  • Passing by reference
  • void updateSales(float eSales, float newS)
  • eSales eSales newS
  • in main
  • while (fscanf(sdata,df, numE,amtS) 2)
  • updateSales(
  • (SalesnumE), amtS)

29
Passing Whole Array
  • When we pass an entire array we always pass the
    address of the array
  • syntax of parameter in function header
  • BaseType NameforArray
  • note, no value between - compiler figures out
    size from argument in function call
  • in function call we simply give the name of the
    array to be passed
  • since address of array is passed, changes to
    elements in the array affect the array passed as
    argument (no copy of array is made)

30
Passing Whole Array Example
  • float calcSalesTotal(float S)
  • int I
  • float total 0.0
  • for (I 0 I lt MAXEMPS I)
  • total SI
  • return total
  • in main
  • printf(Total sales is 7.2f\n,
  • calcSalesTotal(Sales))

31
Size of an Array
  • Sometimes we know we need an array, but not how
    big the array is going to be
  • One solution
  • allocate a very large array
  • integer to indicate num elements of array in use
  • loops use num elements when processing
  • Example
  • float SalesMAXEMPS
  • int NumEmps 0
  • processing
  • for (I 0 I lt NumEmps I)
  • process SalesI

32
Sorting Arrays
  • One common task is to sort data
  • Examples
  • Phone books (by name)
  • Checking account statement (by check )
  • Dictionaries (by word)
  • NBA scoring leaders (by points)
  • NBA team defense (by points)

33
Sorting Order
  • Team defense
  • 90.0 Bulls
  • 90.3 Heat
  • 91.0 Knicks
  • 98.9 76ers
  • Sorted in ascending order
  • Individual Scoring
  • 31.0 Jordan
  • 28.7 Malone
  • 27.9 ONeill
  • 0.3 Bricklayer
  • Sorted in descending order

34
Sorting in Arrays
  • Data sorted usually same type, sorted in array
  • A A
  • 6 1
  • 4 4
  • 8 6
  • 10 8
  • 1 10
  • before after
  • sort sort

35
Selection Sorting
  • One approach (N is elements in array)
  • 1. Find smallest value in A and swap with A0
  • 2. Find smallest value in A1 .. AN-1 and swap
    with A1
  • 3. Find smallest value in A2 .. AN-1 and swap
    with A2
  • 4. Continue through AN-2

36
Selection Sort Example
  • A A
  • 6 1
  • 4 Find smallest 4
  • 8 and swap 8
  • 10 with A0 10
  • 1 6
  • A A
  • 1 1
  • 4 Find 2nd 4
  • 8 smallest and 8
  • 10 swap with A1 10
  • 6 6
  • A A
  • 1 1
  • 4 Find 3rd 4
  • 8 smallest and 6
  • 10 swap with A2 10
  • 6 8
  • A A
  • 1 1
  • 4 Find 4th 4
  • 6 smallest and 6
  • 10 swap with A3 8
  • 8 10

37
Selection Sort Notes
  • If array has N elements, process of finding
    smallest repeated N-1 times (outer loop)
  • Each iteration requires search for smallest value
    (inner loop)
  • After inner loop, two array members must be
    swapped
  • Can search for largest member to get
    descending-order sort

38
Selection Sort Algorithm
  • For J is 0 to N-2
  • Find smallest value in AJ, AJ1 .. AN-1
  • Store subscript of smallest in Index
  • Swap AJ and AIndex
  • Find smallest in AJ..N-1
  • Suppose J is 0
  • Smallest A0
  • for (K 1 K lt N K)
  • if (AK lt Smallest)
  • Smallest AK
  • A K Smallest
  • 6 6
  • 4 1 4
  • 8 2
  • 10 3
  • 1 4 1
  • But we need location of smallest, not its value
    to swap

39
Selection Sort Algorithm
  • Find location of smallest rather than value
  • SmallAt 0
  • for (K 1 K lt N K)
  • if (AK lt ASmallAt)
  • SmallAt K
  • Swapping two elements
  • Temp AJ
  • AJ ASmallAt
  • ASmallAt Temp
  • J is 0, find smallest
  • A K SmallAt
  • 6 0
  • 4 1 1
  • 8 2
  • 10 3
  • 1 4 4
  • Swap ASmallAt,A0

40
Code for Selection Sort
  • for (J 0 J lt N-1 J) / 1 /
  • SmallAt J / 2 /
  • for (K J1 K lt N K) / 3 /
  • if (AK lt ASmallAt) / 4 /
  • SmallAt K / 5 /
  • Temp AJ / 6 /
  • AJ ASmallAt / 7 /
  • ASmallAt Temp / 8 /

41
Selection Sort Example
  • S J K Sml Effect
  • 1 0 Start outer
  • 2 0 Init SmallAt
  • 3 1 Start inner
  • 4 True, do 5
  • 5 1 Update SmallAt
  • 3 2 Repeat inner
  • 4 False, skip 5
  • 3 3 Repeat inner
  • 4 False, skip 5
  • 3 4 Repeat inner
  • 4 True, do 5
  • 5 4 Update SmallAt
  • 6-8 Swap A0,A4
  • 1 1 Repeat outer
  • 2 1 Init SmallAt
  • 3 2 Start inner
  • 4 False, skip 5
  • 3 3 Repeat inner
  • S J K Sml Effect
  • 4 False, skip 5
  • 3 4 Repeat inner
  • 4 False, skip 5
  • 6-8 Swap A1,A1
  • 1 2 Repeat outer
  • 2 2 Init SmallAt
  • 3 3 Start inner
  • 4 False, skip 5
  • 3 4 Repeat inner
  • 4 True, do 5
  • 5 4 Update SmallAt
  • 6-8 Swap A2,A4
  • 1 3 Repeat outer
  • 2 3 Init SmallAt
  • 3 4 Start inner
  • 4 True, do 5
  • 5 4 Update SmallAt
  • 6-8 Swap A3,A4

42
Modularizing Sort
  • Want to make sort more readable
  • Also, make sort a separate function
  • First make Swap a separate function
  • Have to pass array elements as reference params
  • void Swap(int n1, int n2)
  • int temp
  • temp n1
  • n1 n2
  • n2 temp
  • for (J 0 J lt N-1 J)
  • SmallAt J
  • for (K J1 K lt N K)
  • if (AK lt ASmallAt)
  • SmallAt K
  • Swap((AJ),(ASmallAt))

43
Modularizing Sort - Find Smallest
  • Can make process of finding smallest a separate
    function
  • Sort becomes
  • for (J 0 J lt N-1 J)
  • SmallAt
  • findSmallest(A,J,N)
  • Swap((AJ),
  • (ASmallAt))
  • Note whole array passed
  • int findSmallest(
  • int Aname, int J, int N)
  • int MinI J
  • int K
  • for (K J1 K lt N K)
  • if (AnameK lt
  • AnameMinI)
  • MinI K
  • return MinI

44
Modularizing Sort Itself
  • Can then make the sort routine itself a function
  • Localize variables such as J, SmallAt in function
  • Pass N only if different from size of array
  • void sort(int A, int N)
  • int J
  • int SmallAt
  • for (J 0 J lt N-1 J)
  • SmallAt
  • findSmallest(A,J,N)
  • Swap((AJ),
  • (ASmallAt))

45
Another Sort Insertion
  • Idea sort like a hand of cards
  • Algorithm
  • Assume A0 .. A0 is sorted segment
  • Insert A1 into sorted segment A0 .. 0
  • Insert A2 into sorted segment A0 .. 1
  • Insert A3 into sorted segment A0 .. 2
  • continue until AN-1 inserted

46
Inserting into Sorted Segment
47
Insertion Sort Code
  • void insertIntoSegment(int Aname, int J)
  • int K
  • int temp AnameJ
  • for (K J (K gt 0) (AnameK-1 gt temp)
    K--)
  • AnameK AnameK-1
  • AnameK temp
  • void sort(int A, int N)
  • int J
  • for (J 1 J lt N J)
  • insertIntoSegment(A,J)

48
Searching Arrays
  • Prob Search array A (size N) for value Num
  • Example
  • search array for a particular student score
  • A N
  • 6 5
  • 4
  • 8 Num
  • 10 8
  • 1
  • Sequential search start at beginning of array,
    examine each element in turn until desired value
    found

49
Sequential Search
  • Uses
  • event-controlled loop
  • must not search past end of array
  • Code
  • index 0 / 1 /
  • while ((index lt N) (Aindex ! Num)) / 2 /
  • index / 3 /
  • When loop finishes either
  • index is location of value or
  • index is N
  • Test
  • if (index lt N) / 4 /
  • printf(Found at d\n,index) / 5 /
  • else
  • printf(Not found\n) / 6 /

50
Sequential Search Example
  • A N
  • 6 5
  • 4
  • 8 Num
  • 10 8
  • 1
  • S Num N index effect
  • 8 5
  • 1 0 init index
  • 2 true, do 3
  • 3 1 inc index
  • 2 true, do 3
  • 3 2 inc index
  • 2 false, exit
  • 4 true, do 5
  • 5 print

51
Sequential Search Example
  • S Num N index effect
  • 5 5
  • 1 0 init index
  • 2 true, do 3
  • 3 1 inc index
  • 2 true, do 3
  • 3 2 inc index
  • 2 true, do 3
  • 3 3 inc index
  • 2 true, do 3
  • 3 4 inc index
  • 2 true, do 3
  • 3 5 inc index
  • 2 false, exit
  • 4 false, do 6
  • 6 print
  • A N
  • 6 5
  • 4
  • 8 Num
  • 10 5
  • 1

52
Sequential Search (Sorted)
  • index 0 / 1 /
  • while ((index lt N) (Aindex lt Num)) / 2 /
  • index / 3 /
  • if ((index lt N) (Aindex Num)) / 4 /
  • printf(Found at d\n,index) / 5 /
  • else
  • printf(Not found\n) / 6 /
  • Can stop either when value found or a value
    larger than the value being searched for is found
  • While loop may stop before index reaches N even
    when not found (need to check)

53
Sorted Sequential Search Example
  • A N
  • 1 5
  • 4
  • 6 Num
  • 8 5
  • 10
  • S Num N index effect
  • 5 5
  • 1 0 init index
  • 2 true, do 3
  • 3 1 inc index
  • 2 true, do 3
  • 3 2 inc index
  • 2 false, exit
  • 4 false, do 6
  • 6 print
  • Can do better when sorted

54
Binary Search
  • Example when looking up name in phone book,
    dont search start to end
  • Another approach
  • Open book in middle
  • Determine if name in left or right half
  • Open that half to its middle
  • Determine if name in left or right of that half
  • Continue process until name is found (or not)

55
Code for Binary Search
  • first 0
  • last N - 1
  • mid (first last) / 2
  • while ((Amid ! num) (first lt last))
  • if (Amid gt num)
  • last mid - 1
  • else
  • first mid 1
  • mid (first last) / 2

56
Binary Search Example
  • 0 4 0 first Num 101
  • 1 7
  • 2 19
  • 3 25
  • 4 36
  • 5 37
  • 6 50 6 mid
  • 7 100 7 first 7 first
  • 8 101 8 mid -- found
  • 9 205 9 last
  • 10 220 10 mid
  • 11 271
  • 12 306
  • 13 321 13 last 13 last

57
Binary Search Example
  • 0 4 0 first Num 53
  • 1 7
  • 2 19
  • 3 25
  • 4 36
  • 5 37
  • 6 50 6 mid 6
    last
  • 7 100 7 first 7 first 7 first, 7
    first
  • 8 101 8 mid last,
  • 9 205 9 last mid
  • 10 220 10 mid
  • 11 271
  • 12 306
  • 13 321 13 last 13 last

58
2-Dimensional Array Declaration
  • Syntax BaseType NameIntLit1IntLit2
  • Examples
  • int Scores10010 / 100 x 10 set of scores /
  • char Maze55 / 5 x 5 matrix of chars
    for Maze /
  • float FloatM34 / 3 x 4 matrix of floats /

59
2D Array Element Reference
  • Syntax NameintExpr1intExpr2
  • Expressions are used for the two dimensions in
    that order
  • Values used as subscripts must be legal for each
    dimension
  • Each location referenced can be treated as
    variable of that type
  • Example Maze32 is a character

60
2D Array Initialization
  • 2D arrays can also be initialized
  • Syntax
  • BaseType NameDim1Dim2 val0, val1, val2,
    val3, val4,
  • values are used to initialize first row of
    matrix, second row, etc.
  • BaseType NameDim1Dim2
  • val0-0, val0-1, val0-2, / first row /
  • val1-0, val1-1, val1-2, / second row /

61
Processing 2D Arrays
  • Use nested loops to process 2D array
  • Type NameDim1Dim2
  • for (J 0 J lt Dim1 J)
  • for (K 0 K lt Dim2 K)
  • process NameJK
  • Example print 5x5 Maze
  • for (J 0 J lt 5 J)
  • for (K 0 K lt 5 K)
  • printf(c,MazeJK
  • printf(\n)

62
2D Example
  • int Scores10010 / 10 scores - 100 students
    /
  • int J
  • int K
  • for (J 0 J lt 100 J)
  • printf(Enter 10 scores for student d ,J)
  • for (K 0 K lt 10 K)
  • scanf(d,(ScoresJK))

63
Passing 2D Array Parameters
  • A single value can be passed as either a value or
    as a reference parameter
  • 2D array may be passed by reference using name,
    syntax of parameter
  • Type ParamNameDim2
  • Dim2 must be the same literal constant used in
    declaring array
  • Each row of 2D array may be passed as a 1D array

64
Passing Element of Array
  • int Scores10010 / 10 scores - 100 students
    /
  • int J
  • int K
  • void readScore(int score)
  • scanf(d,score)
  • for (J 0 J lt 100 J)
  • printf(Enter 10 scores for student d ,J)
  • for (K 0 K lt 10 K)
  • readScore((ScoresJK))

65
Passing Row of Array
  • int Scores10010 / 10 scores - 100 students
    /
  • int J
  • void readScore(int score)
  • scanf(d,score)
  • void readStudent(int Sscores, int Snum)
  • int K
  • printf(Enter 10 scores for student d
    ,Snum)
  • for (K 0 K lt 10 K)
  • readScore((SscoresK))
  • for (J 0 J lt 100 J)
  • readStudent(ScoresJ,J)

66
Passing Entire Array
  • int Scores10010 / 10 scores - 100 students
    /
  • void readScore(int score)
  • scanf(d,score)
  • void readStudent(int Sscores, int Snum)
  • int K
  • printf(Enter 10 scores for student d
    ,Snum)
  • for (K 0 K lt 10 K)
  • readScore((SscoresK))
  • void readStudents(int Ascores10)
  • int J
  • for (J 0 J lt 100 J)
  • readStudent(AscoresJ,J)

67
2D Array Example
  • int Scores10010 / 10 scores - 100 students
    /
  • int totalStudent(int Sscores)
  • int J
  • int total 0
  • for (J 0 J lt 10 J)
  • total SscoresJ
  • return total
  • float averageStudents(int Ascores10)
  • int J
  • int total 0
  • for (J 0 J lt 100 J)
  • total totalStudent(AscoresJ)
  • return (float) total / 100

68
Multi-Dimensional Array Declaration
  • Syntax
  • BaseType NameIntLit1IntLit2IntLit3...
  • One constant for each dimension
  • Can have as many dimensions as desired
  • Examples
  • int Ppoints100256256 / 3D array /
  • float TimeVolData100256256256
  • / 4D array /

69
Multi-Dim Array Reference
  • To refer to an element of multi-dimensional array
    use one expression for each dimension
  • syntax
  • NameExpr1Expr2Expr3 / 3D /
  • NameExpr1Expr2Expr3Expr4 / 4D /
  • etc.
  • First expression - first dimension, 2nd
    expression - 2nd dimension, etc.
  • C does not check dimensions
Write a Comment
User Comments (0)