Top Banner

of 38

Lec15_16_ Arrays

Apr 04, 2018

Download

Documents

Maryam Kausar
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 7/30/2019 Lec15_16_ Arrays

    1/38

    Arrays

    Sorting Array

    Multi-dimension Arrays

  • 7/30/2019 Lec15_16_ Arrays

    2/38

    2

    Arrays

    Structures of related data items

    Static entity (same size throughout program)

  • 7/30/2019 Lec15_16_ Arrays

    3/38

    3

    Array

    Consecutive group of memory locations

    Same name and type (int, char, etc.)

    To refer to an element Specify array name and position number (index)

    Format: arrayname[ position number ]

    First element at position 0

    N-element array cc[ 0 ], c[ 1 ] c[ n - 1 ]

    Nth element as position N-1

  • 7/30/2019 Lec15_16_ Arrays

    4/38

    4

    Array elements like other variables

    Assignment, printing for an integer array cc[ 0 ] = 3;

    cout

  • 7/30/2019 Lec15_16_ Arrays

    5/38

    5

    c[6]

    -45

    6

    0

    72

    1543

    -89

    0

    62

    -3

    1

    6453

    78

    Name of array (Notethat all elements of

    this array have the

    same name, c)

    c[0]

    c[1]

    c[2]

    c[3]

    c[11]

    c[10]

    c[9]

    c[8]

    c[7]

    c[5]

    c[4]

    Position number of the

    element within array c

  • 7/30/2019 Lec15_16_ Arrays

    6/38

    6

    When declaring arrays, specify

    Name

    Type of array

    Any data type Number of elements

    type arrayName[arraySize ];int c[ 10 ]; // array of 10 integers

    float d[ 3284 ]; // array of 3284 floats

    Declaring multiple arrays of same type

    Use comma separated list, like regular variablesint b[ 100 ], x[ 27 ];

  • 7/30/2019 Lec15_16_ Arrays

    7/387

    Initializing arrays

    For loop

    Set each element

    Initializer list Specify each element when array declared

    int n[ 5 ] = { 1, 2, 3, 4, 5 };

    If not enough initializers, rightmost elements 0

    If too many syntax error

    If array size omitted, initializers determine sizeint n[] = { 1, 2, 3, 4, 5 };

    5 initializers, therefore 5 element array

  • 7/30/2019 Lec15_16_ Arrays

    8/38

    1 // code 1

    2 // Initializing an array.

    3 #include

    4

    5 using std::cout;

    6 using std::endl;

    7

    8 #include

    9

    10 using std::setw;

    11

    12 int main()

    13 {

    14 int n[ 10 ]; // n is an array of 10 integers

    15

    16 // initialize elements of array n to 0

    17 for ( int i = 0; i < 10; i++ )

    18 n[ i ] = 0; // set element at location i to 0

    19

    20 cout

  • 7/30/2019 Lec15_16_ Arrays

    9/38

    1 // code 2

    2 // Initializing an array with a declaration.

    3 #include

    4

    5 using std::cout;

    6 using std::endl;

    7

    8 #include 9

    10 using std::setw;

    11

    12 int main()

    13 {

    14 // use initializer list to initialize array n

    15int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 };

    16

    17 cout

  • 7/30/2019 Lec15_16_ Arrays

    10/3810

    Array size

    Can be specified with constant variable (const)

    const int size = 20;

    Constants cannot be changed Constants must be initialized when declared

    Also called named constants or read-only

    variables

  • 7/30/2019 Lec15_16_ Arrays

    11/38

    Write a C++ program that displays even

    integers from 2-20

    Using arrays

    1-11

    1 // d 3

  • 7/30/2019 Lec15_16_ Arrays

    12/38

    1 // code 3

    2 // Initialize array s to the even integers from 2 to 20.

    3 #include

    4 using std::cout;

    5 using std::endl;

    6 #include

    7 using std::setw;

    8

    9 int main()

    10 {

    11 // constant variable can be used to specify array size

    12 const intarraySize = 10;

    13

    14 int s[ arraySize ]; // array s has 10 elements

    15

    16 for ( int i = 0; i < arraySize; i++ ) // set the values

    17 s[ i ] = 2 + 2 * i;

    18

    19 cout

  • 7/30/2019 Lec15_16_ Arrays

    13/38

    Write a C++ program that calculates the sum

    of

    1, 2, 3, 4, 5, 6, 7, 8, 9, 10

    Using array

    1-13

    1 // code 6

  • 7/30/2019 Lec15_16_ Arrays

    14/38

    1 // code 6

    2 // Compute the sum of the elements of the array.

    3 #include

    4

    5 using std::cout;

    6 using std::endl;

    7

    8 int main()

    9 {

    10 const intarraySize = 10;

    11

    12 int a[ arraySize ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    13

    14 int total = 0;

    15

    16 // sum contents of array a

    17 for ( int i = 0; i < arraySize; i++ )

    18 total += a[ i ];

    19

    20 cout

  • 7/30/2019 Lec15_16_ Arrays

    15/38

    Write a C++ program that prints the following

    using arrays

    1-15

    Element Value Histogram

    0 19 *******************

    1 3 ***

    2 15 ***************

    3 7 *******

    4 11 ***********

    5 9 *********

    6 13 *************

    7 5 *****

    8 17 *****************

    9 1 *

    1 // code 7

  • 7/30/2019 Lec15_16_ Arrays

    16/38

    1 // code 7

    2 // Histogram printing program.

    3 #include

    4

    5 using std::cout;

    6 using std::endl;

    7

    8#include

    9

    10 using std::setw;

    11

    12 int main()

    13 {

    14 const intarraySize = 10;

    15 int n[ arraySize ] = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 };

    16

    17 cout

  • 7/30/2019 Lec15_16_ Arrays

    17/38

    Suppose a dice has been rolled 6000 times.

    Determine how many times it showed

    1 dot

    2 dots 3 dots

    4 dots

    5 dots

    6 dots

    1-17

    1 // code 8

  • 7/30/2019 Lec15_16_ Arrays

    18/38

    1 // code 8

    2 // Roll a six-sided die 6000 times.

    3 #include

    4

    5 using std::cout;

    6 using std::endl;

    7

    8#include

    9

    10 using std::setw;

    11

    12 #include

    13 #include

    14

    15 int main()

    16 {

    17 const intarraySize = 7;

    18 int frequency[ arraySize ] = { 0 };

    19

    20 srand( time( 0 ) ); // seed random-number generator

    21

    22 // roll die 6000 times

    23 for ( int roll = 1; roll

  • 7/30/2019 Lec15_16_ Arrays

    19/3819

    Strings

    Arrays of characters

    All strings end with null ('\0')

    Examples char string1[] = "hello";

    Null character implicitly added

    string1 has 6 elements

    char string1[] = { 'h', 'e', 'l', 'l',

    'o', '\0 }; Subscripting is the same

    String1[ 0 ] is 'h'

    string1[ 2 ] is 'l'

  • 7/30/2019 Lec15_16_ Arrays

    20/38

    20

    Input from keyboardchar string2[ 10 ];

    cin >> string2;

    Puts user input in string

    Stops at first whitespace character Adds null character

    If too much text entered, data written beyondarray We want to avoid this

    Printing strings cout

  • 7/30/2019 Lec15_16_ Arrays

    21/38

    code 0

    2 // Treating character arrays as strings.

    3 #include

    4 using std::cout;

    5 using std::cin;

    6 using std::endl;

    7 int main()

    8 {

    9 char string1[ 20 ], // reserves 20 characters

    10 char string2[] = "string literal"; // reserves 15 characters

    11

    12 // read string from user into array string2

    13 cout > string1; // reads "hello" [space terminates input]

    1516 // output strings

    17 cout

  • 7/30/2019 Lec15_16_ Arrays

    22/38

    22

    Sorting data

    Important computing application

    Virtually every organization must sort some data

    Massive amounts must be sorted

    Bubble sort (sinking sort)

    Several passes through the array

    Successive pairs of elements are compared

    If increasing order (or identical), no change If decreasing order, elements exchanged

    Repeat these steps for every element

  • 7/30/2019 Lec15_16_ Arrays

    23/38

    23

    Example: Go left to right, and exchange elements as

    necessary One pass for each element

    Original: 3 4 2 7 6 Pass 1: 3 2 4 6 7 (elements exchanged)

    Pass 2: 2 3 4 6 7

    Pass 3: 2 3 4 6 7 (no changes needed)

    Pass 4: 2 3 4 6 7

    Small elements "bubble" to the top (like 2 in thisexample)

  • 7/30/2019 Lec15_16_ Arrays

    24/38

    24

    Swapping variablesint x = 3, y = 4;

    y = x;

    x = y;

    What happened? Both x and y are 3!

    Need a temporary variable

    Solutionint x = 3, y = 4, temp = 0;

    temp = x; // temp gets 3

    x = y; // x gets 4

    y = temp; // y gets 3

    1 // This program sorts an array's values into ascending order.

  • 7/30/2019 Lec15_16_ Arrays

    25/38

    2 #include

    3 using std::cout;

    4 using std::endl;

    5 #include

    6

    7 int main()

    8 {

    9 const intarraySize = 10; // size of array a

    10 int a[ arraySize ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 };

    11 int hold; // temporary location used to swap array elements

    12

    13 cout

  • 7/30/2019 Lec15_16_ Arrays

    26/38

    26

    Search array for a key value

    Linear search

    Compare each element of array with key value

    Start at one end, go to other Useful for small and unsorted arrays

    Inefficient

    If search key not present, examines every element

    1 // Linear search of an array.

  • 7/30/2019 Lec15_16_ Arrays

    27/38

    3 #include

    5 using std::cout;

    6 using std::cin;

    7 using std::endl;

    11 int main()

    12 {

    13 const intarraySize = 100; // size of array a

    14 int a[ arraySize ]; // create array a

    15 int searchKey; // value to locate in a

    16

    17 for ( int i = 0; i < arraySize; i++ ) // create some data

    18 a[ i ] = 2 * i;

    20 cout > searchKey;

    22

    23 // attempt to locate searchKey in array a

    25 if( a[ i ] == searchkey )

    28 cout

  • 7/30/2019 Lec15_16_ Arrays

    28/38

    28

    Binary search

    Only used with sorted arrays

    Compare middle element with key

    If equal, match found

    If key < middle

    Repeat search on first half of array

    If key > middle

    Repeat search on last half

    Very fast At most log2N steps, where N is the # of elements

    30 element array takes at most 5 steps

    2 > 30

  • 7/30/2019 Lec15_16_ Arrays

    29/38

    29

    Multiple subscripts

    a[ i ][ j ]

    Tables with rows and columns

    Specify row, then column Array of arrays

    a[0] is an array of 4 elements

    a[0][0] is the first element of that array

    Row 0

    Row 1

    Row 2

    Column 0 Column 1 Column 2 Column 3

    a[ 0 ][ 0 ]

    a[ 1 ][ 0 ]

    a[ 2 ][ 0 ]

    a[ 0 ][ 1 ]

    a[ 1 ][ 1 ]

    a[ 2 ][ 1 ]

    a[ 0 ][ 2 ]

    a[ 1 ][ 2 ]

    a[ 2 ][ 2 ]

    a[ 0 ][ 3 ]

    a[ 1 ][ 3 ]

    a[ 2 ][ 3 ]

    Row subscript

    Array name

    Column subscript

  • 7/30/2019 Lec15_16_ Arrays

    30/38

    30

    To initialize

    Default of0

    Initializers grouped by row in braces

    int b[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } };

    int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } };

    1 2

    3 4

    1 0

    3 4

    Row 0 Row 1

  • 7/30/2019 Lec15_16_ Arrays

    31/38

    31

    Referenced like normalcout

  • 7/30/2019 Lec15_16_ Arrays

    32/38

    2 // Initializing multidimensional arrays.

    3 #include

    4

    5 using std::cout;

    6 using std::endl;

    7

    8 9 int main()

    10 {

    11 int array1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } };

    12

    13

    14 cout

  • 7/30/2019 Lec15_16_ Arrays

    33/38

    1-33

  • 7/30/2019 Lec15_16_ Arrays

    34/38

    1-34

    using namespace std;

    int main()

    {

    const int size =5;

    int value[size] = (1, 2, 3);

    double junk[size];

    cout

  • 7/30/2019 Lec15_16_ Arrays

    35/38

    1-35

    #include

    usingnamespace std;

    int bill [] = {16, 2, 77, 40, 12071};

    int n, result=0;

    int main ()

    {

    for( n=0 ; n

  • 7/30/2019 Lec15_16_ Arrays

    36/38

    1-36

    #include

    using namespace std;

    int main()

    {

    const int max = 10;

    int number[max];

    int sum = 0;

    cout

  • 7/30/2019 Lec15_16_ Arrays

    37/38

    Read the entries of an array of 10 integers

    from a user. Compute x as the average of

    the 10 entries and then compute the

    average of those entries that are greater

    than or equal to x. Print this final average.

    1-37

    #i l d i t

  • 7/30/2019 Lec15_16_ Arrays

    38/38

    #include

    using namespace std;

    int main()

    {

    int a[10], c, count = 0;

    double total1 = 0, average1, total2 = 0, average2;cout a[c];

    for (c = 0; c < 10; c++) {

    total1 += a[c];

    }

    }

    average1 = total1 / 10;

    for (c = 0; c < 10; c++)

    if(a[c] >= average1)

    {

    total2 += a[c];

    count++;

    }

    average2 = total2 / count;

    cout