6 Mayıs 2015 Çarşamba

C# Konsolda Küçükten Büyüğe Sıralama Ve Daha Fazlası





using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;

namespace ConsoleApplication1
{
    class Program
    {


        static void Main(string[] args)
        {
            int[] sayılar = new int[10];//10 elemanlı sayı dizimiz

            ArrayList büyük = new ArrayList();// arraylist dinamik dizi için kullanılıyor. Yani eleman sayısını bilmediğin zamanlarda array list kullanılır.kaçtane sayının ortalamadan büyük yada küçük olcağını bilmediğimiz için arraylist dizisini kullandık.
            ArrayList kücük = new ArrayList();//bunu kullanmka için yukarıya using system.collections kütüphanesini ekledik yoksa görmüyor program. Ayrıca bu diziye birden fazla türden değişken atanabilir(double int string float bool vb.)
            int i, j, gecici,deger=1;
            int min, maks;
            double ortalama = 0, osonuc=0 ; //ortalama sonucu küsüratlı çıkacagı için double
            for (i = 0; i < 10; i++)//kullanıcıdan on sayı almak için for döngüsü
            {
                Console.Write(deger + ". Sayıyı Giriniz:");
                deger++;
                sayılar[i] = Convert.ToInt32(Console.ReadLine());//girilen her sayıyı okuyor ve sayılar dizisine atıyor
                ortalama += sayılar[i];//ortalam almamız için girilen her değeri ortalama adlı değişkene ekliyoruz += eklemek için. girilen değer kadar arttırıyor değerini
                osonuc = ortalama / 10;
            }
            Console.WriteLine("=====================================");
            Console.WriteLine("Girilen Sayıların Ortalaması;");
            Console.WriteLine(osonuc); // yukarıda ortalam değşkenine girilen sayıları ekliyorduk.  en son kaçsa eleman sayısına bölüyor direk yazıyor.
            for (i = 0; i < 10; i++)// küçükten büyüğe büyükten küçüğe sıralamak için iç içe forlar
            {
                for (j = i + 1; j < 10; j++)
                {
                    if (sayılar[i] < sayılar[j])

                    {
                        gecici = sayılar[i];
                        sayılar[i] = sayılar[j];
                        sayılar[j] = gecici;

                    }
                }
            }
            Console.WriteLine("=====================================");
            Console.WriteLine("Girilen Sayılar Büyükten Küçüğe Doğru;");
            for (i = 0; i < 10; i++)// yukarıdaki iç içe forların aynısı sadece bundaki ifte işaret değişik.
            // aslında bunları yazmadan da sadece üstteki forlar ve if ile de iki sıralamayıda yaptırabiliriz ama bu seferde içindeki tüm değişkenler aynı olacagı için tekrar farklı değişken tanımlamak gerekir. onun yerine biz aynısını yazıp sadece ifteki işareti değiştirdik.
            //mesela iki sıralamayıda sadece üstte kullansaydık gecici i ve j yerine başka değişkenler tanımlamalıydık aslında öylede kısa olurmuş.
            {
                Console.WriteLine(sayılar[i]);
            }
            for (i = 0; i < 10; i++)
            {
                for (j = i + 1; j < 10; j++)
                {
                    if (sayılar[i] > sayılar[j])
                    {
                        gecici = sayılar[i];
                        sayılar[i] = sayılar[j];
                        sayılar[j] = gecici;

                    }
                }
            }
         
                Console.WriteLine("=====================================");
                Console.WriteLine("Girilen Sayılar Küçükten Büyüğe Doğru;");
                for (i = 0; i < 10; i++)// bu for yukardada vardı. dizideki sayıları sıralatmak için. zaten if in içinde girilen sayılar dizi içinde tekrar sıralanıyor. o sıralı haldeki dizide burda ekrana yazılıyor.
                {
                    Console.WriteLine(sayılar[i]);
                }

                min = sayılar[0];// min isimli değişken de maks değişkenide dizinin ilk elemanına eşitleniyor.
                maks = sayılar[0];
                for (int b = 1; b < sayılar.Length; b++)// burdaki length sayılar dizisinin uzunlugu demek. yukarıdaki forlardada istersek i<10 yada j<10 yerine bunu kullanabiliriz aynı şey. ama eleman sayısı belli olmayan dizilerde length kullanılır.
                // bu forda da yine on kere sayılar karşılaştırılacak.
                {
                    if (min > sayılar[b])  //şuan b sayı dizisinin 1. minde 0. elamanına eşit. onları karşılaştırıyor. eğer min yani 0. eleman 1. elemandan büyükse dizideki elemana eşitliyor. değilse min yine 0. elemanda kalıyor sonra 2. eleman ile karşılaştırıyor.bunu on kere yapınca en sonunda en küçük sayıyı buluyor.
                        min = sayılar[b];
                    if (maks < sayılar[b])// aynı mantık maks için
                        maks = sayılar[b];
                }
                for (int c = 0; c < 10; c++)//sayılar dizisindeki her elemanı ortalama sonucu ile kontrol ettirmek için 10 dönmelik for
                {
                    if (sayılar[c] > osonuc)// sayı dizisindeki her elemanı ortalam ile karşılaştırıyor büyükse büyük adındaki diziye atıyor küçükse alttaki if ile küçük adındaki diziye atıyor.
                    {
                        büyük.Add(sayılar[c]);
                    }
                    else
                    {
                        kücük.Add(sayılar[c]);

                    }
                }
                    Console.WriteLine("=====================================");
                    Console.WriteLine("Ortalamadan Büyük Olan Elemanları Sayısı;");
                    Console.WriteLine(büyük.Count);// ortalamadan büyük olan sayıların toplandıgı dizi büyük dizisi. içindeki eleman sayısını yazdırmak için count kullandık. alttakide küçük sayıların dizisi için
                    Console.WriteLine("=====================================");
                    Console.WriteLine("Ortalamadan Küçük Olan Elemanları Sayısı");
                    Console.WriteLine(kücük.Count);
                Console.WriteLine("=====================================");
                Console.WriteLine("Dizi içindeki en büyük sayı: > > > " + maks);
                Console.WriteLine("Dizi içindeki en küçük sayı: > > > " + min);

                Console.WriteLine("=====================================");
                Console.WriteLine("Ortalamadan Küçük Sayılar");
            foreach (object keleman in kücük)
            {
                Console.WriteLine(Convert.ToInt32(keleman));
            }

            Console.WriteLine("=====================================");
            Console.WriteLine("Ortalamadan Büyük Sayılar");
            foreach (object beleman in büyük)
            {
                Console.WriteLine(Convert.ToInt32(beleman));
            }
                Console.ReadKey();
            }
        }
    }