C # dışarıdan girilen 3 sayının büyükten küçüğe veya küçükten büyüğe sıralaması

SefaDoring

Hectopat
Katılım
15 Haziran 2014
Mesajlar
28
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar verdiğim resimlerde ki gibi dışarıdan girilen 3 sayının büyükten küçüğe veya küçükten büyüğe sıralamasını yapmam gerekiyor. Ben büyükten küçüğe uğraştım ama olmadı. 11-5-4 girdiğimde oluyor. Fakat 11-4-5 girdiğim çalışmıyor. Bu kodu nasıl yapabilirim ? Yardım ederseniz sevinirim. Çok lazım şimdiden teşekkür ederim :)

Ekrdfgsdfhfsghsfg111ntısı.JPG
Ekran Al2asdfasdf22222ıntısı.JPG
Ekran Alıgadfgadfg33333ntısı.JPG
 
Son düzenleyen: Moderatör:
Kodun anlaşılır olması açısından sadece sayı sıralamasını ele aldım. Eğer isterseniz Adı, Soyadı, Numarası alanlarının üçünü de birlikte sıralı yazdırabilirim.
Kod:
private void button1_Click(object sender, EventArgs e)
{
   int n1, n2, n3;

  n1 = Convert.ToInt32(textBox3.Text);
  n2 = Convert.ToInt32(textBox6.Text);
  n3 = Convert.ToInt32(textBox9.Text);

    //Numaraları bir diziye alarak büyükten küçüğe sıralayacağız.
    //Mesela numaraların sırasıyla n1=15 , n2=4 , n3=28 olduğunu varsayalım.
            int[ ] numaralar = new int[ ] { n1, n2, n3 };

            //Bu satırla numaralar dizide küçükten büyüğe sıralanır.          
            Array.Sort(numaralar);//Şu an dizideki sıralama 4 , 15 , 28 şeklinde oldu.

            //Fakat biz büyükten küçüğe sıralanmalarını istiyoruz.
            //Bu yüzden küçükten büyüğe sıralanan dizi elemanlarını ters çeviriyoruz. 
                    
            Array.Reverse(numaralar);//Şimdi sıralama 28 , 15 , 4 şeklinde oldu.

                 label15.Text = "";

            //Sırada büyükten küçüğe sıralanan numaraları görüntülemeye geldi.
            for (int i = 0; i < numaralar.Length; i++)
            {
                int siradakiNumara = numaralar[i];
                 //Birden fazla labelda görüntülemek yerine tek bir labelda hepsini görüntüleyelim.
                //     \n demek bir alt satıra geç demek
                label15.Text = label15.Text + siradakiNumara + "\n";
            }

}
 
Son düzenleme:
Bu kadar uğraşmanıza gerek yok. Yeni bir liste oluşturursunuz o listeye Textbox içeriklerini aktarırsınız. Sonra listeyi Linq komutu Orderby ile sıralarsınız. Oluşturduğunuz yeni listeden verileri Label bileşenine aktarırsınız.
Programlama öğrenmeye Linq komutlarını öğrenerek başlayın.
WinForms yerine WPF kullanırsanız Binding kullanarak arayüzdeki bileşenlerin (view) verilerini başka bir sınıfa (viewmodel) aktarırsınız. Daha sonra sizin Label'da göstereceğiniz verileri gene Binding kullanarak otomatik olarak çekersiniz.
Veri sayısı arttıkça Label'da göstermek yerine Datagrid'de göstermek daha iyi olur.
Ben size Winformsta kısaca nasıl yapılır göstereceğim. Wpf'de daha gelişmiş örnek isterseniz onu da yollarım.

Kod:
        class Kişi
        {
            public string Ad { get; set; }
            public string Soyad { get; set; }
            public string Numara { get; set; }
            public Kişi(string ad, string soyad, string numara)
            {
                Ad = ad;
                Soyad = soyad;
                Numara = numara;
            }

        }

        private void Button1_Click(object sender, EventArgs e)
        {
            List<Kişi> liste = new List<Kişi>();
            liste.Add(new Kişi(textBox1.text, textBox2.text, textBox3.text));
            liste.Add(new Kişi(textBox4.text, textBox5.text, textBox6.text));
            liste.Add(new Kişi(textBox7.text, textBox8.text, textBox9.text));
            List<Kişi> yeniliste = liste.OrderBy(x=> Convert.ToInt32(x.Numara)).ToList();
            label3.text = yeniliste[0].Ad;
            label4.text = yeniliste[0].Soyad;
            label5.text = yeniliste[0].Numara;
            //....
        }
 
Uyarı! Bu konu 10 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı