Sponsor

En Yakın İki Nokta

Sponsor
Sponsor

Bu java uygulamamızda kullanıcıdan aldığımız x,y kordinatları arasında bir birine en yakın iki noktanın hesaplaması bulunmakta. Bu uygulamamız da matematik kütüphanesinden karekök alma, her hangi bir sayının karesini alma gibi kullanımlar mevcut. Bununla birlikte arrays kütüphanesi ile dizi sıralama ve dizileri içerisinde değer arama gibi kullanımlar da mevcut. İlgili deyimlerin açıklaması kod satırları arasında mevcuttur. Sorun yaşadığınız kodlar olursa sormanız halinde yardımcı olmaya çalışırım.

Uygulama: Kordinat düzleminde verilen noktalardan en yakın iki noktayı bulma

Amaç: Java Arrays, Math kütüphaneleri ile işlemler

Dil: Java

Program: NetBeans

Kodlar:

import java.util.Arrays;//Dizi işlemleri için ekledik
public class NearestPoint {
    public static void main(String[] args)
    {
        double[][] arrayPoints = {{-1,3},{-1,-1},{1,1},{2,0.5},{2,-1},{3,3},{4,2},{4,0.5}};
        double[] sortDistance = new double[7];
        double[] distance = new double[7];
        int nearestPoint = 0;

        for(int row=0; row<7; row++)
        {
            distance[row] = Math.sqrt(Math.pow(arrayPoints[row][0]-arrayPoints[row+1][0], 2) + Math.pow(arrayPoints[row][1]-arrayPoints[row+1][1], 2));
            if(nearestPoint > distance[row])
                nearestPoint = row;
            System.out.printf("%d. nokta ile %d. nokta arası uzaklık %2.2f\n",row+1,row+2,distance[row]);
        }
        System.arraycopy(distance, 0, sortDistance, 0,7);
        //(kaynak dizi,başlangıç indisi,hedef dizi,başlangıç indisi,kopyalanacak karakter sayısı)
        //Başka bir diziye uzaklıklar kopyalandı
        Arrays.sort(sortDistance);
        //yeni diziyi küçükten büyüğe sıraladık
        nearestPoint = Arrays.binarySearch(distance, sortDistance[0]);
        //(aranacak dizi, aranacak eleman)
        //en küçük değeri değişeni ilk dizimizde arayarak değerini atadık
        System.out.println("Bir birine en yakın noktalar\n"+(nearestPoint+1)+" ve "+(nearestPoint+2));
        System.out.println("blog.selcukoksuz.com");
    }
}

Yukarıda ki uygulamamızın çıktısı aşağıda ki şekilde olacaktır;

1. nokta ile 2. nokta arası uzaklık 4,00
2. nokta ile 3. nokta arası uzaklık 2,83
3. nokta ile 4. nokta arası uzaklık 1,12
4. nokta ile 5. nokta arası uzaklık 1,50
5. nokta ile 6. nokta arası uzaklık 4,12
6. nokta ile 7. nokta arası uzaklık 1,41
7. nokta ile 8. nokta arası uzaklık 1,50
Bir birine en yakın noktalar
0 ve 1
blog.selcukoksuz.com

Yukarıda da gördüğünüz gibi uygulama aslında yanlış sonuç üretmektedir. Burada ki mantık aslında Çalışma Saatleri uygulamasında ki ile aynıdır. Ama nedense yanlış sonuç veriyor. Galiba değerlerin double olmasından kaynaklı. Bu sorun hakkında bilgisi olan varsa, paylaşırsa sevinirim. Eğer bir gelişme olursa konuyu güncellerim bende. İyi çalışmalar dilerim.

Sponsor
B.Selçuk ÖKSÜZ: Bilgisayarla yaşamayı bir tarz olarak benimsemiş, teknoloji ile tamamen içli dışlı bir; web tasarımcı, yazılımcı, donanımcı, blog yazarı ve bilgisayar mühendisidir.
Yorumunuz
Sponsor