Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
4 views

Chapter 03 Array and String

Chapter 8 covers arrays and strings in C++, including their declaration, manipulation, and common operations such as searching and sorting. It discusses one-dimensional, two-dimensional, and multidimensional arrays, as well as C-strings and their functions. The chapter also highlights important concepts like array bounds, passing arrays to functions, and the use of string types.

Uploaded by

samigulzar178
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Chapter 03 Array and String

Chapter 8 covers arrays and strings in C++, including their declaration, manipulation, and common operations such as searching and sorting. It discusses one-dimensional, two-dimensional, and multidimensional arrays, as well as C-strings and their functions. The chapter also highlights important concepts like array bounds, passing arrays to functions, and the use of string types.

Uploaded by

samigulzar178
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

Chapter 8

Arrays and Strings


‫ﻧظم‬/‫ درﺻف آوردن‬/‫آراﺳﺗن‬

‫ﺳﻠﺳﻠﮫ‬
Objectives
• In this chapter, you will:
– Learn about arrays
– Declare and manipulate data into arrays
– Learn about “array index out of bounds”
– Learn about the restrictions on array processing
– Pass an array as a parameter to a function
– Search and sort an array

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 2


Objectives (cont’d.)
• In this chapter, you will (cont’d.):
– Learn about C-strings
– Use string functions to process C-strings
– Input data into—and output data from—a C-string
– Learn about parallel arrays
– Manipulate data in a two-dimensional array
– Learn about multidimensional arrays

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 3


Introduction
• Simple data type: variables of these types can
store only one value at a time
• Structured data type: a data type in which
each data item is a collection of other data
items

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 4


Arrays
• Array: a collection of a fixed number of
components, all of the same data type
• One-dimensional array: components are
arranged in a list form
• Syntax for declaring a one-dimensional array:

• intExp: any constant expression that


evaluates to a positive integer
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 5
Accessing Array Components
• General syntax:

• indexExp: called the index


– An expression with a nonnegative integer value
• Value of the index is the position of the item
in the array
• []: array subscripting operator
– Array index always starts at 0
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 6
Accessing Array Components
(cont’d.)

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 7


Accessing Array Components
(cont’d.)

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8


Processing One-Dimensional
Arrays
• Basic operations on a one-dimensional array:
– Initializing
– Inputting data
– Outputting data stored in an array
– Finding the largest and/or smallest element
• Each operation requires ability to step through
elements of the array
– Easily accomplished by a loop

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9


Processing One-Dimensional
Arrays (cont’d.)
• Given the declaration:
int list[100]; //array of size 100
int i;
• Use a for loop to access array elements:
for (i = 0; i < 100; i++) //Line 1
cin >> list[i]; //Line 2

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 10


Array Index Out of Bounds
• Index of an array is in bounds if the index is
>=0 and <= ARRAY_SIZE-1
– Otherwise, the index is out of bounds
• In C++, there is no guard against indices that ‫ﺷﺎﺧص‬. ‫ ﻧﻣﺎ‬.‫راھﻧﻣﺎ‬

are out of bounds

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 11


Array Initialization During
Declaration
• Arrays can be initialized during declaration
– Values are placed between curly braces
– Size determined by the number of initial values in
the braces
• Example:
double sales[] = {12.25, 32.50, 16.90,
23, 45.68};

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 12


Partial Initialization of Arrays
During Declaration
• The statement:
int list[10] = {0};
– Declares an array of 10 components and initializes
all of them to zero
• The statement:
int list[10] = {8, 5, 12};
– Declares an array of 10 components and initializes
list[0] to 8, list[1] to 5, list[2] to 12
– All other components are initialized to 0
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 13
‫ﻣﺣدودﯾت‬

Some Restrictions on Array


Processing
• Aggregate operation: any operation that
manipulates the entire array as a single unit
– Not allowed on arrays in C++
• Example:

• Solution:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 14


Arrays as Parameters to Functions
• Arrays are passed by reference only
• Do not use symbol & when declaring an array
as a formal parameter
• Size of the array is usually omitted
– If provided, it is ignored by the compiler
• Example:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 15


Constant Arrays
as Formal Parameters
• Can prevent a function from changing the
actual parameter when passed by reference
– Use const in the declaration of the formal
parameter
• Example:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 16


Base Address of an Array and
Array in Computer Memory
• Base address of an array: address (memory
location) of the first array component
• Example:
– If list is a one-dimensional array, its base
address is the address of list[0]
• When an array is passed as a parameter, the
base address of the actual array is passed to
the formal parameter

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 17


Functions Cannot Return a Value
of the Type Array
• C++ does not allow functions to return a value
of type array

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 18


Integral Data Type
and Array Indices ‫ﺷﺎﺧص ھﺎی‬

• C++ allows any integral type to be used as an


array index ‫ﺷﺎﺧص‬

– Improves code readability


• Example:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 19


Other Ways to Declare Arrays
• Examples:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 20


Searching an Array
for a Specific Item
• Sequential search (or linear search):
– Searching a list for a given item, starting from the
first array element
– Compare each element in the array with value
being searched for
– Continue the search until item is found or no more
data is left in the list

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 21


Selection Sort
• Selection sort: rearrange the list by selecting
an element and moving it to its proper
position
• Steps:
– Find the smallest element in the unsorted portion
of the list
– Move it to the top of the unsorted portion by
swapping with the element currently there
– Start again with the rest of the list
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 22
Selection Sort (cont’d.)

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 23


C-Strings (Character Arrays)
• Character array: an array whose components
are of type char
• C-strings are null-terminated ('\0‘)
character arrays
• Example:
– 'A' is the character A
– "A" is the C-string A
– "A" represents two characters, 'A' and '\0‘

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 24


C-Strings (Character Arrays)
(cont’d.)
• Example:
char name[16];
• Since C-strings are null terminated and name
has 16 components, the largest string it can
store has 15 characters
• If you store a string whose length is less than
the array size, the last components are unused

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 25


C-Strings (Character Arrays)
(cont’d.)
• Size of an array can be omitted if the array is
initialized during declaration
• Example:
char name[] = "John";
– Declares an array of length 5 and stores the C-
string "John" in it
• Useful string manipulation functions
– strcpy, strcmp, and strlen

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 26


String Comparison
• C-strings are compared character by character
using the collating sequence of the system
– Use the function strcmp
• If using the ASCII character set:
– "Air" < "Boat"
– "Air" < "An"
– "Bill" < "Billy"
– "Hello" < "hello"

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 27


Reading and Writing Strings
• Most rules for arrays also apply to C-strings
(which are character arrays)
• Aggregate operations, such as assignment and
comparison, are not allowed on arrays
• C++ does allow aggregate operations for the
input and output of C-strings

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 28


String Input
• Example:
cin >> name;
– Stores the next input C-string into name
• To read strings with blanks, use get function:
cin.get(str, m+1);
– Stores the next m characters into str but the
newline character is not stored in str
– If input string has fewer than m characters, reading
stops at the newline character
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 29
String Output
• Example:
cout << name;
– Outputs the content of name on the screen
– << continues to write the contents of name until it
finds the null character
– If name does not contain the null character, then
strange output may occur
• << continues to output data from memory adjacent to
name until a '\0' is found

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 30


Specifying Input/Output Files at
Execution Time
• User can specify the name of an input and/or
output file at execution time:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 31


string Type
and Input/Output Files
• Argument to the open function must be a null-
terminated string (a C-string)
– If using a string variable for the name of an I/O
file, the value must first be converted to a C-string
before calling open
– Use the c_str function to convert
• Syntax:
strVar.c_str()
– Where strVar is a variable of type string
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 32
Parallel Arrays
• Two (or more) arrays are called parallel if their
corresponding components hold related
information
• Example:
int studentId[50];
char courseGrade[50];

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 33


Two- and Multidimensional Arrays
• Two-dimensional array: collection of a fixed
number of components (of the same type)
arranged in two dimensions
– Sometimes called matrices or tables
• Declaration syntax:

– intExp1 and intExp2 are expressions with


positive integer values specifying the number of
rows and columns in the array
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 34
Accessing Array Components
• Accessing components in a two-dimensional
array:

– Where indexExp1 and indexExp2 are


expressions with positive integer values, and
specify the row and column position
• Example:
sales[5][3] = 25.75;

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 35


Accessing Array Components
(cont’d.)

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 36


Two-Dimensional Array
Initialization During Declaration
• Two-dimensional arrays can be initialized
when they are declared:
– Elements of each row are enclosed within braces
and separated by commas
– All rows are enclosed within braces
– For number arrays, unspecified elements are set
to 0

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 37


Two-Dimensional Arrays and
Enumeration Types
• Enumeration types can be used for array
indices:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 38


Processing Two-Dimensional
Arrays
• Ways to process a two-dimensional array:
– Process entire array
– Row processing: process a single row at a time
– Column processing: process a single column at a
time
• Each row and each column of a two-
dimensional array is a one-dimensional array
– To process, use algorithms similar to processing
one-dimensional arrays
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 39
Initialization
• Examples:
– To initialize row number 4 (fifth row) to 0:

– To initialize the entire matrix to 0:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 40


Print
• Use a nested loop to output the components
of a two dimensional array:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 41


Input
• Examples:
– To input into row number 4 (fifth row):

– To input data into each component of matrix:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 42


Sum by Row
• Example:
– To find the sum of row number 4:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 43


Sum by Column
• Example:
– To find the sum of each individual column:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 44


Largest Element in Each Row
and Each Column
• Example:
– To find the largest element in each row:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 45


Passing Two-Dimensional Arrays
as Parameters to Functions
• Two-dimensional arrays are passed by
reference as parameters to a function
– Base address is passed to formal parameter
• Two-dimensional arrays are stored in row
order
• When declaring a two-dimensional array as a
formal parameter, can omit size of first
dimension, but not the second

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 46


Arrays of Strings
• Strings in C++ can be manipulated using either
the data type string or character arrays (C-
strings)
• On some compilers, the data type string
may not be available in Standard C++ (i.e.,
non-ANSI/ISO Standard C++)

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 47


Arrays of Strings
and the string Type
• To declare an array of 100 components of type
string:
string list[100];
• Basic operations, such as assignment,
comparison, and input/output, can be
performed on values of the string type
• The data in list can be processed just like
any one-dimensional array

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 48


Arrays of Strings and C-Strings
(Character Arrays)

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 49


Another Way to Declare
a Two-Dimensional Array
• Can use typedef to define a two-dimensional
array data type:

• To declare an array of 20 rows and 10


columns:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 50


Multidimensional Arrays
• n-dimensional array: collection of a fixed
number of elements arranged in n dimensions
(n >= 1)
• Declaration syntax:

• To access a component:

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 51


Summary
• Array: structured data type with a fixed
number of components of the same type
– Components are accessed using their relative
positions in the array
• Elements of a one-dimensional array are
arranged in the form of a list
• An array index can be any expression that
evaluates to a nonnegative integer
– Must always be less than the size of the array
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 52
Summary (cont’d.)
• The base address of an array is the address of
the first array component
• When passing an array as an actual parameter,
use only its name
– Passed by reference only
• A function cannot return an array type value
• In C++, C-strings are null terminated and are
stored in character arrays
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 53
Summary (cont’d.)
• Commonly used C-string manipulation
functions include:
– strcpy, strcmp, and strlen
• Parallel arrays are used to hold related
information
• In a two-dimensional array, the elements are
arranged in a table form

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 54


Summary (cont’d.)
• To access an element of a two-dimensional
array, you need a pair of indices:
– One for row position, one for column position
• In row processing, a two-dimensional array is
processed one row at a time
• In column processing, a two-dimensional array
is processed one column at a time

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 55

You might also like