Point2D.Double

Download Report

Transcript Point2D.Double

CS1101X:
Programming Methodology
Recitation 7
Arrays II
Class: Point2D.Double (1/2)
java.awt.geom
Class Point2D.Double
public static class Point2D.Double extends Point2D
The Double class defines a point specified in double precision.
Field Summary
double x
The X coordinate of this Point2D.
double y
The Y coordinate of this Point2D.
Constructor Summary
Point2D.Double()
Constructs and initializes a Point2D with coordinates (0, 0).
Point2D.Double(double x, double y)
Constructs and initializes a Point2D with the specified coordinates.
CS1101X Recitation #7
2
Class: Point2D.Double (2/2)
Method Summary
double getX()
Returns the X coordinate of this Point2D in double precision.
double getY()
Returns the Y coordinate of this Point2D in double precision.
void setLocation(double x, double y)
Sets the location of this Point2D to the specified double
coordinates.
String toString()
Returns a String that represents the value of this Point2D.
CS1101X Recitation #7
3
Task 5: Array of Objects (1/5)
Given a list of 2D points (use Point2D.Double
class), find out which point is closest to the
origin.
For example, given
(2.5, 3.1), (-4.2, 1.5), (7.9, -0.23), (0.3, 1.4), (-1.02, -2.6)
The point closest to the origin is
(0.3, 1.4)
CS1101X Recitation #7
4
Task 5: Array of Objects (2/5)
import java.awt.geom.*;
import java.util.*;
public class ArrayOfPoints {
public static void main (String [] args)
{
Point2D.Double[] points = createArray();
// printArray(points);
int index = findClosestPoint(points);
System.out.print("Closest point to origin is ");
printPoint(points[index]);
}
CS1101X Recitation #7
5
Task 5: Array of Objects (3/5)
// Returns a new array of points from user's inputs
public static Point2D.Double[] createArray () {
Scanner scanner = new Scanner(System.in);
int size = scanner.nextInt();
Point2D.Double[] arr = new Point2D.Double[size];
for (int i = 0; i < size; ++i) {
double x = scanner.nextDouble();
double y = scanner.nextDouble();
arr[i] = new Point2D.Double(x, y);
}
return arr;
}
CS1101X Recitation #7
6
Task 5: Array of Objects (4/5)
CS1101X Recitation #7
7
Task 5: Array of Objects (5/5)
CS1101X Recitation #7
8
Task 6: Sort Array of Points (1/6)
Sort the array of points created in task 5 in
ascending order of the x-coordinates of the
points.
If two points have the same x-coordinate,
then they should be arranged in ascending
order of their y-coordinates.
CS1101X Recitation #7
9
Task 6: Sort Array of Points (2/6)
For example, given
The sorted array is:
2.5 3.1
-4.2 1.5
7.9 -0.23
0.3 1.4
2.5 1.9
-1.02 -2.6
-4.2 -2.4
0.1 1.2
-4.2 -2.4
-4.2 1.5
-1.02 -2.6
0.1 1.2
0.3 1.4
2.5 1.9
2.5 3.1
7.9 -0.23
CS1101X Recitation #7
10
Task 6: Sort Array of Points (3/6)
How do you adopt the following bubbleSort program?
(Textbook page 625.)
public static void bubbleSort (int[] arr) {
int
temp;
int
bottom = arr.length - 2;
boolean exchanged = true;
while (exchanged) {
exchanged = false;
for (int i = 0; i <= bottom; i++) {
if (arr[i] > arr[i+1]) {
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
exchanged = true;
}
}
bottom--;
}
}
CS1101X Recitation #7
11
Task 6: Sort Array of Points (4/6)
import java.awt.geom.*;
import java.util.*;
public class ArrayOfPoints {
public static void main (String [] args) {
Point2D.Double[] points = createArray();
int index = findClosestPoint(points);
System.out.print("Closest point to origin is ");
printPoint(points[index]);
// sort the array of points
bubbleSort(points);
System.out.println("Array after sorting: ");
printArray(points);
}
CS1101X Recitation #7
12
Task 6: Sort Array of Points (5/6)
CS1101X Recitation #7
13
Task 6: Sort Array of Points (6/6)
CS1101X Recitation #7
14
Task 7: Best Route (Maximal Sum) (1/7)
Write a program that calculates the highest sum of
numbers passed on a route that starts at the top and
ends somewhere on the base.



Each step can go either diagonally down to the left or
diagonally down to the right.
The number of rows in the triangle is > 1 but <= 100.
The numbers in the triangle are integers in [0, 99].
7
3
2
4
CS1101X Recitation #7
8
5
7
8
1
2
4
0
6
4
5
15
Task 7: Best Route (Maximal Sum) (2/7)
Input:
5
7
3
8
2
4
8
1 0
7 4 4
5 2 6 5
2-dimensional array
Quick analysis:
CS1101X Recitation #7
16
Task 7: Best Route (Maximal Sum) (3/7)
Solution 1: Fill from top to bottom
7
3
8
2
4
8
1
7
5
0
4
2
CS1101X Recitation #7
4
6
5
17
Task 7: Best Route (Maximal Sum) (4/7)
import java.util.*;
public class MaximalSum {
public static void main (String [] args)
int[][] table = createArray();
// printArray(table);
{
System.out.println("Answer = " + maximalSum(table));
}
// Returns a new 2D array of integers from user's inputs
public static int[][] createArray () {
Scanner scanner = new Scanner(System.in);
int size = scanner.nextInt();
int[][] arr = new int[size][size];
for (int r = 0; r < size; ++r) {
for (int c = 0; c <= r; ++c) {
arr[r][c] = scanner.nextInt();
return arr;
}
CS1101X Recitation #7
18
Task 7: Best Route (Maximal Sum) (5/7)
CS1101X Recitation #7
19
Task 7: Best Route (Maximal Sum) (6/7)
CS1101X Recitation #7
20
Task 7: Best Route (Maximal Sum) (7/7)
CS1101X Recitation #7
21
End of Recitation #7
CS1101X Recitation #7
22