En iyi yanıtlayıcılar
Listedeki [1]. elemanı [Last]. son eleman yapmak

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
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} gibipublic 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
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]);
- Yanıt Olarak Öneren CetinBasozEditor 9 Ocak 2020 Perşembe 17:10
-
-
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.
- Düzenleyen CetinBasozEditor 9 Ocak 2020 Perşembe 17:13
-
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
-
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,} olsunlistenin 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
-
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. -
Ö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} gibipublic 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