CS99 |
Fundamental Programming Concepts
Summer 2001 |
|
Lab 5: Solutions
Part I: Dangling Else
a) No
modification is necessary.
if
( y == 8 )
if
( x == 5 )
System.out.println(
"@@@@@" );
else
System.out.println( "#####" );
System.out.println(
"$$$$$" );
System.out.println(
"&&&&&" );
b)
if
( y == 8 )
System.out.println(
"@@@@@" );
}
else {
System.out.println( "#####" );
System.out.println(
"$$$$$" );
System.out.println(
"&&&&&" );
}
Alternatively:
if
( y == 8 )
if
( x == 5 )
System.out.println(
"@@@@@" );
else
{
System.out.println( "#####" );
System.out.println(
"$$$$$" );
System.out.println(
"&&&&&" );
}
c)
if
( y == 8 )
if
( x == 5 )
System.out.println(
"@@@@@" );
else
{
System.out.println( "#####" );
System.out.println(
"$$$$$" );
}
System.out.println(
"&&&&&" );
d) Impossible using just braces.
Part II: Tracing a program segment
int
n = 9293;
int
x = 1000;
int
d = 0;
while
( x > 0 ) {
d = (n / x) % 10;
if ( d < 9 )
x = x/10;
else
n = n - d*x;
}
n: | 9293 | 293 | 203 | ||||||||||||
x: | 1000 | 100 | 10 | 1 | 0 | ||||||||||
d: | 0 | 9 | 0 | 2 | 9 | 0 | 3 |
Part
III: Prime and Perfect Numbers
Part A:
TokenReader
in = new TokenReader( System.in );
System.out.println(Enter
a positive number: );
int n =
in.readInt();
int k = 2;
boolean
isPrime = true;
while ( k
< = n-1 && isPrime ) {
if ( n%k == 0 )
isPrime = false;
k++;
}
if ( isPrime
)
System.out.println(n + is prime. );
else
System.out.println(n + is not prime,
and it is divisible by + (k - 1) );
Part B:
TokenReader
in = new TokenReader( System.in );
System.out.println(Enter
a positive number: );
int n =
in.readInt();
int sum = 0;
int k = 1;
while ( k
< = n-1 ) {
if ( n%k == 0 )
sum+=k;
}
if ( sum ==
n )
System.out.println(n + is a perfect number.
);
else
System.out.println(n + is not a
perfect number." );