Problem:
Suppose a set of points are given. Write a program to check whether all the points are on the same line. Use the following sets to test your program:
double[][] set1 = {{1, 1}, {2, 2}, {3, 3}, {4, 4}};
double[][] set2 = {{0, 1}, {1, 2}, {4, 5}, {5, 6}};
double[][] set3 = {{0, 1}, {1, 2}, {4, 5}, {4.5, 4}};
Output:
How many points do you want to check? 5
Enter point 1 coordinates: 0 1
Enter point 2 coordinates: 1 2
Enter point 3 coordinates: 4 5
Enter point 4 coordinates: 4.5 4
Enter point 5 coordinates: 0 1
Numbers are not on the same line
Enter point 1 coordinates: 0 1
Enter point 2 coordinates: 1 2
Enter point 3 coordinates: 4 5
Enter point 4 coordinates: 4.5 4
Enter point 5 coordinates: 0 1
Numbers are not on the same line
Solution:
import java.util.Scanner;
public class SameLine
{
public static boolean sameLine(double[][] sum)
{
double slope = (sum[1][1] - sum[0][1]) / (sum[1][0] - sum[0][0]);
for (int i = 0;i<sum.length;i++)
{
for (int j =0;j<sum.length-1;j++)
{
if ((sum[j+1][1] - sum[j][1]) /
(sum[j+1][0] - sum[j][0]) != slope )
return false;
}
}
return true;
}
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.print("How many points do you want to check? ");
double[][] points = new double[scan.nextInt()][2];
for (int i =0;i<points.length;i++)
{
System.out.print("Enter point " + (i+1)
+ " coordinates: ");
points[i][0] = scan.nextDouble();
points[i][1] = scan.nextDouble();
}
if (sameLine(points)) System.out.println("Points are on the same line");
else
System.out.println("Numbers are not on the same line");
}
}
No comments:
Post a Comment