CS 100: Section Assignment S1
Solutions
1.
// S1_1
// Compute various sin and cos values using trigonometric identities.
import java.io.*;
public class S1_1 {
public static void main( String args[]){
// initialize Text object in to read from standard input.
TokenReader in = new TokenReader(System.in);
double c60,c72,c36,s36,c30,s30,c6,s6,c3,s3,s27;
c60 = 0.5; // cos(60)
c72 = (Math.sqrt(5.0) - 1.0)/4.0; // cos(72)
c36 = Math.sqrt((1.0 + c72)/2.0); // cos(36)
s36 = Math.sqrt(1-c36*c36); // sin(36)
c30 = Math.sqrt((1.0 + c60)/2.0); // cos(30)
s30 = Math.sqrt(1-c30*c30); // sin(36)
c6 = c36*c30 + s36*s30; // cos(6)
c3 = Math.sqrt((1.0+c6)/2.0); // cos(3)
s3 = Math.sqrt(1-c3*c3); // sin(3)
s27 = c3*s30 - c30*s3; // sin(27)
// Note that Math.cos and Math.sin assume the argument is in radians.
Format.println(System.out,"\ncos(3) = %10.6f (via trig formula manipulation)",c3 );
Format.println(System.out,"cos(3) = %10.6f (via direct call)",Math.cos(Math.PI*3.0/180.0));
Format.println(System.out,"\nsin(27) = %10.6f (via trig formula manipulation)",s27 );
Format.println(System.out,"sin(27) = %10.6f (via direct call)",Math.sin(Math.PI*27.0/180.0));
// Wait for user to enter input to ensure console window remains visible
in.waitUntilEnter();
}
}
2.
// S1_2
// Seconds to hours-minutes-seconds.
import java.io.*;
public class S1_2 {
public static void main( String args[]){
// initialize Text object in to read from standard input.
TokenReader in = new TokenReader(System.in);
int T; // Time in seconds.
int h, m, s; // T = h hours + m minutes + s seconds.
int WhatsLeft; // T - 3600*h
System.out.println("\nEnter time (seconds):");
T = in.readInt();
h = T / 3600;
WhatsLeft = T % 3600;
m = WhatsLeft / 60;
s = WhatsLeft % 60;
Format.println(System.out,"\n%9d seconds =",T);
Format.println(System.out," %4d hours",h);
Format.println(System.out," %4d minutes",m);
Format.println(System.out," %4d seconds",s);
// Wait for user to enter input to ensure console window remains visible
in.waitUntilEnter();
}
}
3.
// S1_3
// Taxi Fare Computation.
import java.io.*;
public class S1_3 {
public static void main( String args[]){
// initialize Text object in to read from standard input.
TokenReader in = new TokenReader(System.in);
double distance; // Distance traveled (assumed in miles)
double eighths; // Distance traveled (in eighths of miles)
double units;
double fare;
System.out.println("\nEnter distance (miles):");
distance = in.readDouble();
eighths = 8.0*distance;
units = Math.ceil(eighths);
fare = 5.0 + (units-1.0)*2.0;
System.out.println("Fare = " + fare + " dollars");
// Wait for user to enter input to ensure console window remains visible
in.waitUntilEnter();
}
}
4.
// S1_4
// Draws an ellipse and the "bounding diamond".
import java.io.*;
import java.awt.*;
// Class CUCSDrawing: a simple graphics window.
public class CUCSDrawing extends Frame
{
// Method paint is called by the system whenever the drawing window needs
// to be refreshed, including when it is first created and when it is brought
// to the front after being hidden by overlapping windows.
// The ellipse and diamond have center (xc,yc) and the ellipse has
// semiaxes a and b.
final int xc = 250;
final int yc = 150;
final int a = 100;
final int b = 60;
public void paint(Graphics g)
{
int r; // The "radius" of the diamond.
r = (int) Math.sqrt(a*a + b*b);
g.drawLine(xc+r,yc,xc,yc-r); // First to second base.
g.drawLine(xc,yc-r,xc-r,yc); // Second to third base.
g.drawLine(xc-r,yc,xc,yc+r); // Third base to home.
g.drawLine(xc,yc+r,xc+r,yc); // Home to first base.
g.drawOval(xc-a,yc-b,2*a,2*b); // The ellipse
}
}
public class S1_4
{
public static void main(String args[])
{
CUCSDrawing d = new CUCSDrawing();
d.resize(800,600);
d.move(0,75);
d.setTitle("S1_4");
d.show();
d.toFront();
}
}