En Yakın İki Nokta

28 Mart 2011 by B.Selçuk ÖKSÜZ
Leave a reply »
WP Greet Box icon
Merhaba! Selcukoksuz.com adresine hoş geldiniz. Eğer yeni iseniz ve içeriğimizi takip etmek isterseniz RSS Abonesi Olabilirsiniz.
Mailinize onay mesajı gönderilecektir. Cevaplamayı unutmayınız.

Bu 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 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, 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.

Yazar Hakkında

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.
B.Selçuk ÖKSÜZ
B.Selçuk ÖKSÜZ kullanıcısının tüm yazıları.

Arama Sorguları

  • java karekök alma (15)
Advertisement

Bu Yazıyı Beğendiniz Mi?

0

Bir Cevap Yazın

Sizin Yorumunuz Nedir?

%d blogcu bunu beğendi:
Gizlilik Hakları