C# – Girilen sayıları yıldızlarla yazalım

Bugün yapacağımız örnekte kullanıcı tarafından girilen sayıları ekrana önce tektek, altına da yıldızlarla yazılmasını sağlayacağız. Kodların üzerindeki açıklamaların yeterli olduğunu düşünüyorum. Her seferinde bu basit antreman uygulamalarına açıklama yazmak zor gelmeye başladı diyebilirim.

yıldız-1

Genel olarak uygulamayı özetlersek;

  • Uygulamada bir öncekinden farklı bir çıkış metodu kullandım.
  • Kullanıcının giriş yaptığı metni bir değişkene atama gereği duymadım.
  • standart bir separator (yatay ayırıcı çizgi) tanımladım ve her ihtiyaçta onu kullandım.
  • Sadece sayılar 3×5 yıldız ölçüsünde tanımladım, harfleri tanımlamak çok zor geldi. Belki daha kısa bir yöntemi varsa (ki ben bilmiyorum) yapılabilirdi.
  • Gelen metni string olarak alıp char’lara parçaladığım için exception handler çalışmasına gerek kalmadı. Ama sadece integer değerler olsun diyorsak, parçalanmış char içinde sayı yoksa uyarı vermek gerekirdi. Exception olmadığı ve basit bir if/then ile dahi yapılabileceği için bana gelişim açısından katkı sağlamayacağını düşünerek yazmadım. Şimdi düşünüyorum da, bunu açıklayana kadar yazsaymışım daha iyiymiş…
  • Sayıları tutan diziler iki boyutlu. Harf her ne ise switch aracılığı ile her satırın kendi değişkenlerine atıyoruz ve tüm karakterler bitince, ekrana yazdırıyoruz.

Kodun tamamı şöyle;

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

/*
 * Hakan Müştak @ 2014
 * hmustak@gmail.com - www.mustak.org
 */

namespace ConsoleApplication1
{
    class Program
    {

        //Sayıları piksel-yıldızlarına böldüğümüz metod
        public static void pikselHesapla(string gelenSayi)
        {
            //karakterleri adresleyen matris Diziler
            String[,] diziBir = { 
                             { " ", "*", " " , " " }, 
                             { "*", "*", " " , " " },
                             { " ", "*", " " , " " },
                             { " ", "*", " " , " " },
                             { "*", "*", "*" , " " } 
                                 };

            String[,] diziIki = { 
                             { "*", "*", "*" , " " }, 
                             { " ", " ", "*" , " " },
                             { "*", "*", "*" , " " },
                             { "*", " ", " " , " " },
                             { "*", "*", "*" , " " } 
                                 };

            String[,] diziUc = { 
                             { "*", "*", "*" , " " }, 
                             { " ", " ", "*" , " " },
                             { " ", "*", "*" , " " },
                             { " ", " ", "*" , " " },
                             { "*", "*", "*" , " " } 
                                 };

            String[,] diziDort = { 
                             { "*", " ", " " , " " }, 
                             { "*", " ", " " , " " },
                             { "*", " ", "*" , " " },
                             { "*", "*", "*" , " " },
                             { " ", " ", "*" , " " } 
                                 };

            String[,] diziBes = { 
                             { "*", "*", "*" , " " }, 
                             { "*", " ", " " , " " },
                             { "*", "*", "*" , " " },
                             { " ", " ", "*" , " " },
                             { "*", "*", "*" , " " } 
                             };

            String[,] diziAlti = { 
                             { "*", " ", " " , " " }, 
                             { "*", " ", " " , " " },
                             { "*", "*", "*" , " " },
                             { "*", " ", "*" , " " },
                             { "*", "*", "*" , " " } 
                                 };

            String[,] diziYedi = { 
                             { "*", "*", "*" , " " }, 
                             { " ", " ", "*" , " " },
                             { " ", " ", "*" , " " },
                             { " ", " ", "*" , " " },
                             { " ", " ", "*" , " " } 
                                 };

            String[,] diziSekiz = { 
                             { "*", "*", "*" , " " }, 
                             { "*", " ", "*" , " " },
                             { "*", "*", "*" , " " },
                             { "*", " ", "*" , " " },
                             { "*", "*", "*" , " " } 
                                 };

            String[,] diziDokuz = { 
                             { "*", "*", "*" , " " }, 
                             { "*", " ", "*" , " " },
                             { "*", "*", "*" , " " },
                             { " ", " ", "*" , " " },
                             { " ", " ", "*" , " " } 
                                 };

            String[,] diziSıfır = { 
                             { "*", "*", "*" , " " }, 
                             { "*", " ", "*" , " " },
                             { "*", " ", "*" , " " },
                             { "*", " ", "*" , " " },
                             { "*", "*", "*" , " " } 
                                 };

            //Ekrana basacağımız Piksel satırlarını oluşturuyoruz
            String siraBir = null, siraIki = null, siraUc = null, siraDort = null, siraBes = null;
            //Kullanacağımız Separatorü 1 kere hazırlayalım, heryerde aynı boyutta kullanalım
            String seperator = "\n-----------------------------------------------------------------------------";

            Console.WriteLine(seperator); //separator

            //Girilen sayının karakterlere parçalanması
            foreach (char harf in gelenSayi)
            {
                //Karakterlerin sayılara dağılımı
                switch (harf)
                {
                    case '1':
                        Console.Write("bir ");
                        for (int i = 0; i < 4; i++)
                        {
                            siraBir = siraBir + diziBir[0, i];
                            siraIki = siraIki + diziBir[1, i];
                            siraUc = siraUc + diziBir[2, i];
                            siraDort = siraDort + diziBir[3, i];
                            siraBes = siraBes + diziBir[4, i];
                        }
                        break;
                    case '2':
                        Console.Write("iki ");
                        for (int i = 0; i < 4; i++)
                        {
                            siraBir = siraBir + diziIki[0, i];
                            siraIki = siraIki + diziIki[1, i];
                            siraUc = siraUc + diziIki[2, i];
                            siraDort = siraDort + diziIki[3, i];
                            siraBes = siraBes + diziIki[4, i];
                        }
                        break;
                    case '3':
                        Console.Write("üç ");
                        for (int i = 0; i < 4; i++)
                        {
                            siraBir = siraBir + diziUc[0, i];
                            siraIki = siraIki + diziUc[1, i];
                            siraUc = siraUc + diziUc[2, i];
                            siraDort = siraDort + diziUc[3, i];
                            siraBes = siraBes + diziUc[4, i];
                        }
                        break;
                    case '4':
                        Console.Write("dört ");
                        for (int i = 0; i < 4; i++)
                        {
                            siraBir = siraBir + diziDort[0, i];
                            siraIki = siraIki + diziDort[1, i];
                            siraUc = siraUc + diziDort[2, i];
                            siraDort = siraDort + diziDort[3, i];
                            siraBes = siraBes + diziDort[4, i];
                        }
                        break;
                    case '5':
                        Console.Write("beş ");
                        for (int i = 0; i < 4; i++)
                        {
                            siraBir = siraBir + diziBes[0, i];
                            siraIki = siraIki + diziBes[1, i];
                            siraUc = siraUc + diziBes[2, i];
                            siraDort = siraDort + diziBes[3, i];
                            siraBes = siraBes + diziBes[4, i];
                        }
                        break;
                    case '6':
                        Console.Write("altı ");
                        for (int i = 0; i < 4; i++)
                        {
                            siraBir = siraBir + diziAlti[0, i];
                            siraIki = siraIki + diziAlti[1, i];
                            siraUc = siraUc + diziAlti[2, i];
                            siraDort = siraDort + diziAlti[3, i];
                            siraBes = siraBes + diziAlti[4, i];
                        }
                        break;
                    case '7':
                        Console.Write("yedi ");
                        for (int i = 0; i < 4; i++)
                        {
                            siraBir = siraBir + diziYedi[0, i];
                            siraIki = siraIki + diziYedi[1, i];
                            siraUc = siraUc + diziYedi[2, i];
                            siraDort = siraDort + diziYedi[3, i];
                            siraBes = siraBes + diziYedi[4, i];
                        }
                        break;
                    case '8':
                        Console.Write("sekiz ");
                        for (int i = 0; i < 4; i++)
                        {
                            siraBir = siraBir + diziSekiz[0, i];
                            siraIki = siraIki + diziSekiz[1, i];
                            siraUc = siraUc + diziSekiz[2, i];
                            siraDort = siraDort + diziSekiz[3, i];
                            siraBes = siraBes + diziSekiz[4, i];
                        }
                        break;
                    case '9':
                        Console.Write("dokuz ");
                        for (int i = 0; i < 4; i++)
                        {
                            siraBir = siraBir + diziDokuz[0, i];
                            siraIki = siraIki + diziDokuz[1, i];
                            siraUc = siraUc + diziDokuz[2, i];
                            siraDort = siraDort + diziDokuz[3, i];
                            siraBes = siraBes + diziDokuz[4, i];
                        }
                        break;
                    case '0':
                        Console.Write("sıfır ");
                        for (int i = 0; i < 4; i++)
                        {
                            siraBir = siraBir + diziSıfır[0, i];
                            siraIki = siraIki + diziSıfır[1, i];
                            siraUc = siraUc + diziSıfır[2, i];
                            siraDort = siraDort + diziSıfır[3, i];
                            siraBes = siraBes + diziSıfır[4, i];
                        }
                        break;

                    default:
                        break;
                }//switch
            }//foreach


            //Sayıların Piksel şeklinde ekrana basılması
            Console.WriteLine(seperator); //separator
            Console.WriteLine(siraBir);
            Console.WriteLine(siraIki);
            Console.WriteLine(siraUc);
            Console.WriteLine(siraDort);
            Console.WriteLine(siraBes);
            Console.WriteLine(seperator); //separator

        }


        static void Main(string[] args)
        {

            //Kullanıcının çıkma isteğini taşıyan değişken
            String doYouWantQuit = null; 

            //Uygulamanın oturum düşmeden tekrarını sağlayan döngü
            do
            {
                //ekranı temizle
                Console.Clear();

                //Yazılmak istenen sayının girilmesi
                Console.Write("Yazılacak sayıyı girin :");
                pikselHesapla(Console.ReadLine());

                Console.WriteLine(); //separator

                Console.Write("Çıkmak istiyorsanız {0}'ya basınız, tekrar denemek için {1}'a basınız...","Q","Enter");
                doYouWantQuit = Console.ReadLine();

                Console.WriteLine(); //separator

            } while (!((doYouWantQuit=="q")||(doYouWantQuit=="Q")));

        }//main
    }//class Program
}//namespace

Bu uygulama fikrini bana veren dostum Kamil’e bir kere daha teşekkürler.

Hakan Müştak ☯ 2014/10

 


Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*

Captcha Kontrolü * Zaman aşımı, sayfayı tekrar yükleyin


Top