~
10 (50527)
{
~
x~
y
x
|
{ ~
x
|
x
zy
z
|
z
x
z
z
z
z{ |
{ ~
~
z
&
$
&
* # !
#
#
)
$
)
GO
u
/ u
r
$
3
#
r
>
*
m / < !
t
GJ
$
D
'
#
F OK
&
0
#
DS
& #
.
!
'
.
'
#
# 0
.
!
/ $
$
$ / 2 & &
#$
0v '
$
.
'
'
)
$
&
)'
% $
#
4
& 2
'
$
/ ! . '
'
'%
% 0 % 4
0
0
'
#
#$
$
! .
0v .
$
$
/
#
.
$
$
)
#
s
$
)
/
* $
! X
M
M
S
IK
CN
H
N WK
T
D
C
D
C WK
F OK
`L
F
J
IO
C
CN
L
I
S
G
n
F
OK
NO
] `I
`I
C
S
O
O
IM
C
`S
C
N
Fn
LN
K
m
q
W
E
D
`C
FN m
C WK
I WT
C
CV
IH
`C
IT
E
DO
IK
J
I
D
C
J
DS
F OK
D
JG
U
FM
D
CW
L
H
H
H
WW
Id
X `
O
IM
C
J
FO
U
FM
D
C
] `S
+
C
N
Fn
LN
G
N
EF
FO
DS
X
m
DC
K
T
K
UK
WW
G
Fo
Se
S
CO
G
S
FD O
`
C
N
Fn
LN
C
IH
T
VH
K
G
S
FO
H
WK
F OK
D
GJ
I
GS
I
N
O
m ] E
GJ
C
D
F OK D
C
FO
U
FM
D
CN
F
Ip
IW
SW
C
S
l
Bl
m
K
D
C
H
GC W
IO
S
L
C
J
D
I
FO
DS
C
`I
C
S
C
DS
F OK
D
JG
S
I
G
O
JH
F
ND
D
F OK
IJ
S MK
R
O
\
[
IN T
G
\
H
F
e
X
\
_
Fa
`
I TW
F
N
D
CT
WK
^
CB
b ] bc
b
Z
k Qj
Fi
`S
I TW
F
N
D
h
Id
MK
W
L WK
I
]+S
f e
g
IM
R
H
O
WW
I
XYH
NG
N
J
FJ
E
GC
CJ
I
CV M
FO
IO
CO
S
SK
JM
K
M
U
IH
F
SK
L
I
Z
O
P
QR
C
D
F
GL
I
S
H
CT
SK
IN M
LK
S MK
J
E
ND
I
O
IM
IN M
LK
IJ H
G
EF
D
CB
>
<
<
A
?
?
=
>
=
>
<
<>
=
@
<
A
@
?
>
@
<>
<
@
?
?
@
=
<
>
<
>
<
@
<
<
<=
=
>
=
<
A
A>
<
A
A
@
>
<
>
>
=
>?
<
=
@>
<
=
<
<
<
A=
=
@>
A
=
>
<
@
<
<
A
@
A
<
=
?
<>
<
=?
<
?
=?
=?
=
>@
>
=?
=
$
$
* )
<
<=
<>
<=
<
<=
<=
<=
;
:
6
80
2
!
"
5
9
Functions
|
UK
O
FM
'
(
%
2
&
6
0
&
"
6
%
$
$
.
# *
$
!
"
.
.5
$
'
%
& * &
7
&
& /
$
.
#0
&
%
5
$
#
)
2 $
.
$.
0
&
'
4
'3
&
&
! .
2!
$
$
$
'
!
/
2
$
.
#
&
0
#&
)
$
$
$
%
!$
)
'$
.
%
#$
( Chapter 3
x
{
.7035219
|
{~
|} x
z{
xw
zy
,
&
$
#
!
#
&
* #
#
)
.
&
0
0
0
&
.
'$
$
$
$
#
"
&
%
!
# (
$
*+)
'
!0
,
1
& $
$
+/
!
-
#
3.1 A first C++ function
&
' .
$
.
%
(
%
1
!
.
z|
x
~
{
z{
!
0
0
%
*
r
$
0
.
&
&
*
0
#$
0
&
%
&
0
$
IN
IV
F
&
CM
SO
U
I
DI O
C
GCN
n
DF
%
)
$
2
2
$
$
&
&
&
&
0
'
.
.
$
$
!$
#
#
.
/
r
$
' .
'
&
* 0
%
%
$
#
)
! .
$
#
2
..
t
s
&
0
)'
2
%
&
t
$
&
s
.
! %
)
&
$
0
#
&
&
&
2
%
!
.
'%
$
*
7
&
.
.
%
&
0
&
D
`C
$
%
K
0
&
FH
$
$
&
'%
&
$
/
r
$
* 0
Y
$ /
.
.
'
#
'%
$
&
&
&
!
2
$ $ *
%
/ 2
#
)
$
pow
/ 2
$ $
.
#
#
$
$
0 *
&
$
%
&
&
'%
$
.
.t
IN O m
C
$
0
&
$
$
#
0
! .
# s
#
)
'%
$
.
.t
I
FN m
IT
! .
# s
#
#
)
/
u
#
u
t
(
3
s
#
&
#%
$
$
( 2
0
%
#
$
$
$
&
H
v
D
C
' .
)
' % / &
'%
$
$
2
& 2
&
&
$
.
'%
!.
&
$
' .
* $
'
0 '
0 )
&
#
$
&
#
$%
L
N
.
' % FnN
C
`
$
S
CO
& IO
S
* * >
$
0
#
)'
$
)
&
&
v
$
&
0
* * .
&
&
' .
* r
/
'%
$
'
/ #
#
&
'%
$
! %
$
0
0
&
$
$
(
7
.
.
$
0
$
$
#
'
.
&
.
/
$
)
$
'
#
)
t
&
%
s
&
$.
7
&
* 0
'
$
$
0
%
)
$
.
%
/
&
* r
$
%
&
'%
$
#
)
$
)
$
!
'
&
0
0
&
0
%
&
'%
$
$
0
v
' .
$
0
2
2
&
%
&
&
&
&
.
$
0
0
.
&
F
J
S
F
L
D
O
0
HK
F OK
D
F
IJ
NL
#
'
'$
'%
$
# !
'% D
H
OK
F K
$ / D
&
0
0
&
$.
$
7
$
$
* #$
#
%
$
$
&
0
#
$
0
$
/ .
.
'
.
*
'$
7
&
$
0
%
$
1
#
& $
'%
$
'
$
'
.
2
&
'$
.
$
$
)
2
$
.
3
s
0
#
>
* &
'
0
.
! .
#
#
%
*Y0
!
$
'%
$
.
'%
$
'
/ ! .
$
#
$
#
/
7
.
&
2
$
!.
$
* $
%
$
-
2
$
$
0
/ 0
)
%
0
(
/
&
.
$
#
&
.
'
4
2
&
2
#
)
0
)
)
7
&
0
.
$
%
)
* $
$
$
(
'%
0
/ $
/
0
0
&
$
% $
#0 2
'
& & ' & $
. )
#
$
!. *
)
#
r
0 *
0
' / .
* )
Y
/ 0
'
$
.
#
$
#%
$
!
.
#
)
$
$
0
$
)
#<
>
$
$
$
#
)
pow
!
'.
-
* e
x
}z
x
$
$
3
%
'$
#$
*Y0
)'
#
&
0
$
0
.
.
$
'
'
4
#
0.
&
8
#
'
$
.
&
0
!
%
%
be = (1/b)−e
x
zy
{ ~
x
$
e
&
$
0
%
$
$
&
&
/
$
$
b = 0
z
'
$
' %
.
&
&
#$
#
$
be
y~
x
z
|
|
{ x
z
x
pow
z
'
%
$
/
$
#
#
'
)
e
z|
x
&
7
0
0
'
b
'%
$
$
$
0
&
& * 0
$
7
pow
/ $
2
&
0
$
$
&
&
0
'%
$
.
&
.
!
$
%
'%
* t
$
/
&
*
&
b=0
x
z y
$
)
#
$
'
!.
$
e
z
z
{
{
z
z
zy
# '%
$
2
'%
$
$
$
.
&
&
$
#
)
7
e
if
}
x
z y
y
xy
z{ y
x
x
$
$
0
Arithmetic pre- and postconditions.
z
#$
&
&
8
2
2
$
'
#
?
u
e
{~
x
/ .
$
(
&
double
z{
|
%
e
.
// PRE :
{~
-
#
$
/ )
$
#
)
u
b
x
"
~
x~
y
|
}
{ ~
x
x ~
~
x
zy
{
x
x
{ { ~
x
z y
}
{~
e be
0.25
2.25
5
81
-512
x
// PRE : e >= 0 || b != 0.0
// POST : return value is b^e
double pow ( double b , int e)
{
double result = 1.0;
if ( e < 0) {
// b^ e = (1/ b )^( - e)
b = 1.0/ b ;
e = - e;
}
for ( int i = 0; i < e ; ++ i ) result *= b;
return result ;
}
# include < iostream >
x
// Prog : callpow . C
// Define and call a function for computing powers .
B
e
b
b
0
/ .
&
/ .
'
&
$
&
0
X U
F
L WW
C
J
S
Fn
LN
0
'
0 *Y 0
)
*
r
7 &
#$
)
0
'
s $
$
' %
!. $
)
% $ %
$
#
* t #$
0
r '
$
& )
& .
&
. $
& ' .
'% )
$ %
$
$
'
#
%
)
$
!
. .
'
' . #
*
$
%
be
{
2
-
b
&
$
#
)
0
&
outputs
outputs
outputs
outputs
outputs
7
'$
!
//
//
//
//
//
pow
*
.
$
$
$
2
& )
'
&
'%
$
$
)
%
pow ( 2.0 , -2) < < "\n " ;
pow ( 1.5 , 2) < < "\n " ;
pow ( 5.0 , 1) < < "\n " ;
pow ( 3.0 , 4) < < "\n " ;
pow ( -2.0 , 9) < < "\n " ;
*
e
#0
$
.
$ )
%
&
-
2
$
$
Program 17:
$.
2
$
<<
<<
<<
<<
<<
2
)
int main ()
{
std :: cout
std :: cout
std :: cout
std :: cout
std :: cout
%
#$
0
$
e
main
for
3.1.1 Pre- and postconditions
e >= 0 || b != 0.0
// POST : return value is b^e
return 0;
<
&
$ '
$
&
%
&
2
2
$
.
.
!
)
%
'
#
*
$
DS O
`I
G
n
CN
C
J
WW
&
$
-
$
&
7
$
&
$
$
0
' .
$
!
2
,
%
-
*/
*
*
/
'
* */
*
%
/
(
-
/ (
#
$
2
&
! .
$
0
*/
**
/
0
' .
/ 0 * 2 t
s
(
2
&
&
&
&
0
$.
0
$
* 2
$
.
$.
$
%
%
#$
*
$
#
)
r
%
7 / ?
&
$
0
.
.
$
$
%
'%
#
$
& .
* .
&
$
#
)
!
/ ..
.
' % '
%
$
$
'%
$
.
.
&
$
-
!
$
-
pow(2.0,-2)
/
O
%
0
&
$
'%
$
UF
$
&
main
!
'
#
$
!
$
'
#
$
0
*
& 0
'$
.
/ )
& $
$ / $
&
).
$
'%
. $
$
/
/
.
$
$
$.
(
*
/ #
0
!
$
7
! &
#
#
)
#
* $
#
'
.
%
' % # & *
$
r ' %%
$
% / $
'%
&
0
$
$
)
$
# /
2
.
* .
)
$
$
%
2
#
.
0
2
&
'$
!
$
2
* $
$.
2
$
$
#$
$
.
0
6
0
5
0
.
'%
$
* ..
)
'0
$
'
*
$
t
.
.
&
&
0
.
2
&
'
#$
$
( s
$
#%
#
F
N
`CJ
$
#
%
0
$
4
'
$
$
%
%
2
&
$
' .
$
!
$
0
'%
$
$ *
&
&
$
>
3
'
!.
s
%
$
-
&
0
$
3
0
s / ! ..
!3
&
.
&
0
#
)'
&
'
.
$
$.
%
/
!
'
%
.
.
#
/ 2
*
*/
*
! %
$
/ *
*/
*
/ 0
m
H
* E
FT
D
F OK
D
GJ
2
&
/ ! .
t
s
/ !
/ *
**/
.
$
0
#
$
4
$
.
&
>
* 0
% * *
/ $
# * t *
*
/ @ *
t */
.
0
)'
$
&
.
.
2
/ / 2
#
#$
;
#
/
/
$
$
&
&
%
0
&
0
S
DO
`I
G
n
CN
`C
W
2
&
FN m
2
N&
I
NO
G
D
O
EL
I
'%
$
.
.
0
7
0
0
.
/
0
7
&
/ .
-
#
$
%
&
.
.
!
*/
**
/ / t
s
(
0
$
&
&
$.
0
2
&
)'
#
.
.
/ $
&
%
/ $
'%
& %
$
&
'%
. '
. $ $ * 0
Y
8
2 / .
.
!2 .
&
#$
$
0
$
. * &
$
'
'
&
)
2
C
2
S
S
NI
#
F OK
0
$
DS
*
'
'$
# * # '
0
'.
&
&
$
2
* .
$.
%
*
$
A
?
0
%
7
%
$
0
'%
$
$
-
!
&
'%
$
.
.
0
#
)
$
:
A
.
0
%
#$
#
'
$
$
'$
/ +
$
3
pow
!
#
)'
&
.
/ *
$
#
&
$
'
.
%
$.
$
%
$
$
0v
&
C
JO
`C
O
IM
`C
K
&
)
#
#
'$
&
&
'%
$
.
/ !
0
#
W
! . *
/ $
'
2
&
$
7
*
/
2
$
$
&
&
0
&
&
0
'.
assert
' % $
/ %
$
&
.
. .
.
& )'
#
'%
$
2
.
'
.
!
&
'%
* $
.
.
.
!
$
&
%
-
%
%
#
#
#
$
$
/
$
&
/
&
%
%
7
$
$
&
0
&
.
&
0
0v
&
'
$
!
#
* #
$
$
.
%
0v
! .
!
.
!
#
#
&
'%
$
#
0
0
-
$
r
&
$
0
$
$
&
&
$.
$
$
&
0
)
&
#$
$
'
$
#
'
&
&
$
'$
!
2
0
0
.
$
u
u
$
$
$
!2 )
7
&
.
0
&
&
.
'
'
* $
$
!
#
)
2
$
* %
%
.
.
.
&
$
&
&
!
$
$
! .
)'
'$
'%
)
$
$
&
/ ..
'
#
$
/
$
&
$
.
$
#$
$
,
.
06
.
%
25
/ )
!
2
#
%
'0
8
2
$
.
$.
*
/
'
& #
$
% 0 % $
%
#& #
)
&
.
& $
$
2
& $
$
$
2
. 0
'
* ..
$
2
$
/ $
2
&
&
$ '%
' .
0
(
#
'
)
0 .
0 $
%
!
$
u
&
u
!
$
&
!
0 '%
/ $
1
$
*
#
$
%
7 !
& $
%
'$
$
/ t ! ..
.
&
. $.
0
& *
!%
'$
#$
&
2
'$
.
. &
0
/
$
$
#
0
& $
& 2
.
s
0
& $
* $
7 &
#
$
$
&
$.
& . $
)'
. )
#
* $
0
$
'$
#
'
$
0
0
$
$
.
'$
$
$
(
2
$
double
7
.
.
$
$
r
$
#
)
%
// PRE : e >= 0 || b != 0.0
// POST : return value is b^e
double pow ( double b , int e)
{
assert ( e >= 0 || b != 0.0);
double result = 1.0;
// the remainder is as before
...
}
' .
* 2!
$
$.
&
%
&
bool
* $.
2
$
& *Y0
&
&
' .
#
$
$
7
'
assert
#
$
$
&
u
e
!
$
&
&
7
/
7
'
u
b
#$
)
#
FN
'$
r
/ &
-
& '
$ * pow (0.0, -1)
. *
N
IN
.
'
)
%
pow
`I
K
*
! .
#
$
'
e >= 0 || b != 0.0
..
0
'
.
.
)
// PRE :
)
DO
G
$
N
.
$
$
Assertions.
2
..
'
! .
2
&
&
&
pow
#
)'
'
pow (0.0,-1)
be
assert
cassert
3.1.2 Function definitions
callpow.C
callpow.C
3.1.3 Function calls
?
A
.
*Y .
$
*
/ .
&
#
! 0%
#
'
'
-
#
@
$
&
$
)
$
#
)
$
!
2
$
0
&
std::cout
$
'
$
&
.
&
'
0
.
&
).
$
.
$
t
$
#
$
#
)
&
.
&
%
$
>
%
$
#
'$
$
%
0
'%
$
$
.
.
FH
* 2
3
.
* $
'
#
)'
.
% /
/ t
3
$
>
* * *
&
s
$
0
$
$
&
.
).
$
! &
&
$
0
$
/
t
%
0
&
.
$
$
2
'$
$
%
.
0
&
-
#
'.
$
&
.
$
$
%
&
0
!$ 0
&
/
%
.
&
.
0
&
$
$
$
0
&
$
$
#
)
)
&
$
2
&
$
0
3
%
CK
W
$
$
%
&
0
.
DO
IO
F
L
$
* % /
) $
%
%
$
$
%
$
$
I
$
&
%
.
>
$
$
& * !$ 0 / $
2
/ %
. $
$
0
&
$
0
%
$
$
%
&
!$ 0
.
'%
$
0
&
FN m
IT
/ 0
&
e
&
#
)
$
$
#
$
$
7
/
&
.
0
&
&
'$
)
&
'$
#
! .
>
0
0
' .
$
%
&
&
*
*
&
0
0
*
.
&
%
'%
$
.
)
.
$
2 $.
0
$
'
. *
&
' .
0
(
&
$
&
&
0
)
' .
7
0
$
7
&
#
)'
&
.
.
)
.
0
$
'
#
)'
#$
'
$
#
&
$
0 / 0
$
' .
/ /
$ .
*
/ +
'%
$
.
.
-
$
' .
$
%
&
#$
'
$
$
' .
'
4
'
7
&
$
main
#
$
$
.
0
0
1
$
.
&
.
#0
'$
e
b
)
#
! ..
&
)
2
b
$
!
'
'
! &
$
%
s
e
#$
2
$
#
pow
/ & .
,
!$
$
b
!
s
* 0
pow
CK
I TW
CN
e
pow
pow
(
' %
.
'%
$
.
#.
'
%
'
&
pow
VW
#
b
// POST : "( i , j )" has been written to standard output
void print_pair ( int i , int j)
{
std :: cout < < "( " < < i < < " , " < < j < < " )\ n";
}
CT
(3 , 4)
).
$
.
$
# include < iostream >
.
%
print_pair
%
/
t
&
'
r
&
! ..
0
&
.
&
(
.
' .
$
%
. s
'%
$
*
&
.
$
$
%
.
.
&
$
.
$
.
&
#
)'
.
#
$
*
$
/ !0 /
&
&
2
* t
.
3 /
!
'
* &
/
's
* %
$
$
'
-
)
'0
/ .
$
-
#
.
6 +
/ % &
& )
'% #
0
$
$
.
&
. ' .
0
& $
%
%
$
#
$
v
.
)'
$
#
$
.
5
pow
$
.
int
FW
n
#
$
$
/ void
%
3.1.4 The type void
#
.
&
.
u
& / u
v
pow(2.0,-2)
!
/ .
$
&
0
/ . /
'%
'
$
/ $
0
#
0 $
' .
&
.
* !
%
$.
2
. '3
$
$
2 & ..
'
%
% )
$
0
!
$
$
)
/
#
#$
'
s 0
$
.
$
$
& .. ' $
%
V0 &
!
F
'%
K
H ' . m
%
JG
$
D
$
'%
* t
F O K DS
*
$
&
0
-
#
2
-
#
$
/ )
'$
void
/
&
! %
$
$
int main ()
{
print_pair (3 ,4); // outputs
}
/ )
-
&
$
$
r
0.5
e
0.5
void
7
&
' .
!
#
&
$
!.
result
pow(2.0,-2) b
if
0.25
*
void
! %
$
7
'
4
−2
void
v
print_pair(3,4)
*
#
!
2
)'
'%
$
0
&
&
.
$
!
!$ 0
#
7
&
'%
$
&
$ v
$
%
&
.
.
7
&
' .
$
%
&
' .
&
)
.
'
0 * 0
!
#
#
&
&
.
%
%
&
.
0
0
0
&
%
.
.
&
3
>
* * $
$
.
$
#
)'
s
$
#
)'
.
$
$
$
#
&
%
%
.
7
0 * t
.
0
&
&
'%
$
$
'
-
$
) %
$
$
!
& * 0
$
0
'%
$
0
'$
$
#
)'
7
.
$
$
.
.
0
&
&
%
&
#
&
.
$
$
%
0
'%
$
&
7
&
0
%
0
#
&
.
$
$
$
%
%
&
0
.
$
$
'%
$
$
&
0
%
&
!
'
$
$
' .
$
$
$
!
2
&
-
2
)
$
#
$
/ $
/
.
$
* #
)'
'%
)'
'
#
$
0
v * ..
#
.
'
$
7
% &
/ & $
v
'% ' / %
0 $%
$
$
$
%
&
-
. '
%
. '
'
'
$
0 # )
.
.
* 0
' .
%
$
$
'
-
)
'0
1
return
*
*
*
>
$
&
%
%
&
&
&
%
&
$
$
'
-
2
7
* 0
Y
$
#
'
#
#
'
3
$
7
&
#
%
2
0
&
#
FN
#
'
0
&
&
'%
$
.
.
%
$
0
$
$
' .
/ / #
'
0
.
)'
.
.
' .
$
%
&
2
&
&
#
* $
$
'%
$
.
.
$
$
' .
/
#
#
)'
.
&
.
$
& * %
%
1
&
/
/ ! ..
! &
&
'
%
2
*
$
. !$
0
0 -
0 '
10
& &
) -
'
)
$
% $ /
#
)'
.
#
$
&
u
7
&
0t
0
$
0
#
$
$
#
'
$
&
%
%
$
! %
#
.
'
' .
&
)
.
'
&
2
&
u
0
!
'
void
return
3.1.5 Functions and scope
int main () {
double b = 2.0;
int e = -2;
std :: cout < < pow (b ,e ); // outputs 0.25
std :: cout < < b ;
// outputs 2
std :: cout < < e ;
// outputs -2
callpow.C
}
return 0;
&
.
0
$
$
0
'
$
!
#
'
#
'
'
4
$
0
'%
$
$
s
0
' .
#
)'
&
0
.
/ /
'%
$
.
.
' .
=?
@
%
$
$
$
&
%
&
0
f
2
.
.
g
.
0
$
'%
$
.
0
&
!$ 0
'%
$
.
.
0
I
0
$
'%
$
$
/ % 0
& 0 / s
0 !
!
/ t *
$
.
.
'
( $
$
0
%
FN m
IT
$
&
$
$
%
&
0
&
&
/ /
$
$
)
'$
#
)
.
0
&
0
0
.
&
f
f
f
&
%
*
.
0
7
&
!
$
#
)
0
.
0
.
2
/ $
&
#
2
/
0
%
$
$
)
.
0
&
0
%
0
!
$
$
$
&
'
'
&
'%
$
)
$
3
&
*
$
$
&
%
$
%
$
0
%
%
/ .
&
.
.
$
#$
$
$
-
#
$
#
)
)
.
$
2 / .
/
&
$.
7
0
0
$
$
!.
'
/ *
0
.
0
.
# *
.
&
.
0
&
#
!
'%
$
$
0
# #
$
!
2
&
.
CN W
IJ H
&
.
0
$ / $
'
7
* C
' % F OK
DS
*
$
7
&
0 . $
%
$
&
'%
& & $ 0
$
'
$
4
'
%
$
!
#
.
$
main
)
7
%
%
$
*Y
main
0
2
$
#
)'
&
0
.
#
f
!.
%
# !
$
-
2
'$
r
#
$
$
#
;
.
.
'0
0 %
. * $
$
#
*
.
.
0
7 .
/ 0
& #
)'
2
0
#
& #
&
'%
#
& $
%
!$
$
'%
2
)
)
!$ 0
#
5 $
0
'
%
&
$
&6
&
.
#
$
0
.
$
!. $
% $
'
%
$ / %
#
#$
. . ! &
& &
.
)'
#
#
$
&
$
%
'
.
' % !
.
#$
%
$
#
# $
.
#
main
g
$
#
f g
'
I
CV M
g
2
g
$
/ %
f
'
main
%
$
'%
/
'
$
#$
0 # 0
! &
* /
.
.
/ '
&
$
$
#
$
!.
0
.
)'
f
!$ 0
&
*
$
!$ 0
2
%
.
'$
// in the scope of declaration in line 3
2
&
'%
$
$
f
# .
0
0
)
*Y .
'
#
$
#$
2
2
int i = 0; // global variable
$
&
$
$
%
&
0
.
$
%
$
return 0;
.
&
.
}
&
0
0
&
$.
&
2 )
2
int main ()
{
f ();
std :: cout < < i < < "\n" ; // outputs 1
/ !
'%
$
.
&
int f ( int i)
{
{
int i = 5; // ok ; i is local to nested block
}
return i ; // the formal argument
}
$
!.
'%
$
%
7
int i = 5
$
)
#$
&
.
.
/
0 !
$
'%
$
.
0
$
*Y
&
int f ( int i)
{
int i = 5; // invalid ; i hides formal argument
return i ;
}
*
$
&
'%
$
$
7
Function declarations.
* $
void f ()
{
++ i ;
}
$
0
2
&
.
.
# include < iostream >
f
# include < iostream >
int main ()
{
std :: cout < < f (1); // f undeclared
return 0;
}
int f ( int i ) // scope of f begins here
{
return i ;
}
# include < iostream >
int f ( int i ); // scope of f begins here
int main ()
{
std :: cout < < f (1); // ok , call is in scope of f
return 0;
}
int f ( int i)
{
return i ;
}
?
>?
zy
x
x
z
x
{ ~
z
z
xy
z
z|
xy
* !
0
2
&
$
)'
s
$
-
&
$
.
/ $
%
'%
0
$
0 * /
&
7
&
' .
#
.
&
.
0
$
0
&
%
#$
.
!
$
&
!
& * >
* >
* r3
&
&
&
%
%
)
&
&
!.
$
#
)
$
0
s
t
$
'
#
)
$
#
'
#$
&
#$
&
%
$
&
%
"
.
7
2
$
$
.
&
&
0
.
! .
'
'
* %
.
$
0
!.
#
&
0
0
& -
4
'
. '
#
.
! ! .
/ @
=?
'
# '% !.
0 ' %
. & !. *
'
$
)
@ #
A=
&
#
.
2
& )
)'
.
)
')
&
0
)
0
* '$
$
r
0 '
$
2
&
$
0
2
r3
/ &
! '
$
$
0
* t
! .
0
.
!
'
$
%
r3
r
2
=
@
/ / !
)
r3
7
&
'$
.
& $
'
s
#
&
2
'
0 ) $ $
.
$
.
'
$
2
0 &
'
% $
.
%
&
( .
)
$
& '
$
/ 0
1
%
$
$
0 $
!
&
0
0 #
#
.
$
'
$
* #
.
$
S
s -
L
2
$
nC
'
&
$
'
IM
'
/ +
OO
J K . $
F
$
)
0
$
'
) /+I H % $
#
0
#
$
'0
#
)# * t
& t $
$
$
%
&
s
$
0 $
0 /
.
$.
2#
GOTO
{
z
"
$
$
$
3
! -
.
I
x
z
x
{
{ ~
x
%
t
#
)'
&
.
!
&
$
7
&
.
&
.
$
&
*
0
.
'
)
#
)
)'
)
#
#
)
$
$
.
/
0
W
0
0
u
0
.
u
)#
D
`K
n
`
C
N
Fn
LN
C
G
NH
I
FJ
! 0
$
2
'&
#
%
!
$
* #
$ /
0
$
( .%
)#
)
#
#
)
$
&
'0
7
LN
&
.
0
$
&
&
&
$
#
)
&
&
.
&
0
0
.
'
$
$
'$
.
.
'
0
&
.
.
0
&
.
r
$
$.
$
/ * 2
&
# $ *Y0
#
$
'
$
#
$
#
7
/ & $.
$
#
)
$
)
)
)
/ % $ )
$
1
2
2
$
$
$
$
/
$
)
$
#
)
0
0
/ .
$
#
'
&
.
&
!/ 0.
#0
perfect.C
z|
y
#
$
.
'%
$
.
.
' .
.
&
#$
S
y~
z y }
{
~
~
~
A
z
z
0
/
2
&
X
O
B
IJ m
IN
L
S
Fn
LN
Program 18:
x
zx
~
|
$
&
B
z
|
y
z
{
z|
x
{
xx
{
z|
z
z
}x
#
&
'
.
&
$
&
%
$
#
'
'$ .
$
'
$
) .
SK
!
2
'
2
0
i
1
compute the sum of
{
zz
z
z{
z
.
'
'
# include < iostream >
|
xy
' .
'
// Program : perfect2 .C
// Find all perfect numbers up to an input number n
'
i
|
&
i
// POST : return value is true if and only if i is a
//
perfect number
bool is_perfect ( unsigned int i )
{
return sum_of_proper_divisors ( i ) == i;
}
z{
// POST : return value is the sum of all divisors of i
//
that are smaller than i
unsigned int sum_of_proper_divisors ( unsigned int i)
{
unsigned int sum = 0;
for ( unsigned int d = 1; d < i ; ++ d)
if ( i % d == 0) sum += d ;
return sum ;
}
}
int main ()
{
// input
* 2
.
0
%
/
*
&
%
$
$
#$
#
)
$
'
&
.
.
0
'
4
.
$
$
)
!
2
'$ .
$
$
.
&
0
.
&
$
) .
'
'
.
! .
$
2
/
&
$
#
&
&
&
$
$
..
.
)6
&
5
)
'$
.
$
'
. * / '
0
2
&
'$
0
$
)
'$
.
#
*
#
'
'
&
'
$
$
$
.
t
.s
%
2
&
$
L
F
FW
I TW
G
FH
)6
5
$
$
'$ .
$
7
'%
3
&
$
/+ %
/ $
2
* 2
2
&
& $
0 ! !0
# .
'$
-
$5
# * .
$
.
'
.
6
0 2
& &
&
'$
#$
$
%
)
'%
#
$
'
%
#
$ &
$
# ! .
% . 2
#$
$
&
2
'$
0
. $
/
0 )
#
%
$ * @
r
&
)
% & #$
2
-
$
&
$.
$
if
n
z
$
$
1
|
$
# .
n
test whether i is perfect
all proper divisors of i
'%
&
$
( .%
&
-
$
. * $
)
0
#
!$
$
&
)
8
&
#
&
2
$
&
A $
$.
& 1
&
$
$
2
%
0
$
0
& $
4
$
'
$
0
2
!
$
.
& '
&
$
#
.
#
*
$
0 /
7 $ /
'&
/
$ * 2
.
2
&
0 ;
$
&
0 $
&
! . 2
$
& $
.
!.
0 )$
0
$ v #
'
. &
0
2
n
x
* #
'%
$
perfect.C
#
3.1.6 Procedural programming
std :: cout < < " Find perfect numbers up to n =? ";
unsigned int n;
std :: cin > > n;
// computation and output
std :: cout < < " The following numbers are perfect .\ n" ;
for ( unsigned int i = 1; i <= n ; ++ i )
if ( is_perfect ( i )) std :: cout < < i < < " ";
std :: cout < < "\ n";
}
return 0;
C
GOSUB
GOTO RETURN
3.1.7 Arrays as function arguments
?
?
* $
/
$
fill
++
&
0
$
&
&
$
0
/ 0
& *
*
&
&
$
7
0
&
$
6
&
.
&
0
#
.
$
#$
$v
$
&
0
$
$
'
!
#
(g. * !. 2
$
)
$
2
$
/ $
$
% &
0
0 '
)
)
$
$
'
$
&5
$ $ '
$ / 6
5
$
7
&
5
.
%
&
0
.
)
#
$
%
&
)
r
* &
# #
&
$
$
.
fill_n
2
$
$
s
$
0
'
6
.
$
% $
. .
/ !
#$
0
&
0
#
.
%
&
%
%
.
1 '
$
.
&
&
#
2
2
$
! ..
#
)'
%
&
0
.
!
2
* #
#
$
/ 0 &
'0
&
' &
'%
$
&
$ )'
$ 0
.
.
$ . 2
0
&
3
$
6
&
$ $ / )
0
. $
$
%
>
$
& !. * *
'%
r * 0 %
/
$
<
$
. #
u
#
&
u
$
& ! /
/ /
$
& % $
2$
'
'
0
% * . 2 $
*
#
&
&
'
$
!
&
#
4
&
$ '
N
.
$
#
& I
$ * C
W #$
$
& #
!
&
$
5
2
'%
& 2!
& ( (
$
#
$
'
! .
)
/ .
&
0
2
/
&
.
!
&
$
$
&
.
7
0 /
&
%
)
!
&
2
&
$
r
&
' .
%
#
.
)'
$
$
&
$ 0
(
(
0
0
.
UF
O
$
$
2
%
&
$
$ $
8
.
0
&
!
2
&
&
&
%
$
.
&
&
)
!
)
#
$
.
$
D
n
C
N
&
*
.
#
!
&
&
)
'
!2 )
0
$
'$
'%
$
$
!
)
$
%
!2 .
'$
r
&
2
2
r
%
$
$
0
#
7
&
#
.
$
%
&
&
B
X WW
S
Fn
LN
#
7
&
'%
$
)'
!
. #
'0
/ $
.
#
$
)
&
'
&
.
0 2'$
)
' % . /
.
$
0
/ !
$
Y
* 0 &
$
0
$
$
'$ %
$
&
#
& %
'
$
'$
.
.
2
0
$
0
&
$ )'
%
& #
% #$
2
!
2
.
& * .s
$
$
% )
%
.
!
/ ! .. )'#
/
!
)
& '
!
2
4
'
&
-
%
/ . $
. $ /
'%
&
'
)
!
0 #
/ !) . #
$
$
* t 0
& &
$
)
I
!
&
/ 0
0
0
2
#$
/
$
% 0 * $
s 2
r $
.
)
& .
!.
& 0
#
$
0 ! !
t
. &
#
/
$
%
2
$
!
'
0 % $ /
!
0
..
* )
+
2
.
0
#
0 )
. / &
0 $
)
$ / .
&
#
& $ /
! & !
*
.
$
0
$
r
& )
$ 2 &
&
!2 ! .
&
0v
%
! '
&
$
$
$
'
&
.
7
& * #
.
$
'
.
$ (
( 4
#
.
&
&
*
$
$
'
! .
!
2
0
.
#
#
'
/ / / 0
*
*
& */
*
0
! /
!
'
$
)
* *
) .
$
$
E
C
N
%
CN T
G
S
'$
)'
$
last
%
'
fill_n
[first, last)
last-1
.
#
&
$
'
t
fill
2
&
. / '
/
0
&
)
& 2
!
0 $
$
#$
2
&
$
. #
*
'%
0
r *
%
0
$ / !
.
! & $
$
% $
$
&
/ $
$
&
3
.
$
>
.
)
*
( & . * /
<
0
& / .
& 2
0
'$
CN
)
0 I
&
1
$
p+1
&
.
// Program : fill . C
// define and use two functions to fill an array
first first+1
.
0
&
! ..
' $
#
)
$
'$
.
Program 19:
*
$
,
0v
&
'$
!%
10
)'
// PRE : a [0] ,... ,a[n -1] are elements of an array
// POST : a[i ] is set to value , for 0 <= i < n
void fill_n ( int * a , int n , int value ) {
// iteration by index
for ( int i = 0; i < n ; ++ i )
a[ i ] = value ;
}
$ 6
# include < iostream >
0 * &
n
5
fill
fill_n
.
.
2
fill_n
%
'
$
int a[5]
%
.
&
$
.
0
.
'
4
.
%
&
.
&
! ..
7
/ 2
$
/ #$
' .
-
0
#$
$
!
$
.
.
#
$
* &
H
! .
#$
$
SO
GS
C
%
2
* 0
!
.
.
$
!
$
#
)'
.
#
$
%
/ .
/ &
2
#
'$
. )
0
&
0
. '
'%
)
$
&
-
#
$
int a[5]
$
* #
)'
.
#
$
// PRE : a [0] ,... ,a[n -1] are elements of an array
// POST : a [i ] is set to value , for 0 <= i < n
void fill_n ( int * a , int n , int value );
7
&
$
! . $ %
/
4
'
&
'
5 %
$ $
6
'%
$
$
.
! &
&
&
$v $
0 .
!
$
.
. 2$
$
%
$
// PRE : a [0] ,... ,a[n -1] are elements of an array
// POST : a [i ] is set to value , for 0 <= i < n
void fill_n ( int a [] , int n , int value );
// PRE : [ first , last ) is a valid range
// POST : * p is set to value , for p in [ first , last )
void fill ( int * first , int * last , int value ) {
// iteration by pointer
for ( int * p = first ; p != last ; ++ p)
*p = value ;
}
int main ()
{
int a [5];
fill_n (a , 5 , 0); // a == {0 , 0 , 0 , 0 , 0}
fill ( a , a +5 , 1); // a == {1 , 1 , 1 , 1 , 1}
return 0;
}
{0, . . . , n − 1}
[first, last)
++p
1
?
?
<
pow
0
/ ! .
.
2
$
&
'%
.
&
&
$
!$
0
%
'%
$
*
7
.
&
&
&
#
$
! .
$
s
/ &
$
#
)
*
C WK
F OK
`L
. *
D
&
.
$
F
J
&
C
CN
L
I
S
IO
!
&
$
0
0
#
)
$
#$
`I
E
IN
IV
)
)'
.
OK
&
.
%
$
0
#$
&
# $
!.
$
! .
.
&
2
7
.
#
0
$
#$
$
$
$
#$
6
5
0
.
&
8
2
&
&
0
$
#
$
(
#$
$
%
. * &
..
&
/ .
$
&
) ! ..
$
$
&
0
&
(
&
%
#$
#
#
$
$
7
*
&
)
$
$
0
.
0
!$
2
0
%
.
0
&
&
/ ! ..
'
* $
$
!
0
.
$
) ! ..
.
&
'.
6
#
$
$
&
%
%
0
0
'.
6
D
#
)
(#
X
U
F
B
L WW
C
J
S
Fn
LN
D
n
OK
0
.
&
%
%
'%
$
)
'
$
$
#
$
!
%
#
.
$
.
$
&
&
7
&
%
$
.
#
%
' .
.
&
.
$
$
-
&
v
2
2
&
&
0
.
/
&
.
$
$
$
&
2
7
&
'
6
&
0
&
LN
L
S
Fn
$
$.
2
* )
F
&
X U
%
#
.
$
#
'$
.
%
#$
'.
/
$
#
&
! 0%
$
0
05
*
&
! &
#
8
0
'%
$
.
.
$
6
.
.
$
&
v
%
5
&
2
$
W
'%
$
.
.
&
GI
C
V
$
& *
0
'%
$
$
.
. /
0
$
O
%
&
'%
$
* ..
DF
' .
/ #
.
!
' .
$
*
C
GO
`
.
'%
$
&
'3
.
&
S
S
I
outputs
outputs
outputs
outputs
outputs
#$
#
.
0
.
)
K
F OK
C
$
$ &
' .
)
.
.
0
* & r ' .
#
%
&
$
/ 0 #
'%
.
& &
% )'
$
$
#
#
% $
$
. / !0
&
)'
$
& #
%
$ & $ '.
% '$
!
&
* !
0
.
&
0
#
. 0 &
#
2 ' %
$
'
0
&
*
& $ *
0 /
$
%
#
)'
.
#
$
//
//
//
//
//
$
pow.o
'
-
#$
'$
2
2
pow.C
$
#
0
.
&
*
H
0
CNG W
`F
&
.
! 0%
)
v
* $
' .
( #
pow ( 2.0 , -2) < < "\n " ;
pow ( 1.5 , 2) < < "\n " ;
pow ( 5.0 , 1) < < "\n " ;
pow ( 3.0 , 4) < < "\n " ;
pow ( -2.0 , 9) < < "\n " ;
'%
$
&
$
/ $
Separate compilation and object code files.
$
$
)
/ .
$
.
.
& 0
u
u
/
0
T
F
JO
IJ
F
'$
IH
&
.
.
&
r
&
'%
$
&
.
$
*
!.
0
'
'
$ %
0
& . . $
$
$
)
!$
)
/ #
& . '
$
0
$
$
2
' % '$
.
0 0
)
' % $ $
#
& $
$
Program 21:
.
.
$
'
&
.
'%
$
.
.
&
* &
H
NH
C
/
B
Program 20:
$
.
2
#$
&
#
$
$
#
)
#
&
'$
<<
<<
<<
<<
<<
)
$
t
'$
.
/
&
'%
$
/
2
2
1
$
#
)
!
#
'$
2
&
int main ()
{
std :: cout
std :: cout
std :: cout
std :: cout
std :: cout
&
main
pow
'
.
r
&
pow.C
Header files.
7
)
'%
$
* 0
#include
/ !) .
'
)'
'
.
)
0
$
&
%
' %
.
&
3.1.8 Modularization
#$
!.
?
$
#
)
$
!
$
7
0
.
$
#
)
0 $
* r
$
$
0
$
$
!.
'
&
'%
$
# %
#$
$
$
0
int a [5];
fill (a , a +5 , 0);
$
&
'
first
pow
' .
' .
1
&
#
)'
.
#
$
%
! 0%
$
$
!.
#
$
'
&
#$
&
v
$
/
0
0
&
&
'%
$
0
&
&
&
.
&
'%
$
$
.
* 0
$
$
2
7
&
&
'%
$
.
0v
'
$
$
pow
*
// PRE : e >= 0 || b != 0.0
// POST : return value is b^e
double pow ( double b , int e)
{
assert ( e >= 0 || b != 0.0);
double result = 1.0;
if ( e < 0) {
// b^ e = (1/ b )^( - e)
b = 1.0/ b ;
e = - e;
}
for ( int i =0; i <e ; ++ i ) result *= b;
a
&
pow
%
# include < cassert >
*
.
7
'%
$
$
0
fill (a, a+5, 0)
)
$
.
$
2
fill_n
0
!$
2
'$
/
pow
#
'
fill
fill_n
2
.
.
'$
)
.
0
pow.C
/ !
$
#
/
'$
fill (a, a+5, 0)
a
*p
fill
8
'$
Mutating functions.
}
return result ;
// Prog : callpow2 .C
// Call a function for computing powers .
# include < iostream >
# include " pow .C"
0.25
2.25
5
81
-512
}
return 0;
pow
?
?
?
A
"
x
z
z
|
math.C
}
O
$
'%
$
&
&
$
$
/
$
!$
0
%
$
$
&
$
&
.
0
&
).
7
.
.
0
$
$
)
*
&
0
.
0
$
&
%
$
math.h
#
#
'$
.
0
.
$
)
)'
&
.
#
$
/
*
!
. / 0
$
$
&
.
0
$
$
.
#
.
0
).
'$
$
0
$
0
'%
$
&
!
2
0
s
$
$
#
)
'$
t
$
0
0
&
7
$
%
$
#
2
'
&
'%
$
/ !
2
'
# * %
0
X b
U
F
B
L WW
C
J
S
Fn
LN
2
2
&
'%
$
.
#
&
0
&
.
.
&
&
$
!.
2
$
$
'
$
'
'
* '
$
&
$
!
$
#%
#
!.
#
$
$
2
..
* .
.
0
'%
$
$
return 0;
&
7
'$
*
$
K
%
0
0
0
! .
!
2
'$
G
pD
#
)
!
$
0
7
&
'$
$
!
&
.
2
$
0
$
$
'
$
$
'
%
&
%
$
.
)
$
$
'$
$
0
%
! .
#
r
' 0 $
%
2
& / ' .
$
2 $
& 2 & -
&
. / '$
. F
L
'$
!
I
*
D
S
F
*+)
$
N
0 JG
r
I
$
%
.
$
$
0
% 2 / &
& $
$
* 0
$
% 2
#$
&
#
#$
#$
$
#
* )
+
$
&
2
)
%
.
0
$
'$
!
$
0
&
! &
!
$
%
0
#&
'
2#
$
$
#$
#$
'
0
0
/
!
2
$
'$
$
0
%
%
%
.
#
#$
/
0
&
0
$
$
!'
'$
$
&
0
0
!
#
!
'%
$
.
/ 2
&
&
'$
&
$
0 $
%
'
$
0 $
% $
!'
0 *
)' / .
0 / &
$
$
! 0%
2
$
$
$
2
!
(
0
.
&
&
)
)
%
.
.
0
.
&
'$
$
0
.
'$
'$
pow.C
{ ~~
{
|
{
z
|x
z
{ y
z
|
z
|
'
0
.
&
%
&
$
'
$
$
&
pow
z
xy
x
z| y
x
math.C
$
2 3
%
$
&
'$
$
.
&
'$ *
0 *
& *
*
'
)
* <
7 &
&
r )
$
& $
. .
'
& ' % $
0 ! .
$
$
'$
$
/ !
0
2
& !
&
$
)
& 2
$
&
$
/
0
$
'%
'%
2
$
%
. $
$
.
'%
0 $ & & . '.
%
$
$
0
. $
!
. 0
0
. . & 0
0 '% $
0 &
&
. '%
$
)
0 *Y0
/
$
/
( )
DF
'
2
W
IN H
FM
$
)
& / #
.
&
)'
#
$
)
.
'
$
&
%
$
)
-
'
)
$
&
&
%
$
$
0
&
&
&
*
/
&
>
&
&
6
0
&
$
&
&
'%
$
%
'%
$
$
3
&
&5
&
$
/
0
0
&
&
$
.
.
%
$
C
0
r
&
IW
IN H
IM
.
.
U
$
$
&
&
&
%
&
0
0
&
&
#$
$
0
0
&
$
$
(
2
$
0
'%
$
0 / .
$
$
&
'%
$
FM
* 2
$
$
$
#
0
/ 0
#
$
$
$
$
0
(
#
)
)
.
.
%
#$
% *
'.
$
!
/
'.
&
$
.
$
%
.
!.
# #
$
% /
.
.
$
#
$
$
!.
!
! &
#
%
&
2 )
$
)
#
$
$. /
.
)
/ 2
2
2
)
)
)
.
.
.
'$
*
'
&
'$
$
)
' %
! ..
'$
r
!%
Availability of sourcecode.
)
r
/
$
#
*
r
FH
I
S
#
$
$
#
$
& '
. 0
)'
0
)
&
$
0
%
$
)
.
math.o
|
'$
I
CJ W
L
&
#$
pow
z
2
0
.
%
#$
*
! .
#
)
8
!
%
math.C
|
$
.
&
$.
&
.
'
.
$
'
#
0
Libraries.
xx
.
0
$
$
callpow3.o
0 / /
0
%
$
'% & &
WK $ D
IN e $
)
)'
&
.
&
$
#
)
pow
$
'%
$
)
0
$
&
#
.
.
/ 0
#
&
-
$
r
callpow3.o
pow
pow.o
{
).
$
%
$
.
&
0
}
. /
)
0 .
& ! .
. '
#
.
) $ .
$
)
#$
$
)
$
$
&
&
0
$
. .
. .
#
&
!
CN
.
J
$
0 V
MK I
$
0
H
& '$
0
$
. $
. )
. .
W
. N TK $ % CN
& #
! *
E
*
'%
r -
!.
'
$
& / 0 $ .
#
.
$
$
)
.
% $
#
%
&
0 /
$
.
&
.
$
$
0
)
'
&
'
$
$
0.25
2.25
5
81
-512
!
#
'
)
$
$
.
.
$
)
') .
-
2
'%
$
&
%
0
'$
-
callpow3.o
main
'
.
2
&
&
)
)
$
!.
! * #
$
#$
!.
$
outputs
outputs
outputs
outputs
outputs
$
.
0
'
)'
&
.
.
.
%
//
//
//
//
//
$
!$
'%
$
%
!
0
&
)
$
Program 22:
$
0
$
2
#&
t
'
-
&
0
0
# include < iostream >
# include " pow .h"
~
&
.
$.
)
..
&
/ ! ..
7
$
// Prog : callpow3 .C
// Call a function for computing powers .
|
0
.
pow ( 2.0 , -2) < < "\n " ;
pow ( 1.5 , 2) < < "\n " ;
pow ( 5.0 , 1) < < "\n " ;
pow ( 3.0 , 4) < < "\n " ;
pow ( -2.0 , 9) < < "\n " ;
pow.h
.
!
* t
s
'
8
2
&
&
6
%
$
)
$
#
)
)
.
.
.
$
.
5
#$
'
$
#$
3
*
// PRE : e >= 0 || b != 0.0
// POST : return value is b^e
double pow ( double b , int e );
z
/ .
& .
.
.
callpow3.o
pow.o
* '
-
'
s
The linker.
pow.o
<<
<<
<<
<<
<<
pow.h
pow.C
!.
$
#
)
$
$
$
'%
$
&
&
&
2
$
.
$
#$
%
%
%
.
&
.
$
#$
r
$.
* !
! ..
'
'
.
.
'
$
&
$
1
!
/ !
/
.
&
&
0
0
&
*
.
2
&
'$
&
)
$
#$
.
0
&
*
&
$
.
0
$
$
'%
$
%
$
.
0
'$
'$
2
&
'$
$
2 )
&
$
$
.
&
!
$
#$
.
3
&
'
) . ' %
$
* .
!. r
$
)
.
& #
.
$
2
.
&
$
& . &
.
)
&
* &
$
0
. 2
$
$
)
$
$%
&
&
'% '%
10 $
$
0
/ )
'
.
0
.
&
#
$
/ '$
2
*Y..
r
'$
/ ) &
$
/ $
'
.
$
#$
0
&
7
'%
$
pow.o
z
-
int main ()
{
std :: cout
std :: cout
std :: cout
std :: cout
std :: cout
pow
pow
.
$
$
pow.h
pow.C
math.h
math.C
math.h
?
A=
@
$
0
* 0
$
#
LN
&
$
%
iostream
$
0
0
%
.
0
&
.
&
)
2
&
0
s
&
t
$
#
/
)
$
0
!$
2
'$
!
0
.
&
.
0
.
0
.
,
%
.
)
$
.
#$
'$
0
$
)
$
* 2
* $
$
$
%
#$
#
)
2
!
'$
#
.
2
2
$
$
$
r
0
.
0
&
0
&
.
H
`S
C
N
Fn
LN
I TW
C
GO
IJ
Ip
D
C
S
IK
CN
N WK
T
IW
] S
+
X
T
IH
F
JO
IJ
F
D
n
i
GK
W
HK
)
.
)
.
&
)
callpow4
Program 24:
`C
O
X M
M
Program 23:
S
$
#$
.
.
(
0
&
!.
* t
.
0
0
&
// math .h
// A small library of mathematical functions.
namespace ifm {
// PRE : e >= 0 || b != 0.0
// POST : return value is b ^e
double pow ( double b , int e );
}
// math .C
// A small library of mathematical functions.
# include < cassert >
# include < IFM / math .h >
namespace ifm {
double pow ( double b , int e)
{
assert ( e >= 0 || b != 0.0);
// PRE : e >= 0 || b != 0.0
// POST : return value is b^ e
double result = 1.0;
if ( e < 0) {
// b^e = (1/ b )^( - e )
b = 1.0/ b;
e = - e;
}
for ( int i =0; i < e ; ++ i ) result *= b ;
return result ;
}
}
$
! .
s
,
0
&
&
$
#
.
&
0
%
#$
'
.
.
0
#
$
'$
$
#
'
%
.
0
%
#$
* .
$
0
math.C
'
&
$
#
)
'
math.h
.
'%
$
#
$
#%
!
'$
$
%
.
)'
$
'.
$
'.
$
pow
Fn
LN
$
#$
callpow4.o
callpow4.C
B
0
#
!
math.o
&
$
.
.
0
/
/
'
!
2
'
.
.
%
#$
/ !
(
-
* &
*
$
'$
r
#
)
$
&
%
.
$
$
$
!.
2
)
.
'
#
'
'
:
&
/
$
0
#
$
$ 0 / ! ..
.
&
)
2 $
$
0
' & (
0 .
$
'
0
.
#
.
'%
/ $
3 $ %
$
.
>
*
* !
$
*
A
A>
.
&
'
-
. / 0 ..
%
#$
0 * ! ..
!
&
&
$
$
$
/ 2
2
?
! ..
#
)'
ifm
`C
O
XYM
math.h
math.o
S
0
'
libmath.a
Fn
'.
* 0
10
7 / &
$ * &
#
2
& # 3 $ . - &
. !.
/ ! . $
&
$
'$
..
&
2
. &
2!
$
#
$
. 2
&
.
$
%
$
& .
&
$
& s
. & 0
2
&
#$
.
0
2
2
. &
! .
0 / .
$
&
&
/ !
2
t
. #
0 % 2
$
&
&
#$
$
% #$
&
& $
2
!&
. $
0 0
&
.
%
$
$
0 $
. 2 .
0
1
.
& $ !
!
& * $
&
'.
libmath.a
.
$
#
%
math.C
#
/ )
* 0
$
Centralization and namespaces
.
'
.
$
%
%
Figure 17:
2
'$
#include
)
#
math.C
!
.
&
%
'%
2
0 $
* .
.
/ I
+
IV K
S
S
DI
$
0
$.
$
h
O
IM
S
FO
C
#
$
.
$ )
r
&
&
&
.
&
'%
$
&
$
r
&
$
!
.
%
#
#$
$
! .
$
%
$
'%
$
/
0 0
)
0
$
$ #&
)
$
$
$
'
4
#
7
$
.
! &
%
$
'
.
%
*
.
! ..
* #
/
/
2
#
'$
'$
)
0
&
/
.
&
0 /
!
#
! / .
*
r
2
'
#
%
)
0
'.
$
0
&
'$
! .
$
$
$
2
.
&
.
DF
'
s
2
#
#
)'
'$
t
'
4
$
%
*
&
! .
$
$
'
O * '&
0
'$
.
0 / .
' .
'$
$
#
'
3
2
'
$
$
$
!
#
&
0
0
&
!.
2
$
' % $
>
.
*
&
* <
8 / t
std::sqrt
11
(unsigned int)(std::sqrt(121))
11 121
#
$
$
#
#
&
.
std::sqrt
N
$
$
%
)
.
.
.
$
#
$
/ +
/ +
&
2
'
$
&
.
4
$
/
' .
$
/ 2
$
'$
$
0
0
$
&
-
.
n
&
! .
.
O / ! .
'
t
.
#
#
$
$
s
*
$
r
0
&
.
&
.
0
.
#
$
.
$
.
.
$
0
%
/ $
2
&
$.
%
0
0
&
&
*
$
$
&
%
O
&
$
$
0
IN M
F
'
2
&
$
8
$
#
)
7
&
%
2
'$
#
7
0
&
&
%
&
.
* 0
2
$
$
/ $
$
.
&
.
&
.
&
%
%
0
$.
%
..
&
&
/
&
'%
! / $
'$
$
r
0
' .
$
! %
0
d <= bound
n % d != 0
'
4
'$
$
0
1
>
* <
*
$
3
-
#
$
-
#
$
.
7
*
0
.
$
%
$
$
'
'
#$
W
%
)'
$
#
&
!) .
%
0
$
$
-
C
I
N
$
.
0
0
&
X
`I
LN
S
Fn
LN
B
K
. *
)
$
#
&
'%
$
$
!
Program 26:
/ $
DF
)'
std::sqrt(121)
$
#
'
$
$
..
0
r
0 * ?
*
$
'$
#
$
%
)
&
' &
/
. '$
d > bound
bound
#
0
.
double
)'
$
'
4
.
%
10.99998
10
121
# '
'$
/
&
n
1
0
0
n
s
0
0
!
/ $
#
)
$
0
&
&
8
2
2
$
&
$
!
$
.
.
'%
$
'
) &
#
X
U
F
B
L WW
C
J
S
Fn
LN
*
0
!$
.
%
#$
$
&
*
.
.
'%
$
!
'$
.
#
)
. / ! ..
0
&
&
0
r
'.
3.1.9 Using library functions
'$
r
$
)
0
0
'$
return 0;
!%
0
0
0
*
/ 0
}
$
0
?
!
> 2
/ *
'
)
$
'%
$
.
'$
r
0.25
2.25
5
81
-512
<
$
*
'
.
&
).
!
.
0
0
&
&
pow
#
)
'
.
!
2
2
'%
$
*
%
#$
)
outputs
outputs
outputs
outputs
outputs
'
n }
0
n
'$
#
#$
.
! #
'$
'0
SO
F
F
N
I
2
&
'$
&
)
$
# include < iostream >
# include < IFM / math .h >
'$
// Program : prime2 .C
// Test if a given natural number is prime .
{2, . . . ,
d
n
! .
&
/ 0
$
$
'.
//
//
//
//
//
GCN
)S
'
#
'
std::pow
e
#
&
.
/ '
$
2
&
2
& .
& $
$
)
)
%
$
'
'
#
0
// Prog : callpow4 .C
// Call library function for computing powers .
.
&
)'
&
d
cmath
$
#$
double
2
/
.
ifm :: pow ( 2.0 , -2) < < "\ n" ;
ifm :: pow ( 1.5 , 2) < < "\ n" ;
ifm :: pow ( 5.0 , 1) < < "\ n" ;
ifm :: pow ( 3.0 , 4) < < "\ n" ;
ifm :: pow ( -2.0 , 9) < < "\ n" ;
ifm::pow
!
cmath
.
&
)
$
'0
#
'
be
0
.
n = dd
/ . /
&
2
&
% $
&
)
2
#
..
'$
#
$
%
0
$
$
%
0
/
'$
$
.
! Program 25:
IFM
$
std::sqrt
&
2
2
%
#$
7
#
&
0
n
<<
<<
<<
<<
<<
/
&
'%
$
int main ()
{
std :: cout
std :: cout
std :: cout
std :: cout
std :: cout
callpow4.C
%
* *
std::pow
math.h
# include < iostream >
# include < cmath >
int main ()
{
// Input
unsigned int n;
std :: cout < < " Test if n >1 is prime for n =? ";
std :: cin > > n;
// Computation : test possible divisors d up to sqrt (n)
unsigned int bound = ( unsigned int )( std :: sqrt (n ));
unsigned int d;
for ( d = 2; d <= bound && n % d != 0; ++ d );
// Output
if ( d <= bound )
// d is a divisor of n in {2 ,... ,[ sqrt (n )]}
std :: cout < < n < < " = " < < d < < " * " < < n / d < < " .\ n";
else
// no proper divisor found
std :: cout < < n < < " is prime .\ n ";
}
return 0;
A
A
fill
float double
*
long double
%
&
!
#
'
!
#
.
%
2 )
$
&
$.
7
.
&
&
%
#$
.
.
$
cmath
$ *
)
$
&
$
%
.
.
$
&
%
&
( '%
$
&
.
.
$
.
#
#
0
/
2
&
&
%
%
#
#
)'
.
$
#
2
! ..
'
'
7
* 6
#
)'
$
$
.
0
$
k
i
!
$
* /
$
.
.
%
#
)'
#
0
6
&
&
0
&
%
$
( 0
! %
(
$
#
)'
.
&
.
$
)5
2
#
#
7
!.
$
$
$.
$
'
#
$
)
! &
)
2
&
'$
)
$ $
0
$
2
* %
/
r
&
0
.
.
4
'
$
'$
$
2
.
0
&
! .
2
%
*
&
%
'%
$
$
&
#
G
I
NO
DC
Sn
&
K
!
$
%
$
#
0
0
!
/ $
0 #
& ! .
0
' #$
! * 0
.. )
& $
%
!
&
'%
$
)
/ $ &
% $
#
.
#
)'
!
*
.
.
0
.
$
7
&
0
$
7
&
0
&
'%
$
!.
0
$
#
&
#
%
&
$.
$
$
'$
2
* 2
@
.
#$
* 0
Y
r
* 0
' .
2
.
!
.
&
&
#$
$
&
'%
$
$
.
$
#
#
#
)'
*/
*
&
.
$
$
/ *
/
.
0
%
'%
$
#
.
.
&
! %
$
$
'
r
' .
* ..
&
0
!.
)
'%
$
!
)
&
6
.
$
' .
'
&
5
2
$
3
%
'%
$
&
&
#$
!
%
/ .
-
#
$
* '
)'
#
&
.
r
%
&
$
$
$
#
$
$
'
% / &
.
&
`I
G
n
CN
D
1O
.
&
GW
O
0
&
0
%
'
.
#$
#
)'
' . /
&
' .
IH
Cm .
0
.
$
&
&
&
0
$
/ $
&
&
0
$
$
!.
&
'%
$
/
0
%
* $
!
$
.
*
$
%
2
$
$
>
3
.
$
$.
&
s
!
2
.
&
0
&
&
.
!
#
A
* t
'
$
$
$
$
'
)
$
7
&
%
.
0
&
&
%
s
2
.
0
&
$
.
.
&
0
.
$
$
%
)
$
#
s
&
%
&
0
$
0
$
%
%
#$
'%
$
2
'$
!
#
&
'%
$
%
.
$
$
)
/ ?
* <
7
&
2
0 0 $
&
! . . & $
$
&
)
$
-
$
)
1
$
0 .
0
$ / . .
& ' % 3 $
/ $
$
> * $ * 2 /
* t
&
$
'
4
'
$
$
.
.
$
$
.
$
'%
$
$
)
) &
#
*
&
#
'$
$
.
* *
# &
0
2
7
&
! .%
2
$
/ )
t
2
)
$
.
Function declarations and definitions.
.
.
..
&
Mathematical functions.
.
$
$
.
$.
/ #
)'
&
/
$
#
)
%
#$
.
.
)
0
$
Function signatures.
#
'
&
5
$
$
&
%
$
3.1.10 Details
*
0
.
2
0
.
math.h
$
#$
i, i + 1, . . . , k
'%
$
int a [5];
fill (a , a +5);
// means : fill (a , a +5 , 0)
fill (a , a +5 , 1);
.
k
2
&
&
.
$
2
'%
$
$
fill
&
// PRE : [ first , last ) is a valid range
// POST : * p is set to value , for p in [ first , last )
void fill ( int * first , int * last , int value = 0) {
// iteration by pointer
for ( int * p = first ; p != last ; ++ p)
*p = value ;
}
7
'%
$
0
#include <algorithm>
/
%
)'
int
$
#$
Default arguments.
$
i−1
r
#
#
*
'%
)
0
/
7 #
* &
/
.
$
'
'
% #
0 &
!
&
$
&
#$
$
.
0
& '
'
%
'
#$
.
0
' .
. $
.
.
! ..
0 $ %
$
2 $
!
&
!
&
'
#
& '
#
0
%
$
'
%
#
%
. $
$
#
% $
0
' .
%
.
'
. )
.
.
&
% '
)
$
#
)'
)'
#
#
&
#
)' / #
/ '
/ .
)
2
&
% . $
.
)'
fill
*
%
2 )
0
.
$
.
&
$.
7
&
.
0
0
&
%
$
$
&
&
! .
#
-
%
'%
$
!
$
$
0
$
$
0
(
&
&
&
0
$
* t
'
'
.
/ #$
$
#
$
%
2
&
&
).
.
#
)
$
&
'
&
.
0
.
'
.
#
)'
'
&
%
$
'
#
$
0
&
'
.
/ r
s
for ( unsigned int i = 0; i < n ; ++ i)
crossed_out[i ] = false ;
%
.
$
2
&
.
$
$
'$
)
2
2
2
.
&
.
$
.
0
'$
/ &
*
0
$ $
.
0
0
0
$
#
'
.
0
0
%
$
'$
'$
.
$
$
/ '%
$
!
// PRE : [ first , last ) is a valid range
// POST : * p is set to value , for p in [ first , last )
void fill ( int * first , int * last , int value = 0);
std :: fill ( crossed_out , crossed_out + n , false );
double pow ( double , int );
A
<
A
t
s
f
C
N
Fn
LN
D
UK
n
GO
DL
H
O
IM
D
F
D
D
K
C
IN
FV
I TW
S
K
H
nK
D
S
F
D
L
L
IH
K ] `
K
m
Fm
F WW
O
IM
F
GO
I
W
K
GL O
F
IM
O
SK
nK
DFN
n
] `S
+
IN O
C
JO
`C
O
IM
`C
D
GO
LO
G
F
IM
O
K
d
CM
O
&
%
)
$
0
$
%
0
)
$
#
)
2
/
$
#
)
0
$
0
'%
$
$
t
0
&
0
%
)
$
$
1
.
$
'$
$
0
.
&
0
'%
$
$
/ &
'$
. 2&
0 &
NS
O F
n
D
$
$
$
$
0
$
0
'%
$
1
$
#
)
0
.
$
'
*
*
* $
.
0
.
&
'$
'$
'
/+
!
!2 &
.
r
t
X
f
* H
H
O
H
DS
>
HK
F OK
D
F
JS
F
L
D
C
I
LN
CK
IO
LN
F
LN
L
C
D
D
C
$
.
t
s
t
s
.
0
'
$
0
/ ! .
$
'%
$
#$
$
#
!2 &
2
$
0
)
$
!
(
$
2
'
!
$ %
$
%
$
1@
#
)
%
#$
0
0
$
?
&
0
0
'%
$
#
)
%
#$
&
'%
$
'
t
#
$
#
)6
#
#
)
>
0
&
0
0
u
u
%
$
1
.
0
0
$
0
'%
$
$
-
!
.
5
&
'
#
$
&
t
'0
1
2
2
$
t
&
u
u
*
!
'$
'$
.
&
$ &
* 0
*
/
)
$
.
.
$
$
t
X
f
O
H
H
K
Fm
F WW
O
IM
FN m
DS
HK
F OK
D
F
J
S
F
L
D
C
I
LN
D
m
O
`
IM
p
DS
K
P
F OK
D
JG
D
DS
>
F OK
D
JG
D
m
t
$
$
%
'%
$
'
UK
n
double g ( int i , int j )
{
double r = 0.0;
for ( int k = i ; k <= j ; ++ k )
r += 1.0 / k;
return r;
}
UK
n
1
.
-
$
.
t
int f ( double i , double j , double k)
{
if ( i > j )
if ( i > k)
return i;
else
return k;
else
if ( j > k)
return j;
else
return k;
}
Fm
F WW
UK
O
M
O
IM
E
D
Z
KQ
Cm
`S
I TW
F
LN
O
IM
I
CN
d
CM
O
#
)
'%
$
1
&
.
#
$
)'
#0
'
2
$
t
Exercise 68
IT
$
#
)
2
/ .
/ .
0
$
$
$
$
2
t
)
t
0
(
0
e
C
UI
Exercise 69
N
$
1
0
#
.
t
<
fill
SJ
P
)
0
'%
$
!
0
'%
$
/
3.1.11 Goals
I
IN T
'
.
.
$
&
t
x
Exercise 70
i
`
G
D
&
.
&
&
'%
$
fill_n
'%
$
.
.
-
$
1
)
' .
t
s
s
x
US
!
'
/ 1
)t
'%
$
%
$
'
#s
>
x
F
0
&
$.
'$
!
)
%
$
#
'%
$
1
'
2
s
pow
#
.
.
)
'%
$
$
0
0
&
<t
t
ex
X
$
'$
$
.
0
'
'
&
s
10
IN H
/
!
!
.
?t
Operational.
(x)
(x)
(x)
−1
(x)
−1
(x)
−1
(x)
D
* '
s
s
Dispositional.
t
s
t
s
|x|
G
0
.
s
std::abs
std::sin
std::cos
std::tan
std::asin
std::acos
std::atan
std::exp
std::log
std::log10
std::sqrt
'%
$
#
3.1.12 Exercises
bool is_even ( int i)
{
if ( i % 2 == 0) return true ;
}
double inverse ( double x)
{
double result ;
if ( x != 0.0)
result = 1.0 / x;
return result ;
}
?
A
A
A
int main ()
e=
∞
X
i=0
bi 2 i ,
m
e
E
`C
X
IG O
`L
F
J
FO
DS
F OK
C
s
<t
DI
F
O
IM
FH
C
IO
DS
K
m
q
G
EF
`
I TW
F
LN
m
P
S MK
O
DO
`I
OK
FO
DI
F
DO
IW
`L
K
O
O
IK
J
I
S
`F
S
Z
Q
X
`I
LN
I
CN
K
JM
K
M
U
K
F
CN
L
C
m
K
SK
`I
LN
D
UK
O
X Z
DS
`K
W
F WK
D
IO
FO
GL
UF
m
O
IM
D
K
2 #
F
IN T
`
G
D
O
IM
DO
G
F
J
FO
`
C
N
Fn
LN
C
D
X
I
s
Z
<t
SK
J
IN
Ip
E
FN
IM
O
O
I TW
C
W
OW
DO
I
S
I
LN
I
EN
CJ
Ip
I
CN
I
EL
F
S
GI
C
V WW
m
K
P
G
N
EF
D
FH
I
GS
`
IO
ES
S
IN T
`
G
D
K
OK
DO
F
L
D
n
C
F
IM
CM
O
O
`I
G
O
N
S
S
E
C
I
\
M
OW
I
CW
VO
K
I
N
K
S MK
O
IN H
D
G
Se
UFN
E
IJ
N
FN
JO
O
CM
O
G
J
S
`
C
N
Fn
D
n
`C
CM
GJ
G
Fo
K
]
GI
GI
I
N
C
V
S
CW
VO ]
K
S
I
S OK
C
S
FN
N
IN
I
W
CM
IM
O
]
W
C
V
I
V OK
S
F
L
m
K
X
I
EL
F
GI
C
V
C
FN
O
W
m
O
H
e
FN m
O
CM
O
U
DF
E
DW
F
UI
CM
O
`I
G
S
S
C
UI
D
C
]
IW
O
UI
E
DI
G
NO
I
N
GI
C
V
T
H
W
O
IM
IT
Z
Q ]
O
m
D
F OK
D
GJ
E
CN
N WK
T
IM
`
Nm
CW
FO
L
G
N
EF
D
O
CM
FO
`I
G
S
E
IN
VO
DF
SK
<t
s
O
c
T
O
m
D
F OK
D
JG
E
CN
N WK
T
IM
D
nK
GS
E
I
h
SK
J
IN
p
`
Fm
N
`
C
N
Fn
LN
m
WK
IM
E
`L
K
X
S
std::sqrt
G
Fo
`I
X H
FN m
IN
JW
K
GW
L OK
`
FO
I
Im
N
I
CN
G
EF
M
IT
OQ
K
H
O
CM
CO
D
C
E
unsigned int
L
I
CN
DS
]
CJ
m
D
C
SK
QR ]
DCN
H
EF
G
D
D
C
FT
s(x)
D
F OK
C
DO
I
SH
I
DI
j
|e|
S
I
F OK
C
JW
K
GW
L OK
`
\
F
O
IM
M
D
S MK
X `
T
SK
`
0
LN
I
NE
DCN
K
`
S
C
N
Fn
N
D
LN
F
F OK
F OK
D
m
IO
ES
S
W
CK
I TW
I
N
double x
x
T
S
CM
S
e
IW
CM
O
H
0
D
O
M
K
Z
FT
O
{2, . . . , 10000000}
(i, i + 2)
C
J
m
m
GJ
C
d
I OK
N
ε,
G
pow
L
C
C
F
D
GJ
S MK
O
H
1/2
S
N
D
CJ
F
M
S
LN
L
I
GS
D
`I
ε
H
IT
I OO
Cm
Fe
D
C
IN T
I
D
n
C
UJ
F
)
E
FT
X Z
C
D
K
MK
G
D
`
O
IM
S
FN
|s(x) − x|
x
F OK
JG
D
m
H
O
Nm
F[
x
F OK
D
IM
D
C
S MK
O
N
Exercise 73
CJ m
m
DI
WK
Z
CW
FO
L
S
K
IN
D
Exercise 72
std::pow
X O
D
JG
Exercise 75
D
R
GO
C
C
std::sqrt(
UK
n
IM
O
N
double f ( double x )
{
return g (2.0 * x );
}
I
Z
# include < iostream >
Fm
F WW
F
T
t
s
t
s
int main ()
{
int i ;
std :: cin > > i;
h (i );
D
bool g ( double x)
{
return x % 2.0 == 0;
}
J
void h ( int i)
{
std :: cout < < g(i ) < < "\ n";
}
IM
O
n
CM
X `
C
N
Fn
LN
D
UK
n
return 0;
B
K
Fm
F WW
O
IM
D
int g ( int i)
{
return i * f (i ) * f( f(i ));
}
I
void h ()
{
std :: cout < < result ;
}
`S
K
int f ( int i)
{
return i * i ;
}
GS
M
I TW
F
LN
I
I
NO
H
Exercise 71
D
# include < iostream >
{
double result = f (3.0);
h ();
}
return 0;
x.
}
Exercise 74
// POST : return value is true if and only if n is prime
bool is_prime ( unsigned int n );
be
@=
@
A
O
DS
]
]
H
G
n
M
O
FM
UI
F WW
C
O
ID
XYH
IH
IT
FO
f
K
D
m
N
X
D
JG
Exercise 80
N
D
C
D
math.C
`
C
S
H
IW
O
IM
`
K
Fm
`N
Nm
t
s
<t
s
X
O
T
K
m
D
C
] DS
+
H
F OK
D
GJ
S
C
C
`
Fm
N
Se
S
CO
G
S
O
IM
DO
`I
IW
`L
`
DS
m
]
C
N
Fn
LN
G
N
EF
F OK
D
JG
I
S
O
IM
`
Fm
N
IN M
I
Fn O
`
C
Z
X
O
m
S MK
O
K
WK
e
Ie
F
OM
FW
n`
`
C
N
Fn
LN
IM
C
W
In W
C
H
m
K
H
IW
`L
C
DIp
`
C
N
Fn
LN
IM
E
CH
D
F
jk
E
] j
GCN
D
C
D
CM
O
CW
IN O
DF
O
CN O
S
GW
FM
Q
O X Z
X OK
R
IJ
I
NO
DF
D
C
CH
] IO
]
K
SK
GO
DL
O
IM
IN M
IM
O
U
e
IJ M
S
e
R
D
C
`J
C
N
Fn
LN
IM
O
CM
O
O
S
CH
IO
F
I
D
n
C
IM
N
X E
CH
I
UI
D
m
H
nK
D
F
L
S
I
N
FN
J
O
IM
S
GO
GL O
`
C
N
Fn
LN
C
d
I OK
N
D
C
GO
DL
H
O
IM
`
K
Fm
N
CH
IO
C
SH
C
I
O
CM
NO
X Z
CN
EI
T
K
S
CO
G
S
T
O
IN M
F
FO
I
G
JH
I
N
O
FO
I
S
G
N
EF
D
K
L
C
IW
C
K
SK
CN
EI
D
I
V
Cn
IN M
IM
O
U
DI
F
] D
n
EO
D
C
E
UC
C
D
K
MK
nK
V
Gn O
IH Se
X
IN O X
Q
`K
d
OK
DI
FM
FO
H
SK
I
DI
E
DW
CO
IN
JG
EF
O
CM
O
Se
CO
G
F
K
S
CO
G
S
C
e
T
FN m
I TW
S
S
F
L
I
S
G
N
F
Jm
SK
O
IH
F
Jm
F
S
DI
WK
Im
U
S
G
N
F
Z
H
WW
T
O
WW
E
IM
CM
O
O
`C
S
F
WW
K
K
K
SQ
`C
S
H
IT
GW
FM
S
Se
S
CO
G
SW
GC
VD
C
GO
T
Jm
F
H ] I
WK
UK
O
M
I
C
I
IT
N
DK
G
H ] GI
GW
F
O
m
K
T
O
M
DF
O
O
SK
I
S
C
G
J
X e
S
CO
S MK
I
G
JH
I
DN
C
GJ
EF
JM
K
M
U
FO
Se
S
CO
G
Sm
F
I
S
C
E
DO
IH
X
CH
IO
GO
DL
D
I
V
n
K
K
Cm
F
E
CH
Z
X]
X
X
]
e
G
fD
E
CH
D
F
E
CH
I
UI
O
IM
G
SO
GL O
F
O
CM
O
`
C
N
Fn
LN
C
I OK
U
N
FO
e
SK
S
CO
IM
R
Q
T
O
H
P
X E
CH
G
NO
C
C
D
F
O
K
UK
WW
IT
E
CN
L
nT
e
] WK
E
O
S MK
G
J
j
k
] j
GS
G
n
D
F
IO
C
Z
Q
]
e
O
M
SJ
m
K
m
T
e
O
R
FO
IT X E
CH
S
NM
G
C
S
UC
E
CH
I
UI
O
IM
S
UC
CM
O
U
GO
k
jk
IN T
k
`
I
FV a
D
DF
U
FH
`I
C
J
D
F OK
C
IN H
DI
F
]
m ]
US K
O
IM
EF
CN
S
IN
D
VD
C
O
IM
j
F
E
CH
I
UI
O
IM
SK
CM
O
U
P
Z
Q
X
X]
X
X
K
m
O
UC
D
IN i
WW
WK
IM
CM
O
O
U
DF
e
IW
`L
C
Ip
FN m
E
`C
G
Fo
CH
IO
D
I
V
En
D
C
F
E
CH
D
G
Z
]
0
H
O
e
E
CH
D
F
E
CH
I
UI
IM
DI
`K
IH
IN O
FO
I
GS
IT
D
C
J
'
.
.
Q
O
R
O
O
I
G
NO
J
G
NS
D
UK
n
Fm
F WW
IM
I
CV M
H
GW
FM
`S
C
N
Fn
IM
LN
SO
T
m
`
C
N
Fn
LN
C
f
m
D
n
<t
s
CM
J
DIN O
K
FN m
D
F OK
D
JG
C
S WW
C
JH
D
C
S
DI
IH
O
CM
O
O
m
X Z
j
F OK
IJ
F
SW
C
I
I
K
SQ
S
S
I
J
CJ
`
FH
D
C
N
IN
F
DF
FH
D
X b
X
O
CM
O
S
DIN
C
DO
UFN
H
K
m
m
OK
CK
W
DO
IO
F
L
O
IM
S
CM
D
F OK
D
GJ
D
n
FN
S
G
N
EF
] F
S
D
nK
FH
D
I
I
J
G
GS
EF
`I
] D
O
F
e
nK Jm
D
F
NF m NG
S
J
I
F X Z
F
s
<t
DO
`I
WK
fD
Sn
S
C
D
C
D
H
K
F OK
C
C
K
DK
OK
`
Fm
NO
CN
L
K
Z
CQ
S
DIN O
F
DL
DF
F OK
C
IN
L
EF
DW
F
O
IM
S
C
Q
O
Q
f
I
ND
K
K
K
Z
O
H
H
IN O m
C
I
GS
IT
D
C
JH
D
C
DS
HK
F OK
D
F
SJ
F
L
D
C
I
Z
JK X
DIN O
F
L
I
GS
T
OW
FO
E
CN
S
S
I
DIJ
E
JO
SN
DF
GO
I TW
C
SN
IH
SK
OK
SK
J
IN
Ip
O
S MK
LN
`I
C
S
O
IM
FN
] I
f
G
N
EF
F
E
D
J
q
m
F
S
JM
K
M
CM
U
m
UK
O
M
O
CM
O
D
F OK
D
GJ
m
IK
J
I
O
IM
I
CN
`L
F
J
FO
D
O
IM
std::sort
include<algorithm>
?t
Fn
<t
I TW
C
GO
IJ
Ip
D
C
IO
C
DIN
I
n
FO
E
CN
N WK
T
CW
FO
L
G
N
EF
D
math.h
s
O
S MK
I
S
F
E
CN
N WK
T
C
I
G
NO
G
J
S
S
I
FJ
perpetual_calendar.C
LN
X
\
N
Fn
LN
GW
JH
FM
F
D
G
S
Z
N
// your function definition goes here
`
C
N
Fn
N
H
Exercise 79
i
GK
W
H
O
i =? 5
j =? 8
Values after swapping : i = 8 , j = 5.
D
b
IM
SN
F
F
J
N
IW
I
J
Exercise 78
sort
s
c
C
O
GO
LN
Z
C
X
X
IJ
F
UF
d
I OK
N
++p
`
C
`
S
return 0;
\
N
T
// your function call goes here
N
R
<t
s
std :: cout < < "j =? " ;
int j ; std :: cin > > j ;
Fn
IM
K
}
N
L
O
M
CM
O
O
E
UC
G
J
DS
`
C
H
// output
std :: cout < < " Values after swapping : i = " < < i
< < " , j = " < < j < < " .\ n ";
C
\
D
I
SK
J
h
N
Fn
LN
m
# include < iostream >
N
Fn
// PRE : [ first , last ) is a valid range
// POST : the elements *p , p in [ first , last ) are
//
in ascending order
void sort ( int * first , int * last );
N
m
IN
p
`
Fm
N
IW
IO
`L
F
J
O
IM
F
D
G
N
IW
`L
W
.
`
Q
F OK
D
GJ
C
S WW
C
JH
D
C
S
DI
IH
`
C
N
Fn
LN
m
int main () {
// input
std :: cout < < "i =? " ;
int i ; std :: cin > > i ;
Fm
GO
T
O
nK
E
IO
`L
CN
IT
E
`C
O
IN H
FN
D
N WK
T
H
CN H
D
CO
S
`K X
CN W
S
K
H
nK
D
I
SJ
C
DF O
E
C
N
O
IM
E
sort_array.C
sort_array2.C
SK
CM
O
FN
std::sort
sort
O
Z
m
`
F
S
GI
swap.C
I
GS
FO
CN
O
IM
F
D
O
nK
FN
HK
C
Ip
D
int
D
F
S
F OK
D
JG
C
I
GSN
T
FK
V
C
O
IV M
2i bi
m
m
F
C
SK
D
nK
b
O
IM
F
E
C
N
Fn
Exercise 77
S
O
IM
LN
D
n
GW
OK
I
IN [
Exercise 76
F
H
FN m
UI
`
FN m
IN
F WW
C
S
I
N
i=0
∞
Y
H
K
L
FO
O
DF
b =
FT
IM
D
DS
F OK
e
day =? 13
month =? 11
year =? 2007
Tuesday
Q
@>
@
K
IN M
n
K
HK
D
I
J
WW
O
IM
K
K
K
m
H
E
D
C
FN m
CH
IO
GL
D
Z
CQ
D
C
DO
`C
GW
FO
I
GS
X
f e
g
FJ W
IN M
E
D
C
IN M
IM
O
U
D
e
nK
IJ M
J
FN
O
O
H
CN H
D
CO
IM
S
IJ
NH
K
I
N
FO
DO
DI K
I
D
V
F
J
IT
D
O
W
D
FK
GO
F
S
IM
O
UK
WW
IT
`
C
N
Fn
LN
IJ
N
FN
J
W
O
S WW
I
EJ
`L
] K
D
I
C
Cn Q
I
`FN
E
D
C
E
L
L
C
DS
W
M
P
D
FK
W
OK
GO
F
S
C
CN
L
E
U
GI
DK
G
O
IM
FN
F OK ] I W
G
L
Z
Q
IM X
F
WW
OK
H
IW
IO
`L
F
JZ
E
C
CN
LQ
C
IT
H
GW
FM
S
GO
GL O
IM
R
I
O
W
WK
f e
g
FJ W
IN M
WW
L
IO
U
E
IO
C
CN
L
I
S
IW
C
D
OM
I
O
CM
O
F
S
] S
+
K
MK
T
H
IT
n`
S
IN T
`
G
D
CJ
UF
O
IM
S
O
Ie
H
IH
F
D
J
I
IT
E
DO
DI K
I
D
V
F
JH
GW
F
J
I
K
I
EJ
`L
DI
C
S
IO
C
JH
K
F
I
D
J
GI
S
I
K
D
O
m
K
Z
FV T X
R
C
`
Fm
N
IW
G
L
G
e
FH
G
O
IM
UF
I
CN
I
O
IN M
S MK
t fD
O
K
DS
I
L
L
CM
O
O
>
F
SJ
F
L
O
IM
D
D
O
CM
O
U
E
C
S
DF
IM
E
DW
F
D
nK
GS
E
T
IW
G
L
O
W
IM
I
VF
S
FO
E
O
$
s
K
F OK
C
DO
`I
IW
`L
G
N
EF
S
I
F
D
FH
m
m
F OK
D
GJ
m
m
D
I
UI
IT
O
S
IN T
`
G
D
D
C
H
]
H
T
I
IN M
U
U
F
EN
U
F
ND
I
V
Sn
IN T
`
G
D
N
K
K
OQ
In M
d
`
C
N
Fn
LN
C
I OK
N
K
K
C
F
`
m
FN m
D
IW
G
L
G
e
FH
G
C
GO
DL
S
C
S
Ie
CM
O
CO
O
X
I
EL
O
O
IM
F
O
X
Fp T
G
I
D
n
C
N
GI
C
V
W
WW
H
]
c
X
m
D
C
DO
F
J
O
FO
DF
D
U
DF
E
C
I
CN
I
CN
e
H
W
Fp T
D
K
F OK
D
JG
IM
D
F OK
IJ
I
I
S
n
O
H
]
X
O
O
WW
O
IM
D
FN
U
F
N
`I
C
S
O
IM
D
S WW
I
J
IN M
F
I
EL
IM
O
CM
O
O
`I
G
S
S
C
E
`C
G
Fo
U
F
O
IN M
D
UK
O
MK
E
T
H
I WW
IT
FO
C
p
`I
C
S
b
b
O
IM
D
K
K
K
X OK
S
IO
D
C
D
F OK
D
GJ
@
@
m
Z
UK
n
D
Fm
F WW
O
IM
DO
`I
IW
`L
C
S
C
] K `I
D
J
O
O F
IM
IM
W
J
G
D
I
G
WW ] `D
`
IN T
C M FN
S
.
FN m
.
O
IN M
F
C
IO
DC
WK
`K
I
I
]
H
CN H
D
Sh
CO
h
h
UK
O
M
O
IM
S
I WK
`L
F
J
X c
K
D X
O X
IM
R
CV M
UI
K
m
K
K
SK
InD O
IN
S
I
CN
DI
IM
O
O
] W
E
IJ
N
FN
H
Je
UFN
FO
I
NG
I
EN
DW
F
SK
O
W ] IM
D
S
] `
D
JK
FN
D
I
F
J
s
<t
m
n
FN m
CH
IO
D
C
J
I TW
S
S
F
L
OK
WW
C
G
JH
IH
I
FV T
FO
C
t
O
IM
F
D
FN K
CV M
IT
m
K
O
HK
F OK
D
F
SJ
F
Z
n
C
S
CH
CO
Cm
J OK
F
X Z
EL
D
UN
DF
0
0
>
O
IM
E
IJ
L
S
K
L
IM
R
9
SK
IT
IW
GL O
O
`
s
X D
+
O
InD O
IN
S
I
CN
DI
0
D
3 9 1
5 6 4
2 8 7
GO
5 6 7
9 2 8
3 1 4
] IW
2 8 4
7 3 1
9 6 5
G
6 2 3
4 1 9
8 7 5
C
8 5 1
6 7 3
2 4 9
4 7 9
5 2 8
6 1 3
L
7 4 6
1 3 2
9 5 8
IM
O
1 8 5
4 9 6
7 3 2
J OK
3 9 2
8 5 7
1 4 6
Fm
'$
$
#
)
.
&
m X
m
F OK
D
JG
G
N
EF
F
D
HK
F OK
T
sudoku.C
U
f
W
H
GW
FM
S
`
C
N
Fn
?t
s
!
2
.
&
0
3 0 0
0 6 0
0 0 0
FK
LN
IM
I
GCN
S
K
*
$
/ 2
$
0 0 7
0 2 0
0 0 4
GO
N
DS
F OK
G
JH
IH
O
D
I
UI
FD O
k
H
IH
K
%
%
#$
.
0
.
0 0 4
7 3 0
0 6 5
OK
W
F
S
IM
O
OK
IN M
I
I
EL
S
R
M
K
IT
O
S
IN T
`
G
D
K
&
'%
$
0 0 0
0 1 0
0 0 5
S
`I
nH
K
f e
g
FJ W
F[
T
H
IN M
O
IM
E
IO
C
JH
K
D
DF
f
W
G
J
S
D
I
J
$
$
!
'
8 0 0
0 0 0
0 0 9
F
K
SK
CM
O
`I
F[
H
m
K
.
'%
$
&
!
$
!$ %
'$
>
4 0 0
0 2 0
0 0 0
O
IM
] IW
`L
C
Ip
I
FV T
H
IT
O
H
K
D
C
H
W
FH
N
Cn
D
FH
] S WW
+
I WW
H S
T GT
E
VH
E
C
I
CN
I
CN
S WW
K
I
S
F
.
0
t
7 4 0
0 3 2
9 0 0
C
`
O
IM
K
Fm
GO
DL
N
D
K
O
IM
D
H
nK
DK
n
D
CO
C
O
IM
N
n
IN T
`
G
D
E
] K
H
IV
IN
D
I
N
nH
IT
O
UI
S
IW
IO
`L
IN T
`
F
D
E
G
m
T
O
IM
J
F
S WW
I
J
I
JH
N
n
`I
L
SK
$
#
)
s
0
0
. * t
.
1 0 0
0 9 0
7 0 0
C
L
L
] W
E
DS
F OK
F
J
IW
C
I
N
JM
K
M
U
GW
K
e
IW
G
L
G
H
Fp T
D
D
K
DK
n
`C
$
t
%
#$
$
0 0 0
0 5 0
0 0 6
D
F OK
`C
Nm
DF
G
JH
IH
IM
O
FO
D
D
FM
S
FH
G
Cm
F
IW
W
F
e
IW
G
GL
FH
G
'%
$
81
X
O
IM
(r, c, n)
DJ
I
O
CM
O
6
EL
SK
O
4
S
FN
DS
W
E
S
IN T
H
IN T
`
G
`
D
G
D
O
S MK
D
H
W
I WW
E
C
I
CN
O
IM
`
5
GO
K
&
GC
OK
O
F OK
K
S
UF
I
GCN W
JO
CN
O
Fm
1
`
W
f
W
DL
'$
!$
L
SK
I
EJ
`L
X WW
IN M
R
I
CN
IM
X H
H
R
IN T
`
G
D
D
C
I
N
I
G
JH
IH
C
D
] `
`L
C
G
CJ
1
`I
F[
r
0
&
%
D
IO
C
L
I
I
W
`
G
SN K
S
O
FO
E
Ip
D
m
3.1.13 Challenges
G
n
O
LK
IW
Q
GK
CO
I TW
S
C
FN m
7 4
3 2
9
N
$
/ .
#
'
#
$
$
$
M
F
J
S
I
FJ
LN
D
F OK
NE
`C
I
N
I
S WW
I
J
F
S
WW X M
O
IM
FO
9
UK ] U
O J
M F
]
f W
g
F
N
`I
C
2
2
,
K
n
H
S
IM
O
K
&
#
CJ
F
U
F
DN
CH
IO
F
W
SK
C
F
1
I WW
IT
FO
D
I
IN M
/
&
LN
L
W
G
JH
C
n
O
IM
H
round
0
F
S
CM
WW
U
`I
2
C
S
`I
WW
F
NM
CJ
I
D
SK ] U
J
I
IN [
I
D
J
UK
O
MK
I
Fp T
// POST : return value is the integer nearest to x
int round ( double x );
J
K
I
J
IM
F
S
/ .
I
HK
OW
O
CM
O
E
D
C
int
UN
F
I TW
S
S
F
K
O
CM
O
O
CN
I
L
H
W
F[
D
IH
c
N
DS
L
C
E
C
I
CN
$
IM
J
DI
X
F
E
CJ
Ip
S
G
UC
C
N
J
FJ
9 9
`L
S
C
C
`I
E
WK
e
O
r
#
'
CN
S
n
O
IN M
`
#
FJ W
F
] IW
G
L
O
9
7 3
F
S
WW
I
DIJ
Fm
C
J
C
SK
W
IM
D
nK
FV
DS
2
H
S MK
H
IM
O
IN T
`
G
D
$
! .
2
C
IO
D
FN m
IN M
K
-
6 7
8
NO
D
J
J H ] WW
G
C
F OK
D
O
IM
I
J
O
IM
H
9
DC
R
0
&
#
US
.
IH
CM
G
DF O
I WW
4
7 3
6 5
S HK
OK
S
H
J
S
I
D
C
IN M
U
E
S
C
I
Fm
F WW
&
&
'$
1
math.h
X
WK X
b
Fp T
!
2
5
`K
I
&
X Z
&
math.C
I
b
'
3
CV M
IN T
`
G
D
WW
4
p
FN
D
] `
G
j
Exercise 81
3
9
UI
D
I
JK
S
X
double
n
0
OK
X
f
X E
K
WW
K
M
C
H
IW
G
DW
F
UK
WW
E
J
O
S MK
I
D
JK
S
S
] I
`S
I TW
F
LN
`C
S
] I
IN M
]
O
S
C
H
IW
IT
CW
I
CN
E
IM
D
I
IV
E
S
C
I
J
m
K
FN m
D
q
I
O
H
T
H
W
IN M
I
CN
D
C
`
C
N
Fn
LN
G
N
EF
E
I
I
E
E
&
VF
S
IT
D
C
J
IK
IN
O
J
I
FN m
I
OK
`K
L
IV M
UC
E
D
V
I
O
D
C
IH
I
F
IJ
DI
F
LN
J
K
F
FO
O
I TW
C
FN
N
FN
#
' 0
#
H X 0
SK
V
DF
H
C
SK
O
IN H
D
C
IO
I TW
C
I
JO
DF
C
I
CV M
O
C
D
UF
DS
JW
K
`L
F
J
I
`FN
FO
F OK
C
`K
L
F
Hint:
S
IN
L
C
L
US
DI
D
CN
I
L
L
C
E
C
J
EL
WW
O
CM
O
O
S
e
IW
G
L
G
FH
G
O
K
K
<
@
@
S
`F
O
CM
O
IN
FV
UK
WW
SJ HK
G
Fo
© Copyright 2026 Paperzz