none
Listedeki [1]. elemanı [Last]. son eleman yapmak RRS feed

  • Soru

  • Benim bir listem var ve listedeki her eleman (ID,X,Y,Talep,Acı) olarak  öğelere sahip. Ben bu listeyi açıları küçükten büyüğe doğru olacak şekilde sıralamasını yaptırdım. İlk eleman depo ve tüm değerleri 0 (0,0,0,0,0);

    İsteğim şu bir ilk for döngüsünde değeri en küçük elemandan başlayarak işlem yapıyor. fakat ben bu for döngüsü bittiğinde tekrardan bu döngüyü yapsın fakat bu sefer en küçük değer(depo'dan sonraki) değilde ikinci en küçük değere sahip elemandan başlasın istiyorum.

    Yani en küçük değer artık listenin son elemanı olacak ve ikinci en küçük değer ilk eleman olacak.

    Bu arada depo sabit o hep ilk eleman. 

    Yardımcı olursanız sevinirim .

    Basriche

    9 Ocak 2020 Perşembe 15:44

Yanıtlar

  • Önce Listenin 1. indisini insert(ekleme) adında tuttum
    Sonra Liste'de 1. indisi sildim ve geri ekledim(yeniden eklerken listenin son elemanı olur). Bu sayede her for döngüsünde Listenin [1] indisli elemanı artık sonuncu eleman olacak 
    {0,1,2,3,4,5,6}
    {0,2,3,4,5,6,1}
    {0,3,4,5,6,1,2} gibi 
    public List<Musteri> MusteriListesi = new List<Musteri>();
    List<Musteri> bireyinMusterileri = MusteriListesi.CloneList().ToList();
    for(int i = 0; i<MüsteriSayisi-1; i++)
    {
         _ = new Musteri();
        Musteri insert = bireyinMusterileri[1];
        bireyinMusterileri.RemoveAt(1);
        bireyinMusterileri.Add(insert)
        //diğer işlemleri bu for döngüsü içinde yapmaya devam ediyorum
    }


    Basriche


    • Yanıt Olarak İşaretleyen Basri07 12 Ocak 2020 Pazar 03:44
    • Düzenleyen Basri07 12 Ocak 2020 Pazar 03:46
    12 Ocak 2020 Pazar 03:44

Tüm Yanıtlar

  • C# 8 kullanıyorsanız kod şu şekilde :

    var dizi = new[] {1,2,3,4,5,6};
    
    (dizi[0], dizi[^1]) = (dizi[^1], dizi[0]);


    www.cihanyakar.com

    9 Ocak 2020 Perşembe 16:29
  • dizi şeklinde kullanmıyorum List<> şeklinde kullanıyorum.
    Yardımcı olmaya çalıştığınız için ayrıca teşekkür ederim 

    Basriche


    • Düzenleyen Basri07 9 Ocak 2020 Perşembe 16:38
    9 Ocak 2020 Perşembe 16:38
  • Dizi kullanıyorsanız demedi ki, C# 8 kullaniyorsaniz dedi. List elemanları da indexleniyor, öyle degil mi?

    void Main()
    {
    	List<int> sayilar = new List<int>{1,2,3,4,5,6,7};
    	
    	(sayilar[0],sayilar[sayilar.Count()-1]) = (sayilar[sayilar.Count()-1], sayilar[0]);
    	
    	foreach (var s in sayilar)
    	{
    	   Console.WriteLine(s);	
    	}
    }
    DotnetFiddle Demosu



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    9 Ocak 2020 Perşembe 17:10
    Yanıtlayıcı
  • dizi şeklinde kullanmıyorum List<> şeklinde kullanıyorum.
    Yardımcı olmaya çalıştığınız için ayrıca teşekkür ederim 

    Basriche


    dizi yerine List<T> koy kod aynı şekilde çalışır. 

    Aşağıdan kontrol edebilirsiniz:

    https://dotnetfiddle.net/x1pp0T


    www.cihanyakar.com

    9 Ocak 2020 Perşembe 18:01
  • bu arada List'e için swap operatörü kullandım ama sadece iki değeri yer değiştiriyor

    list{1,2,3,4,5,6,} olsun

    listenin ilk elemanı sabit olacak {1} index'i hep [0] olacak
    ikinci eleman {2} indexi [1] olan sona gidecek [list.Count()-1]
    üçüncü eleman{3} indexi[2] olanın indexi [1] olacak yani
    ilk döngüde 
    list{1,3,4,5,6,2}

    ikinci döngüde
    list{1,4,5,6,2,3} şeklinde gidecek.


    Basriche

    9 Ocak 2020 Perşembe 19:49
  • Bu sekilde soru anlasilir hale geldi :)

    void Main()
    {
    	List<int> liste = new List<int> {1,2,3,4,5,6};
    	CustomRotate(liste);
    	Console.WriteLine(string.Join(",", liste));
    	CustomRotate(liste);
    	Console.WriteLine(string.Join(",", liste));
    }
    
    
    private void CustomRotate(List<int> liste)
    {
       var element = liste[1];
       for(int i=1; i<liste.Count()-1;i++)
       {
          liste[i] = liste[i+1];
       }
       liste[liste.Count()-1] = element;
    }
    
    DotnetFiddle Demosu



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    9 Ocak 2020 Perşembe 20:39
    Yanıtlayıcı
  • Önce Listenin 1. indisini insert(ekleme) adında tuttum
    Sonra Liste'de 1. indisi sildim ve geri ekledim(yeniden eklerken listenin son elemanı olur). Bu sayede her for döngüsünde Listenin [1] indisli elemanı artık sonuncu eleman olacak 
    {0,1,2,3,4,5,6}
    {0,2,3,4,5,6,1}
    {0,3,4,5,6,1,2} gibi 
    public List<Musteri> MusteriListesi = new List<Musteri>();
    List<Musteri> bireyinMusterileri = MusteriListesi.CloneList().ToList();
    for(int i = 0; i<MüsteriSayisi-1; i++)
    {
         _ = new Musteri();
        Musteri insert = bireyinMusterileri[1];
        bireyinMusterileri.RemoveAt(1);
        bireyinMusterileri.Add(insert)
        //diğer işlemleri bu for döngüsü içinde yapmaya devam ediyorum
    }


    Basriche


    • Yanıt Olarak İşaretleyen Basri07 12 Ocak 2020 Pazar 03:44
    • Düzenleyen Basri07 12 Ocak 2020 Pazar 03:46
    12 Ocak 2020 Pazar 03:44