C# Dizilerde Sıralama Console Application
C# Dizilerde Sıralama Console Application
Dizilerde sıralama yapmanın 2 yolu var arkadaşlar bu yazıda bu iki yoldan da bahsedeceğiz.
1. Yol
İç içe yazacağımız for döngüleri ve if kontrol deyimi ile basit bir işlem yaparak sıralayabiliriz.
Örnek: Girilen 5 Adet sayıyı büyükten küçüğe doğru sıralayalım.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace sayilari_siralama { class Program { static void Main(string[] args) { int[] sayilar = new int[5]; int gecici; Console.WriteLine("\n-----www.technoprogram.com-----\n"); for (int i = 0; i<5; i++) { Console.Write("Sayıyı giriniz..:"); sayilar[i] = Convert.ToInt32(Console.ReadLine()); } for (int i = 0; i < 5; i++) { for (int t = 0; t < 5; t++) { if (sayilar[t] < sayilar[i]) { gecici = sayilar[i]; sayilar[i] = sayilar[t]; sayilar[t] = gecici; } } } foreach (int i in sayilar) { Console.WriteLine("{0}", i); } Console.ReadKey(); } } }
Arkadaşlar bu örnekte büyükten küçüğe sıralamayı gösterdim eğer ki küçükten büyüğe sıralamak isterseniz 26. satırdaki
if (sayilar[t] < sayilar[i])
kod üzerinde “<” işaretini “>” işareti ile değiştirmeniz yeterlidir.
if (sayilar[t] > sayilar[i])
2. Yol
Örnek: Girilen 5 Adet sayıyı metot kullanarak büyükten küçüğe doğru sıralayalım.
Dizilerde sıralama yapmak için Array sınıfının Sort metodunu kullanırız.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace sayilari_siralama { class Program { static void Main(string[] args) { int[] sayilar = new int[5]; Console.WriteLine("\n-----www.technoprogram.com-----\n"); for (int i = 0; i<5; i++) { Console.Write("Sayıyı giriniz..:"); sayilar[i] = Convert.ToInt32(Console.ReadLine()); } Array.Sort(sayilar);//küçükten büyüğe sıralıyoruz Array.Reverse(sayilar);//sıralanmış diziyi ters çevirip büyükten küçüğe sıralanmış dizi elde ediyoruz. foreach (int i in sayilar) { Console.WriteLine("{0}", i); } Console.ReadKey(); } } }
Sort metodu bir dizideki elamanları küçükten büyüğe sıralamamızı sağlar. Bu metodun 2 kullanım biçimi vardır.
1.
Array.Sort(sayilar)
2.
Array.Sort(sayilar,4,2)//sayilar dizisi, 4.elemandan itibaren,2 elamanı küçükten büyüğe sıralar
Dizi sıralamasını ters çevirmek içinde Array sınıfının Reverse metodunu kullanırız.
Reverse metodu sıralamayı ters çevirir. Sort metodu gibi 2 kullanım biçimi vardır ve bire bir aynıdır.
1.
Array.Reverse(sayilar)
2.
Array.Reverse(sayilar,4,2)//sayilar dizisi, 4.elemandan itibaren,2 elamanın sıralamasını ters çevirir
Not: Dizilerin ilk elemanı 0. elemandır.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace sayilari_siralama { class Program { static void Main(string[] args) { int[] sayilar = new int[5]; Console.WriteLine("\n-----www.technoprogram.com-----\n"); for (int i = 0; i<5; i++) { Console.Write("Sayıyı giriniz..:"); sayilar[i] = Convert.ToInt32(Console.ReadLine()); } Array.Sort(sayilar);//küçükten büyüğe sıralıyoruz Array.Reverse(sayilar);//sıralanmış diziyi ters çevirip büyükten küçüğe sıralanmış dizi elde ediyoruz. foreach (int i in sayilar) { Console.WriteLine("{0}", i); } Console.ReadKey(); } } }
Diziyi küçükten büyüğe sıralamak isterseniz 22. satırdaki
Array.Reverse(sayilar);
kodunu kaldırmanız yeterlidir.
Kullanıcı tarafından girilen 5 adet 3 basamaklı sayıyı büyükten küçüğe doğru sıralayarak ekrana yazan uygulamayı yazınız. Sorusunu cozmeye calisiyorum.”Sayı girişinden hemen sonra diziye sayı eklenmeden bu dediklerini if deyimi ile çözebilirsin.” dediginiz gibi yaptim ama kod donguye girmeden else bloguna dusuyor. Yardimci olabilir misiniz?
F11 e basarak satır satır çalıştır uygulamayı Watch ekranından diziyi ve değişkenleri takip et ufak bir hata yapmış olabilirsin.
bunu nasıl en az 2 basamaklı yapabilirim ve tek basamaklı girilince nasıl mesaj yazdırabilirim ayrıca 100 den büyük sayı girildiğinde ekrana nasıl en büyük sayı 100 olabilir yazdırabilirim…
Sayı girişinden hemen sonra diziye sayı eklenmeden bu dediklerini if deyimi ile çözebilirsin.
sayıyı 5 tane girmek yerine nasıl 10 tane ye çevirebiliriz ?
5 yazan yerlere 10 yazacaksın bu kadar