• 18-02-2020, 06:50:18
    #1
    Arkadaşlar merhaba, bir örnek üzerinde çalışıyorum fakat maalesef yapamadım.

    Yapmak istediğim 10 elemanlı bir dizideki tek sayıları dizinin başına, çift sayıları ise dizinin sonuna yazdırmak istiyorum.

    Yazdığım kod aşağıdadır.


    class TeklerBasta{
    public static void main(String args[]) throws Exception {
    
        int a [] = {4,8,3,1,18,9,21,20,5,17}; 
        int size, i, p, temp;
        size = 10;
        p = 0;
    
        for(i = 0; i<size; i= i+1)
        if(a[i] % 2 != 0){
        temp = a[i];
        a[i] = a[p];
        a[p] = temp;
        p = p+1;
        }
        
        System.out.println(a[i]);
        
        
        
        
    // A dizisindeki tekleri başa, çiftleri sona yazan program.
        
        
    }
    }
    Fakat sanırım bir yerde yanlış yapıyorum ve döngüye giriyor olabilir

    Yardımcı olabilecek varsa çok sevinirim. (Çözüm kodundan ziyade nasıl çözdüğünü söyleyebilen olursa çok sevinirim.
  • 18-02-2020, 07:09:52
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    şuanda yazdığın kodda ilk eleman 4 geliyor ve hiç bir zaman if check içerisine girip de işlem yapmıyor.

    iterate ettiğin array üzerinden değişiklik yapmak yerine de atıyorum tekler ve çiftler diye iki temp array yapıp daha sonra onları birleştirebilirsin.
  • 18-02-2020, 07:16:38
    #3
    Potanski adlı üyeden alıntı: mesajı görüntüle
    şuanda yazdığın kodda ilk eleman 4 geliyor ve hiç bir zaman if check içerisine girip de işlem yapmıyor.

    iterate ettiğin array üzerinden değişiklik yapmak yerine de atıyorum tekler ve çiftler diye iki temp array yapıp daha sonra onları birleştirebilirsin.
    Şu anda yazdığın kodda ilk eleman 4 geliyor ve hiç bir zaman if check içerisine girip de işlem yapmıyor.

    Burda a[i] %2 != 0 diyerek tek'e eşit değilse demiyor muyuz acaba? 4 tek e eşit olmadığı için onu temp e atıyorum.İki tane array kullanmak istemiyorum.
  • 18-02-2020, 08:50:43
    #4
    2 farklı algortima geldi aklıma,

    1. For ile dönüp tekleri bir diziye, çiftleri bir diziye toplayıp işlem sonunda dizileri birleştirmek
    2. ArrayList kullanarak tekleri başa eklemek (prepend), çiftleri sona eklemek (append)
  • 18-02-2020, 08:52:11
    #5
    import java.util.ArrayList;
    import java.util.Arrays; //Sıralama işlemi için gerekiyor
    
    class TeklerBasta{
    public static void main(String args[]) throws Exception
    {
        int sayilar [] = {4,8,3,1,18,9,21,20,5,17};
        Arrays.sort(sayilar); //Sıralı olmasını istiyorsan bunu kullanabilirsin
        //tekler ve çiftler için 2 farklı dizi oluşturuyoruz
        ArrayList<Integer> tekler = new ArrayList<>();
        ArrayList<Integer> ciftler = new ArrayList<>();
        for(int i = 0; i < sayilar.length; i++) //Tüm sayıları dönüyoruz
        {
            if(sayilar[i] % 2 == 0) //Sayının 2 ye modu sıfır ise çifttir, değilse tektir
            {
                ciftler.add(sayilar[i]); //Çift listesine ekliyoruz
            }
            else
            {
                tekler.add(sayilar[i]); //Tek listesine ekliyoruz
            }
        }
        for(int i = 0; i < tekler.size(); i++) //Tekler listesini dönüyoruz
        {
            System.out.println(tekler.get(i)); //Önce tekleri yazdıralım
        }
        for(int i = 0; i < ciftler.size(); i++) //çiftler listesini dönüyoruz
        {
            System.out.println(ciftler.get(i)); //Şimdi de çiftleri yazdıralım
        }
    }
    }
  • 18-02-2020, 08:55:41
    #6
    orcuntuna adlı üyeden alıntı: mesajı görüntüle
    2 farklı algortima geldi aklıma,

    1. For ile dönüp tekleri bir diziye, çiftleri bir diziye toplayıp işlem sonunda dizileri birleştirmek
    2. ArrayList kullanarak tekleri başa eklemek (prepend), çiftleri sona eklemek (append)
    SeMoLi adlı üyeden alıntı: mesajı görüntüle
    import java.util.ArrayList;
    import java.util.Arrays; //Sıralama işlemi için gerekiyor
    
    class TeklerBasta{
    public static void main(String args[]) throws Exception
    {
        int sayilar [] = {4,8,3,1,18,9,21,20,5,17};
        Arrays.sort(sayilar); //Sıralı olmasını istiyorsan bunu kullanabilirsin
        //tekler ve çiftler için 2 farklı dizi oluşturuyoruz
        ArrayList<Integer> tekler = new ArrayList<>();
        ArrayList<Integer> ciftler = new ArrayList<>();
        for(int i = 0; i < sayilar.length; i++) //Tüm sayıları dönüyoruz
        {
            if(sayilar[i] % 2 == 0) //Sayının 2 ye modu sıfır ise çifttir, değilse tektir
            {
                ciftler.add(sayilar[i]); //Çift listesine ekliyoruz
            }
            else
            {
                tekler.add(sayilar[i]); //Tek listesine ekliyoruz
            }
        }
        for(int i = 0; i < tekler.size(); i++) //Tekler listesini dönüyoruz
        {
            System.out.println(tekler.get(i)); //Önce tekleri yazdıralım
        }
        for(int i = 0; i < ciftler.size(); i++) //çiftler listesini dönüyoruz
        {
            System.out.println(ciftler.get(i)); //Şimdi de çiftleri yazdıralım
        }
    }
    }
    Teşekkürler fakat ben yukarıdaki kodla yapmak istiyorum

    henüz add veya get gibi keywordleri(sanırım) görmedim.
  • 18-02-2020, 09:18:04
    #7
    public class TeklerBasta{
    public static void main(String args[]) throws Exception
    {
        int a [] = {4,8,3,1,18,9,21,20,5,17};
        int size, i, p, temp;
        size = 10;
        p = 0;
        //Tekler için diziyi dönüyoruz
        for(i = 0; i<size; i= i+1) {
            if(a[i] % 2 != 0)
            {
                temp = a[i];
                a[i] = a[p];
                a[p] = temp;
                p = p+1;
                System.out.println(temp);
            }
    }
        //Çiftler için diziyi dönüyoruz
        for(i = 0; i<size; i= i+1) {
            if(a[i] % 2 == 0)
            {
                temp = a[i];
                a[i] = a[p];
                a[p] = temp;
                p = p+1;
                System.out.println(temp);
            }
        }
    // A dizisindeki tekleri başa, çiftleri sona yazan program.
    }
    }
    Bu şekilde deneyebilir misin ?
    ilkinde tek sayıları dönüyor, sıralıyor ve ekrana yazıyor, ikincisinde de çiftleri.
    a dizisini çektiğinde tüm dizi istediğin sıralamada geliyor
  • 18-02-2020, 09:29:48
    #8
    Algoritma olarak söyle birsey olabilir. Yolda olduğum için yanlis yazmis olabilirim kusura bakmayın.
    i=0;
    a= dizi.lenght()
    İf
    sayi tekse insert methodu ile ( i,sayiyiyi ekle)
    i++;
    Else
    cift ise insert methodu ile (a, sayiyi ekle)
    a--;
  • 18-02-2020, 15:54:15
    #9
    SeMoLi adlı üyeden alıntı: mesajı görüntüle
    public class TeklerBasta{
    public static void main(String args[]) throws Exception
    {
        int a [] = {4,8,3,1,18,9,21,20,5,17};
        int size, i, p, temp;
        size = 10;
        p = 0;
        //Tekler için diziyi dönüyoruz
        for(i = 0; i<size; i= i+1) {
            if(a[i] % 2 != 0)
            {
                temp = a[i];
                a[i] = a[p];
                a[p] = temp;
                p = p+1;
                System.out.println(temp);
            }
    }
        //Çiftler için diziyi dönüyoruz
        for(i = 0; i<size; i= i+1) {
            if(a[i] % 2 == 0)
            {
                temp = a[i];
                a[i] = a[p];
                a[p] = temp;
                p = p+1;
                System.out.println(temp);
            }
        }
    // A dizisindeki tekleri başa, çiftleri sona yazan program.
    }
    }
    Bu şekilde deneyebilir misin ?
    ilkinde tek sayıları dönüyor, sıralıyor ve ekrana yazıyor, ikincisinde de çiftleri.
    a dizisini çektiğinde tüm dizi istediğin sıralamada geliyor
    Çift sayıları döndürmeye gerek yok ki. Tekleri başa atayınca zaten çiftler sona eklenmiş olacak

    EmAy adlı üyeden alıntı: mesajı görüntüle
    Algoritma olarak söyle birsey olabilir. Yolda olduğum için yanlis yazmis olabilirim kusura bakmayın.
    i=0;
    a= dizi.lenght()
    İf
    sayi tekse insert methodu ile ( i,sayiyiyi ekle)
    i++;
    Else
    cift ise insert methodu ile (a, sayiyi ekle)
    a--;
    insert methodunu henüz bilmiyorum. Benim amacım başka methodlar kullanarak yapmak değil Yazdığım koddaki mantık hatasını bulmak ve düzeltmek