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 ) {
   
     if ( x == 5 )
             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." );