Skip to content

Commit c32ecf3

Browse files
committed
add week1 solution
0 parents  commit c32ecf3

File tree

1 file changed

+155
-0
lines changed

1 file changed

+155
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
import edu.duke.*;
2+
import java.io.File;
3+
4+
public class PerimeterAssignmentRunner {
5+
public double getPerimeter (Shape s) {
6+
// Start with totalPerim = 0
7+
double totalPerim = 0.0;
8+
// Start wth prevPt = the last point
9+
Point prevPt = s.getLastPoint();
10+
// For each point currPt in the shape,
11+
for (Point currPt : s.getPoints()) {
12+
// Find distance from prevPt point to currPt
13+
double currDist = prevPt.distance(currPt);
14+
// Update totalPerim by currDist
15+
totalPerim = totalPerim + currDist;
16+
// Update prevPt to be currPt
17+
prevPt = currPt;
18+
}
19+
// totalPerim is the answer
20+
return totalPerim;
21+
}
22+
23+
public int getNumPoints (Shape s) {
24+
int numPoints = 0;
25+
26+
for (Point currPt : s.getPoints()) {
27+
numPoints++;
28+
}
29+
30+
return numPoints;
31+
}
32+
33+
public double getAverageLength(Shape s) {
34+
int numPoints = getNumPoints(s);
35+
double perimeter = getPerimeter(s);
36+
37+
return perimeter / numPoints;
38+
}
39+
40+
public double getLargestSide(Shape s) {
41+
double longestSide = Double.MIN_VALUE;
42+
Point prevPt = s.getLastPoint();
43+
44+
for(Point currPt : s.getPoints()) {
45+
double currDist = prevPt.distance(currPt);
46+
47+
longestSide = longestSide >= currDist ? longestSide : currDist;
48+
49+
prevPt = currPt;
50+
}
51+
52+
return longestSide;
53+
}
54+
55+
public double getLargestX(Shape s) {
56+
double largestX = Double.MIN_VALUE;
57+
58+
for(Point currPt : s.getPoints()) {
59+
double currX = currPt.getX();
60+
61+
largestX = largestX >= currX ? largestX : currX;
62+
}
63+
64+
return largestX;
65+
}
66+
67+
public double getLargestPerimeterMultipleFiles() {
68+
double largestPerimeter = Double.MIN_VALUE;
69+
DirectoryResource dr = new DirectoryResource();
70+
71+
for (File f : dr.selectedFiles()) {
72+
FileResource fr = new FileResource(f);
73+
Shape s = new Shape(fr);
74+
75+
double currPerimeter = getPerimeter(s);
76+
77+
largestPerimeter = largestPerimeter >= currPerimeter ? largestPerimeter : currPerimeter;
78+
}
79+
80+
return largestPerimeter;
81+
}
82+
83+
public String getFileWithLargestPerimeter() {
84+
double largestPerimeter = Double.MIN_VALUE;
85+
DirectoryResource dr = new DirectoryResource();
86+
File temp = null;
87+
88+
for (File f : dr.selectedFiles()) {
89+
FileResource fr = new FileResource(f);
90+
Shape s = new Shape(fr);
91+
92+
double currPerimeter = getPerimeter(s);
93+
94+
if (largestPerimeter < currPerimeter) {
95+
temp = f;
96+
largestPerimeter = currPerimeter;
97+
}
98+
}
99+
100+
return temp.getName();
101+
}
102+
103+
public void testPerimeter () {
104+
FileResource fr = new FileResource();
105+
Shape s = new Shape(fr);
106+
double length = getPerimeter(s);
107+
System.out.println("perimeter = " + length);
108+
System.out.println("num of points = " + getNumPoints(s));
109+
System.out.println("average length = " + getAverageLength(s));
110+
System.out.println("longest side = " + getLargestSide(s));
111+
System.out.println("largest x = " + getLargestX(s));
112+
}
113+
114+
public void testPerimeterMultipleFiles() {
115+
System.out.println("largest perimeter = " + getLargestPerimeterMultipleFiles());
116+
}
117+
118+
public void testFileWithLargestPerimeter() {
119+
System.out.println("file name = " + getFileWithLargestPerimeter());
120+
}
121+
122+
// This method creates a triangle that you can use to test your other methods
123+
public void triangle(){
124+
Shape triangle = new Shape();
125+
triangle.addPoint(new Point(0,0));
126+
triangle.addPoint(new Point(6,0));
127+
triangle.addPoint(new Point(3,6));
128+
for (Point p : triangle.getPoints()){
129+
System.out.println(p);
130+
}
131+
double peri = getPerimeter(triangle);
132+
System.out.println("perimeter = "+peri);
133+
}
134+
135+
// This method prints names of all files in a chosen folder that you can use to test your other methods
136+
public void printFileNames() {
137+
DirectoryResource dr = new DirectoryResource();
138+
for (File f : dr.selectedFiles()) {
139+
System.out.println(f);
140+
}
141+
}
142+
143+
public static void main (String[] args) {
144+
PerimeterAssignmentRunner pr = new PerimeterAssignmentRunner();
145+
146+
System.out.println("Assignment 1: Calculating information about shapes");
147+
System.out.println("==================================================");
148+
pr.testPerimeter();
149+
150+
System.out.println("\n\nAssignment 2: Processing multiple Shape files");
151+
System.out.println("=============================================");
152+
pr.testPerimeterMultipleFiles();
153+
pr.testFileWithLargestPerimeter();
154+
}
155+
}

0 commit comments

Comments
 (0)