31 Mart 2013 Pazar

72 - Diziler... Girilen İsimleri Sıraya Koyan ve İstenildiği Zaman Listeleyen Program...


Diziler ile ilgili bir uygulama... Amacımız girilen bütün isimleri istenildiği zaman sıraya dizmek ve liste halinde göstermek... İsim girişi ile ilgili limit olmasın diye 1000 adet girdirdim... Programın her hangi bir yerinde girilen isimleri listelemek için isim girişine "liste" yazmanız yeterli olacaktır... Programdan çıkmak için muhakkak listelemeye girmeli ve devam etmek istiyor musunuz sorusuna H ile cevap vermelisiniz... Aksi takdirde 1000 tane isim girene kadar program devam edecektir...  Programı bitirme işlemini ise goto komutu ile sağladık... 

Programda her isim girişinden sonra isimler sıraya konmaktadır... Bu işlemi ise daha önceki girilen isimler ile kıyaslama yaparak sağladık... Compare komutu bu işlemi bize yaptı... Compare 3 sayı değeri dönderiyor... Negatif sayı ise birinci parametre alfabetik olarak daha önde, pozitif ise daha geride, sıfır ise iki parametre birbirine eşit demektir... 

Programın çeşitli yerlerinde ekranı Console.Clear() komutu ile temizledik... 



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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Girilen isimleri sıraya koyan program? İsimler istenildiği zaman listelensin...

            string[] isim = new string[1000]; // 1000 tane isim girebiliriz... 
            
            for (int i = 0; i < 1000; i++)
            {
                Console.Write((i+1)+". İsmi giriniz...:"); // isim girişi yaptırıyoruz...
                isim[i] = Console.ReadLine();

                // İsim girişlerinden her hangi birisinde "liste" girişi yapılırsa isimleri sıra listesine koyuyoruz...
                // ilk isimde listeleme yapmasın diye i>0 şartı koyduk...
                if (i > 0 && isim[i] == "liste") 
                {
                    Console.Clear(); //Listelemeden önce ekranı temizliyoruz... 
                    for (int listele = 0; listele < i; listele++)  // Ekranda şu ana kadar girilen isimleri listeliyor...
                        Console.WriteLine(isim[listele]);
                    i--; //isim girişine liste girince bir tane dizi elemanımız boşuna gitmiş oluyor... 
                    // Bu durumda sayacı bir geri alarak tekrar isim girişi yaptırıyoruz...  

                    // Bu kısım listelemeden sonra programı sonlandırmak için... H girilirse program sonlanıyor... 
                    // Eğer 1000 tane isim girmek istemiyorsanız listeleme yapıp Devam kısmına H girmelisiniz... 
                    Console.WriteLine("\nDevam Etmek İstiyormusunuz...(E/H)");
                    string devam = Console.ReadLine();
                    if (devam.ToUpper() == "H")  
                        goto bitir; // Sonlandırma işlemini goto ile yapıyoruz... Programın sonuna gidiyor...
                }

                    // Bu kısım ise sıralama için... i>0 ile ilk girişten sonrakileri sıralıyoruz... 
                    // Her isim girişinden sonra sıralama işlemi yapıyoruz... 
                else if (i > 0)
                {
                    string sira = ""; // Boş değişkenimiz... Yer değiştirmede kullanacağız... 
                    for (int k = 0; k <= i; k++) // Girilen en son isme kadar döngüyü kuruyoruz... Bu sebeple k<=i ifadesi var...
                    {
                        int result = String.Compare(isim[i], isim[k]); // compare ile isimleri karşılaştırıyoruz... 
                        // Buradan negatif bir sayı dönerse ilk isim alfabede daha önce demektir... 
                        if (result < 0) 
                        {
                            // Yer değiştirmeleri yapıyoruz... 
                            sira = isim[i];
                            isim[i] = isim[k];
                            isim[k] = sira;
                        }
                    }
                }
            }

            // Eğer 1000 tane isim girdiyseniz bu satırdaki kodlara ulaştınız demektir...
            // Ekran temizlenip girilen bütün isimler listeleniyor... 
            Console.Clear(); 
            foreach (string listele in isim)
                Console.WriteLine(listele);

        bitir: // goto ile bitiş yaptığımızda programı bu satırdan itibaren bitiyoruz... 
            Console.WriteLine("Program sona erdi...");
            Console.ReadLine();

            // Programdaki açık, görebildiğim kadarı ile başlangıçta ilk isme "liste" girilmesi... Bu durumda hata verdirmemiz lazım... 
        }
    }
}