ashkash 0 Newbie Poster

I have a 2d array with x and y coordinates. I need to figure out the north most, south most, east most, and west most points and print them out. I figure the best way to do this is to find the minimum x value and the corresponding point will be the west most point, the maximum x value and the corresponding point will be the east most, the minimum y value and the corresponding point will be the south most, and the maximum y value and the corresponding point will be the north most. My code below goes through the 2d array of xy points and it finds the correct maximum and minimum x and y values, but I am not able to keep track of the correct index to print out the corresponding point. When I try and do the print statements I am not getting the correct points to be printed out. Any help is appreciated.

public static void MaxMin(int[][] a, int size){
		int index=0,min_x = 0,max_x=0,min_y=0,max_y=0,max_x_index=0, max_y_index = 0, min_x_index=0, min_y_index=0;

		if ( size%2 != 0 ){// if size is odd

		     min_x = a[0][0];
		     min_y = a[0][1];
		     max_x = a[0][0];
		     max_y = a[0][1];

		     index++;
		   }
		   else{// size is even
		     if ( a[0][0] < a[1][0] ){
		       min_x = a[0][0];
		       max_x = a[1][0];
		     }
		     if ( a[0][1] < a[1][1] ){
			   min_y = a[0][1];
			   max_y = a[1][1];
		     }
		       
		       index = index + 2;
		   }

		   int big_x, small_x, small_y, big_y;
		   for ( int i = index; i < size; i = i+2 ){
		      if ( a[i][0] < a[i+1][0] ){ //one comparison
		        small_x = a[i][0];
		        big_x = a[i+1][0];
		        min_x_index = i;
		        max_x_index = i+1;
		      }
		      else{
		        small_x = a[i+1][0];
		        big_x = a[i][0];
		        min_x_index = i+1;
		        max_x_index = i;
		      }
		      
		      if ( a[i][1] < a[i+1][1] ){ //one comparison
			    small_y = a[i][1];
			    big_y = a[i+1][1];
			    min_y_index = i;
			    max_y_index = i+1;
			  }
			  else{
			    small_y = a[i+1][1];
			    big_y = a[i][1];
			    min_y_index = i+1;
			    max_y_index = i;
			  }
		      
		      if ( min_x > small_x ){ //one comparison
		        min_x = small_x;
		      }
		      if ( max_x < big_x ){ //one comparison
		        max_x = big_x;
		      }
		      if ( min_y > small_y ){ //one comparison
			    min_y = small_y;
			  }
		      if ( max_y < big_y ){ //one comparison
			    max_y = big_y;
			  }
		   }
		   System.out.println("Northmost Point: " + a[max_y_index][0] + "," + a[max_y_index][1]);
		   System.out.println("Southmost Point: " + a[min_y_index][0] + "," + a[min_y_index][1]);
		   System.out.println("Westmost Point: " + a[min_x_index][0] + "," + a[min_x_index][1]);
		   System.out.println("Eastmost Point: " + a[max_x_index][0] + "," + a[max_x_index][1]);
	}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.