• 16-02-2020, 01:44:03
    #1
    Arkadaşlar merhaba, java eğitimine başladım, henüz çok yeniyim ve bir yeri anlamadım.

    Kodu aşağıya ekliyorum.

    package com.company;
    
    public class Main {
    
        public static void main(String[] args) throws Exception {
            //Dizinin ilk n adet elemanını dizinin sonuna atayan ve baştaki elemanları sıfırlayan program.
    
            int a[] = {4, 8, 3, 1, 18, 9, 21, 20, 5, 17};
            int n = 3;
            int size = 10;
            for (int i = 0; i < n; i = i + 1)
                a[size - 1 - i] = a[n - 1 - i];
            for (int i = 0; i < size - n; i = i + 1)
                a[i] = 0;
            for (int i = 0; i < size; i = i + 1)
                System.out.println(a[i]);
        }
    }
    Burdaki

    a[size - 1 - i] = a[n - 1 - i]; kısmındaki sonuç ne acaba ?

    size = 10
    -1
    -i yaptık.

    -i 2 oluyor sanırım.

    Bunu atama operatörüyle a [n-1-i] ye atatık.

    Burdada -i kısmını anlayamadım.

    Bilen birisi açıklayabilirse çok sevinirim.
    Kodun çıktısı

    0
    0
    0
    0
    0
    0
    0
    4
    8
    3
    Kodlarda sorun yok gayet düzgün çalışıyor ve istenileni veriyor ama nasıl verdiğini anlayamadım maalesef.

    İlk 3 rakamı nasıl tuttuk ve nasıl sona ekledik bi türlü anlayamadım
  • 16-02-2020, 01:49:45
    #2
     for (int i = 0; i < n; i = i + 1)
                a[size - 1 - i] = a[n - 1 - i];
    size=10
    n=3

    9-i sırasıyla 9, 8, 7 oluyor.
    2-i sırasıyla 2, 1, 0 oluyor.

    2. 1. ve 0. index'teki elemanları, 9. 8. ve7. index'lere yazmış oluyorsun.
    Ekstra bir olayı yok.
  • 16-02-2020, 01:55:36
    #3
    // ilk for
    a[10-1-0] = a[3-1-0]
    a[10-1-1] = a[3-1-1]
    a[10-1-2] = a[3-1-2]
    9. eleman = 2. eleman
    8. eleman = 1. eleman
    7. eleman = 0. eleman

    // ikinci forda sayacağı adet = i < size - n; yani size(10) - n(3) = 7
    7 kere dönecek. ilk 7 adet eleman = 0


    //son for ekrana yazma zaten.
  • 16-02-2020, 02:03:38
    #4
    Şu şekilde görsel olarak yardımcı olacağını düşünüyorum. Size tavsiyem her zaman paint kullanın algoritma ile ilgili bir soruna uğradığınız zaman
  • 16-02-2020, 02:22:15
    #5
    Çok teşekkürler. Şimdi anladım. Özellikle paint işe yaradı Fakat bu formül olmasa kodu yazabilir miyim bilmiyorum. Biraz daha fazla pratik yapmam gerekecek
  • 16-02-2020, 02:40:10
    #6
    Mf.Rub adlı üyeden alıntı: mesajı görüntüle
    Çok teşekkürler. Şimdi anladım. Özellikle paint işe yaradı Fakat bu formül olmasa kodu yazabilir miyim bilmiyorum. Biraz daha fazla pratik yapmam gerekecek
    paint her zaman işe yarar hocam çekinmeyin. Algoritma çalıştıkça oturur bunlar
  • 16-02-2020, 03:30:21
    #7
    Hatta şöyle yaparsan, hem daha kolay okunur, hem de sorumluluklarına göre fonksiyonları ayırmış olursun. @Mf.Rub;

    package com.company;
    import java.util.*;
    
    public class Main {
    
        public static void main(String[] args) throws Exception {
            //Dizinin ilk n adet elemanını dizinin sonuna atayan ve baştaki elemanları sıfırlayan program.
    
            int dizi[] = {4, 8, 3, 1, 18, 9, 21, 20, 5, 17};
    
            try{
                nAdetElemaniDizininSonunaAta(dizi, 6);
                ekranaBas(dizi);
            }catch(Exception e){
                System.out.println(e);
            }
        }
    
        private static void nAdetElemaniDizininSonunaAta(int[] dizi, int n) throws Exception{
            if(dizi == null || n > dizi.length){
                throw new Exception("Hatalı girdi! \ndizi boyutu: " + dizi.length + "\nn: " + n);
            }
            int lastIndex = dizi.length - 1;
    
            for (int i = lastIndex; i >= 0; i--){
                if(n != 0){
                    dizi[i] = dizi[--n];
                }else{
                    dizi[i] = 0;
                }
            }
        }
    
        private static void ekranaBas(int[] dizi){
            for(int eleman:dizi)
                System.out.println(eleman);
            }
        }
  • 16-02-2020, 03:35:36
    #8
    meftuniberder adlı üyeden alıntı: mesajı görüntüle
    paint her zaman işe yarar hocam çekinmeyin. Algoritma çalıştıkça oturur bunlar
    Bilgisayarımı yeni yaptırdığım için yeni yeni pratik yapmaya başladım

    maviuan adlı üyeden alıntı: mesajı görüntüle
    Hatta şöyle yaparsan, hem daha kolay okunur, hem de sorumluluklarına göre fonksiyonları ayırmış olursun. @Mf.Rub;

    package com.company;
    import java.util.*;
    
    public class Main {
    
        public static void main(String[] args) throws Exception {
            //Dizinin ilk n adet elemanını dizinin sonuna atayan ve baştaki elemanları sıfırlayan program.
    
            int dizi[] = {4, 8, 3, 1, 18, 9, 21, 20, 5, 17};
    
            try{
                nAdetElemaniDizininSonunaAta(dizi, 6);
                ekranaBas(dizi);
            }catch(Exception e){
                System.out.println(e);
            }
        }
    
        private static void nAdetElemaniDizininSonunaAta(int[] dizi, int n) throws Exception{
            if(dizi == null || n > dizi.length){
                throw new Exception("Hatalı girdi! \ndizi boyutu: " + dizi.length + "\nn: " + n);
            }
            int lastIndex = dizi.length - 1;
    
            for (int i = lastIndex; i >= 0; i--){
                if(n != 0){
                    dizi[i] = dizi[--n];
                }else{
                    dizi[i] = 0;
                }
            }
        }
    
        private static void ekranaBas(int[] dizi){
            for(int eleman:dizi)
                System.out.println(eleman);
            }
        }
    Henüz fonksiyon oluşturma kısmını görmedim maalesef. Umarım o da zamanla olur en az 8 ay kesintisiz şekilde (Her gün) konuları öğrenmeyi ve pratik yapmayı hedefliyorum. Sonrasında sanırım zaten bir çok şeye hakim olur ona göre ilerlerim.
  • 16-02-2020, 15:19:07
    #9
    @Mf.Rub; hangi kaynaklardan çalışıyorsunuz acaba hocam? Ben de yeni başladım, youtube'dan video izleyerek alt yapı oluşturayım diyorum ama yine de acaba bir kitap alsa mıydım diye düşünmeden edemiyorum.