Java'da Algoritma, ve Örnekler 2(Devamı)

narutomanga899

Katılımcı Üye
21 Nis 2013
384
0
City of Code
Algoritma sorularına kaldığımız yerden devam ediyoruz, platform JAVA;
-------------------------------------------------------------------------------------------

Static method lara sonra ayrntılı bakacağız, şuanda genel olarak bilmemiz gereken static methodların içindeki belirlediğimiz x veya y değerleri en son verilen değerini korurlar, mesela ilk başta x = 5 ise ve static metodun içinde x = 8 ise artık x’in değeri 8 dir. Ayrıca static metodların içinde matematiksel işlemleri yapabiliriz, bir başka method tipi olan **** te ise bunu her zaman yapamayız, şimdi bazı static metodların içinde matematiksel işlemlere bakalım;

1-Boolean method olan ve N sayısını aldığında asal olup olmadığını belirleyen method yazın?

Bildiğiniz gibi asal sayılar 2, 3, 5, 7 11 … gibi kendisine ve 1 e bölünen sayılardır. Yani ilk adım 2 ye kadar olan sayıları eleme onun için;
if (N < 2) return false;
dediğimizde 2 den küçük saylar için false döneceğiz.

‘ % ‘ işareti mod almadır, yani o sayıya bölündüğünde kalan, bizde N sayısını kendisine kadar olan her sayıya böldüğümüzde eğer herhangi bir cevap sıfır çıkarsa ozaman içindeki bir sayıya bölündüğü anlamına gelir, ve bu olduğunda false döneceğiz, tüm sayıları dolaşmak için for, eğer for bittiğinde hala false dönmemişse true döneceğiz buda;
for (int i = 2; i*i <= N; i++)
if (N % i == 0) return false;
return true;

for’da i =2 den başlayacak ve I^2 ye kadar gitsin diyoruzki son gittiği sayı garanti olsun, yani N’ye kadar gitsin, eğer N%i ‘ye bölündüğünde 0 çıkarsa içinden bir i sayısı bölünüyor demek ki false olacak, sonra for bittiğinde hala return’e uğramamışsa en sondaki return true ya gelecek ki cevap dönsün.

sonuçta;
Kod:
public static boolean isPrime(int N)
{
     if (N < 2)
         return false;

     for (int i = 2; i*i <= N; i++)
          if (N % i == 0) return false;

     return true;
}

2-Bir üçgenin dik kenarları sırasıyla a ve b ise hipotenüsü bulan method yazın?

Kök içinde(a^2 + b^2) = hüpotenüs; olduğu için kök alan bir methoda ihtiyaç var, javanın kendi library’sinde(kütüphanesinde) bazı matematiksel terimler vardır ve bunlardan en çok kullanılanlardan birisi kök alma(squart) dır. Bunuda;
Kod:
public static double hypotenuse(double a, double b) //parametreler(girilen sayılar) a, b
{
       return Math.sqrt(a*a + b*b);  // Math.sqrt(), kök alma demektir, içine 
       //işlemler yazılır, bizde içine a*a + b*b yazıyoruz(a^2 + b^2)
}
Şeklinde yazarız,

3-Double olan ve aralığı [a, b) olan rastgele sayı atayan method yazınız?

Methodun kendiside alacağımız sayılarda double olmalı, rastgele olması için;
public static double uniform(double a, double b)

Yine rastgele sayı belirleyen bir diğer math clasında bulunan StdRandom.random() methodunu kullanmalıyız. Bu method 0 dahil 1 arası demektir [0, 1)
Eğer biz bunu [0, 100) yapmak istiyorsak StdRandom.random() *100 şeklinde yazarız, eğer [10, 100) yapmak istiyorsak 0 ile 90 arası rastgele seçtirip sonra tüm sayıya 10 eklemeliyizyani, 10 + StdRandom.random() *90 şeklinde yazarız, o halde [a, b) için ;
Kod:
public static double uniform(double a, double b)
{ 
      return a + StdRandom.random() * (b-a);
}
Şeklinde yazarız.

4- Rastgele karıştırma işlemi ile arrayin içini rastgele sayılarla doldurunuz?

Şimdilik bukadar, sorunuz olursa cevaplarım, Bu soruya shuffle deniyor kod burada;
Kod:
public static **** shuffle(double[] a)
{
     int N = a.length;
     for (int i = 0; i < N; i++)
     { 
          int r = i + StdRandom.uniform(N-i);
          double temp = a[i];
          a[i] = a[r];
          a[r] = temp;
     }
}

public static int uniform(int N)
{ 
      return (int) (StdRandom.random() * N); 
}
------------------------------------------------------------------------------------
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.