



Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Introduction to computer science - Section Handout Assignment of Programming Methodology. Simple Java Programs. Prof. Sahami - Stanford University
Typology: Exercises
1 / 5
This page cannot be seen from the preview
Don't miss anything!




Mehran Sahami Handout # CS 106A October 5, 2007
Based on a handout by Eric Roberts
Your job in this assignment is to write programs to solve each of these six problems.
The pyramid should be centered at the bottom of the window and should use constants for the following parameters:
BRICK_WIDTH The width of each brick (30 pixels) BRICK_HEIGHT The height of each brick (12 pixels) BRICKS_IN_BASE The number of bricks in the base (14)
The numbers in parentheses show the values for this diagram, but you must be able to change those values in your program.
This figure is simply three GOval objects, two red and one white, drawn in the correct order. The outer circle should have a radius of one inch (72 pixels), the white circle has a radius of 0.65 inches, and the inner red circle has a radius of 0.3 inches. The figure should be centered in the window of a GraphicsProgram subclass.
The only classes you need to create this picture are GRect , GLabel , and GLine. The major part of the problem is specifying the coordinates so that the different elements
Your program should handle the following special cases:
Pick some positive integer and call it n. If n is even, divide it by two. If n is odd, multiply it by three and add one. Continue this process until n is equal to one.
On page 401 of the Vintage edition, Hofstadter illustrates this process with the following example, starting with the number 15: 15 is odd, so I make 3 n + 1: 46 46 is even, so I take half: 23 23 is odd, so I make 3 n + 1: 70 70 is even, so I take half: 35 35 is odd, so I make 3 n + 1: 106 106 is even, so I take half: 53 53 is odd, so I make 3 n + 1: 160
160 is even, so I take half: 80 80 is even, so I take half: 40 40 is even, so I take half: 20 20 is even, so I take half: 10 10 is even, so I take half: 5 5 is odd, so I make 3 n + 1: 16 16 is even, so I take half: 8 8 is even, so I take half: 4 4 is even, so I take half: 2 2 is even, so I take half: 1
As you can see from this example, the numbers go up and down, but eventually—at least for all numbers that have ever been tried—comes down to end in 1. In some respects, this process is reminiscent of the formation of hailstones, which get carried upward by the winds over and over again before they finally descend to the ground. Because of this analogy, this sequence of numbers is usually called the Hailstone sequence, although it goes by many other names as well.
Write a ConsoleProgram that reads in a number from the user and then displays the Hailstone sequence for that number, just as in Hofstadter’s book, followed by a line showing the number of steps taken to reach 1. For example, your program should be able to produce a sample run that looks like this:
The fascinating thing about this problem is that no one has yet been able to prove that it always stops. The number of steps in the process can certainly get very large. How many steps, for example, does your program take when n is 27?