for(int c = 0; c < t[r].length; c++)
t[r][c] = keyboard.nextInt();
k) Write a series of statements that determines and displays the smallest value in t.
int small = t[0] [0];
for ( int x = 0; x < t.length; x++)
for( int y = 0; y < t[x].length; y++)
{
if (t[x][y] < small)
small = t[x][y];
}
System.out.println(“Smallest Value :” + small);
l) Write a single printf statement that displays the elements of the first row of t.
System.out.printf(t[0][0] + “” + t[0][1] + “” +t[0][2]);
m) Write a statement that totals the elements of the third column of t. Do not use
repetition.
InTotal = t[0][2] + t[1][2];
n) Write a series of statements that displays the contents of t in tabular format. List
the column indices as headings across the top, and list the row indices at the left
of each row
System.out.println(“ 0 1 2 “ ) ;.
for ( int i = 0; i < t.length; i++)
{
System.out.print(i + “”);
for (int j = 0; j < t[1].length; j++)
System.out.print(t[i][j] + “”);
System.out.println();
}
Q2. (Game of Craps) Write an application that runs 1,000,000 games of craps (Fig. 6.8 of your
textbook) and answer the following questions: (10 points)
a) How many games are won on the first roll, second roll, …, twentieth roll and after
the twentieth roll?
b) How many games are lost on the first roll, second roll, …, twentieth roll and after
the twentieth roll?
c) What are the chances of winning at craps? [Note: You should discover that craps
is one of the fairest casino games. What do you suppose this means?]
d) What is the average length of a game of craps?
e) Do the chances of winning improve with the length of the game?
001
import java.util.Random;
002
003
004
public class GameOfCraps {
005
private Random randomNumbers=new Random();
006
private enum Status{Continue, Won, Lost};
007
int[] GamesWon;
008
int[] GamesLost;
009
int winTotal;
010
int loseTotal;
011
012
public void play(){
013
int totalOfDice=0;
014
int myPoints=0;
015
Status gameStatus;
016
int roll;
017
GamesWon=new int[22];
018
GamesLost=new int[22];
019
for(int x=1; x<=1000; x++){
020
totalOfDice=rollDice();
021
roll=1;
022
switch(totalOfDice){
023
case 7:
024
case 11:
025
gameStatus=Status.Won;
026
break;
027
case 2:
028
case 3:
029
case 12:
030
gameStatus=Status.Lost;
031
break;
032
default:
033
gameStatus=Status.Continue;
034
myPoints=totalOfDice;
035
break;
036
}
037
while(gameStatus==Status.Continue){
038
totalOfDice=rollDice();
039
roll++;
040
if(totalOfDice==myPoints)
041
gameStatus=Status.Won;
042
else if(totalOfDice==7)
043
gameStatus=Status.Lost;
044
}
045
if(roll>21)
046
roll=21;
047
if(gameStatus==Status.Won){
048
GamesWon[roll]++;
049
winTotal++;
050
}
051
else{
052
GamesLost[roll]++;
053
loseTotal++;
054
}
055
}
056
printStats();
057
}
058
public void printStats(){
059
int totalGames=winTotal+loseTotal;
060
int length=0;
061
int RollsToWin;
062
int RollsToLose;
063
064
for(int x=1; x<=21; x++){
065
if(x==21)
066
System.out.printf("\n%d games won and %d games lost on rolls after the 20th roll", GamesWon[21],GamesLost[21] );
067
else
068
if(x<=21)
069
System.out.printf("\n%d games won and %d games lost on roll %d", GamesWon[x], GamesLost[x], x);
070
071
RollsToWin=(1*GamesWon[1])+(2*GamesWon[2])+(3*GamesWon[3])+
072
(4*GamesWon[4])+(5*GamesWon[5])+(6*GamesWon[6])+(7*GamesWon[7])+
073
(8*GamesWon[8])+(9*GamesWon[9])+(10*GamesWon[10])+(11*GamesWon[11])+
074
(12*GamesWon[12])+(13*GamesWon[13])+(14*GamesWon[14])+(15*GamesWon[15])+
075
(16*GamesWon[16])+(17*GamesWon[17])+(18*GamesWon[18])+(19*GamesWon[19])+
076
(20*GamesWon[20])+(21*GamesWon[21]);
077
078
RollsToLose=(1*GamesLost[1])+(2*GamesLost[2])+(3*GamesLost[3])+
079
(4*GamesLost[4])+(5*GamesLost[5])+(6*GamesLost[6])+(7*GamesLost[7])+
080
(8*GamesLost[8])+(9*GamesLost[9])+(10*GamesLost[10])+(11*GamesLost[11])+
081
(12*GamesLost[12])+(13*GamesLost[13])+(14*GamesLost[14])+(15*GamesLost[15])+
082
(16*GamesLost[16])+(17*GamesLost[17])+(18*GamesLost[18])+(19*GamesLost[19])+
083
(20*GamesLost[20])+(21*GamesLost[21]);
084
085
length=(RollsToLose+loseTotal)+(RollsToWin+winTotal);
086
087
}
088
if((GamesWon[1]/GamesWon[1]+GamesLost[1])>(GamesWon[3]/GamesWon[3]+GamesLost[3])&&(GamesWon[3]/GamesWon[3]+GamesLost[3])>(GamesWon[5]/GamesWon[5]+GamesLost[5]))
089
System.out.printf("\nChances of winning decrease as rolls increase");
090
else
091
System.out.printf("\nChances of winning increase as rolls increase");
092
093
System.out.printf("\n%s %d / %d = %.2f%%\n", "The chances of winning are", winTotal, totalGames, (100.0*winTotal/totalGames));
094
System.out.printf("The average game length is %.2f rolls.\n", ((double)length/totalGames));
095
}
096
097
public int rollDice(){
098
int die1=1+randomNumbers.nextInt(6);
099
int die2=1+randomNumbers.nextInt(6);
100
int sum=die1+die2;
101
return sum;
102
}
103
public static void main(String args[]){
104
GameOfCraps game=new GameOfCraps();
105
game.play();
106
107
}
108
109
Q3. (Simulation: The Tortoise and the Hare)
import java.util.*;
public class tortouseAndHare
{public static void main(String []args)
{int finish=70,tort=1,hare=1,rtime=0;
System.out.println("ON YOUR MARK, GET SET\nBANG !!!!!\nAND THEY'RE OFF !!!!!\n");
do
{hare=movehare(hare);
tort=movetort(tort);
print(tort,hare);
rtime++;
}while(tort
if(tort>hare )
System.out.println("TORTOISE WINS!!! YAY!!!\n");
else if(tort
System.out.println("Hare wins. Yuch. \n");
else
System.out.println("Would you believe IT\'S A TIE!!\n");
System.out.println("time of race: "+rtime+" simulated seconds\n");
}
public static void print(int t,int h)
{int i;
if(h==t)
{for(i=0;i
System.out.print(" ");
System.out.println("OUCH!!!");
}
else if(h
{for(i=0;i
System.out.print(" ");
System.out.print("H");
for(i=0;i<(t-h);i++)
System.out.print(" ");
System.out.print("T");
}
else
{for(i=0;i
System.out.print(" ");
System.out.print("T");
for(i=0;i<(h-t);i++)
System.out.print(" ");
System.out.print("H");
}
System.out.println();
}
public static int movehare(int r )
{int num;
num=(int)(Math.random()*10);
if(num<2)
r-=2;
else if(num<5)
r++;
else if(num<6)
r-=12;
else if(num<8)
r+=9;
if(r< 1 )
r=1;
return r;
}
public static int movetort(int t)
{int num;
num=(int)(Math.random()*10);
if(num<5)
t+=3;
else if(num<7)
t-= 6;
else
t++;
if(t<1)
t=1;
return t;
}
}
7. Write an inheritance hierarchy for classes Quadrilateral, Trapezoid, Parallelogram,
Rectangle and Square. Use Quadrilateral as the superclass of the hierarchy. You are being
provided with a Point class, use it to represent the points in each shape. For e.g. the private
instance variables of Quadrilateral should be the x-y coordinate pairs for the four endpoints of
the Quadrilateral. Write a program that instantiates objects of your classes and outputs each
object’s area (except Quadrilateral). (10 points)
The Quadrilateral class
import java.awt.*;
public abstract class Quadrilateral
{
public Point topleft = new Point(0,0);
public Point topright = new Point(0,0);
public Point bottomleft = new Point(0,0);
public Point bottomright = new Point(0,0);
public abstract int calculateArea();
}//end of class Quadrilateral
The Rectangle class
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.awt.*;
public class MyRect extends Quadrilateral
{
public MyRect()
{
super();
}//end of constructor
public MyRect(int x, int y, int width, int height)
{
//super();
topleft = new Point(x,y);
topright = new Point(x+width,y);
bottomleft = new Point(x, y+height);
bottomright = new Point(x+width, y+height);
}//end of constructor
public int calculateArea()
{
/*
* The area of a Rectangle is calculated as follows:
* (length * breadth)
*/
int area = (bottomright.x - topleft.x) * (bottomright.y - topleft.y);
return area;
}//end of method calculateArea()
}//end of class MyRect
The Square class
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.awt.*;
public class Square extends Quadrilateral
{
public Square()
{
super();
}//end of constructor
public Square(int x, int y, int side)
{
super();
topleft = new Point(x,y);
topright = new Point(x+side,y);
bottomleft = new Point(x, y+side);
bottomright = new Point(x+side, y+side);
}//end of constructor
public int calculateArea()
{
/*
* The area of a Parallelogram is calculated as follows:
* (side*side)
*/
int area = (bottomright.x - topleft.x) * (bottomright.y - topleft.y);
return area;
}//end of method calculateArea()
}//end of class Square
The Paralleogram class
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.awt.*;
public class Parallelogram extends Quadrilateral
{
public Parallelogram()
{
super();
}//end of constructor
public Parallelogram(int x, int y, int width, int height)
{
super();
topleft = new Point(x,y);
topright = new Point(x+width,y);
bottomleft = new Point(x, y+height);
bottomright = new Point(x+width, y+height);
}//end of constructor
public int calculateArea()
{
/*
* The area of a Parallelogram is calculated as follows:
* (base * height)
*/
int area = (bottomright.x - topleft.x) * (bottomright.y - topleft.y);
return area;
}//end of method calculateArea()
}//end of class Parallelogram
The ShapeGenerator class
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ShapeGenerator
{
public static void main(String args[])
{
Quadrilateral shapes[] = {
new MyRect(0,0,10,20),
new Parallelogram(0,0,10,20),
new Square(0,0,10)
};
int area=0;
for(int i=0;i
{
area = shapes[i].calculateArea();
System.out.println("Area of " + shapes[i].getClass() + " : " + area);
}//end of for loop
}//end of method main()
}//end of class ShapeGenerator