C# rastgele sayı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# rastgele sayı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

3 Nisan 2013 Çarşamba

67 - Random... Ödül Zar Atışı Oyunu...


Hani gerçek anlamda zar atışını yapamıyoruz... Çünkü sonuçta console üzerinde bir uygulama yapıyoruz... Ama zar atıldıktan sonra gelen sayıyı programa girdirebiliriz... Elinize bir zar alın, atın, gelen sayıyı da programa girdirin:) işin esprisi tabiiki... 

1-6 arası rastgele bir sayı ataması yapacağız... Kullanıcıdan bunu bulmasını isteyeceğiz... Aynı zamanda kullanıcı her bulduğunda ödülü biraz daha katlanacak... 1 defa bulursa 10000TL alacak... 2 defa bulursa 20000TL alacak ve 10000TL nin katları şeklinde buldukça devam edecek... Ne zamanki atılan zar tahmin ettiği olmaz o zaman programda kurmuş olduğumuz sonsuz while döngüsünden çıkılacak ve ne kadar ödül alacağını belirleyeceğimiz kısıma geçilecek... 

Aşağıda programın kodları var... Dikkatli incelendiğinde güzel bilgiler olacaktır... 

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

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            int odul = 0;
            Random x = new Random();
            
            int i = 1;
            while ( i <= 1)
            {
                int sayi = x.Next(1, 6); // Zar atışını yaptırıyoruz... 
                Console.Write("1-6 Arasında "+ (odul+1) +". zar atışını yapınız...:");
                int giris = int.Parse(Console.ReadLine());
                if ( giris == sayi) // Sayıyı bulduğumuzda bu kısım çalışır... 
                {
                           Console.WriteLine("Tebrikler! "+(odul+1)+". Zar Atışınız Doğru...");
                           odul++; // Her bulunduğunda ödül bir artırılıyor...
                }
                else
                {
                    // Eğer yanlış tahmin yapılırsa döngüden çıkılıyor... Ödül kısmına geçiş yapılıyor... 
                    Console.WriteLine((odul+1)+". Oyunda Yanlış Bildiniz... Oyun Bitti...");
                    break; // Döngüyü kırıyoruz... 
                }
            }
            if (odul > 0) // odul sıfırdan büyükse para veriyoruz... 
            {
                // Ödül her artışında 10000TL fazla para veriliyor...
                Console.ForegroundColor = ConsoleColor.Yellow; // Sarı renkte yazı yazmamızı sağlayan komut... 
                Console.WriteLine("Ödülünüz = " + odul * 10000 + "TL... Tebrikler...");
            }
            else
            {
                // odul sıfır ise hiç bilinmedi demektir ve para vermiyoruz... 
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("Ne yazıkki ödül veremiyoruz... ");
            }
                Console.ReadKey();
        }
    }
}

65 - Random - Break... 5 Defada Sayı Tahmini...


Bu örnekte biraz daha farklı bir algoritma kullandık... Aşağı, yukarı diye yönlendirmeler yerine tahmin ipucular ile sayısal veriler verdik... Bunun için de girilen sayı ile aranan sayı arasındaki farkı bulup 2 ile 4 arası bir sayıya böldürdük... 2 ile 4 arasında hangi sayı olacağını ise bilgisayarın karar vermesini istedik... Yani bir tane daha rastgele sayı ürettik... 

En iyi anlama yolu elbetteki programın sağlamasını yapmaktır... Bir tane sayısal örnek ile anlatalım;

Örneğin bilgisayarın belirlediği sayı 60 olsun... Bizim de ilk olarak girdiğimiz sayı 80 olsun... Bu durumda girdiğimiz sayı, bilgisayarın belirlediği sayıdan büyük olduğu için 80-60 = 20 ile aradaki farkı bulacağız... Yani 20'yi... Bulduğumuz bu farkı da bilgisayarın atayacağı ikinci rastgele sayı ile 2-4 arası bir bölüm yapacağız... Bilgisayar rastgele olarak burada 2 atarsa 20/2 = 10 sayısını bulacağız...

Kullanıcıya, girmiş olduğun sayıya 10 veya daha üstünde aşağı git diye mesaj veriyoruz... Bu sayede 80 giren kullanıcı 70 veya 70 den daha küçük bir sayı olduğunu anlamış oluyor... 

Tabii bu rastgele oluşturulmuş olan bir algoritma... Daha farklı algoritmalarda elbette yapılabilir... O da size kalmış... 

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

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            // Sayı tahmin oyunlarından bir tanesi daha... Sadece ipucu algoritmamız biraz farklı...
            Random uret = new Random();
            int aranan = uret.Next(1, 100);// 1-100 arası rastgele sayı atandı...

            int i = 1; // Sayaç için kullanıyoruz... 
            while (i<=5)
            {
                Console.Write(i + ". Sayı Tahminini Yapınız:");
                int girilen = int.Parse(Console.ReadLine()); // Sayıyı girdiriyoruz... 

                if (girilen == aranan) 
                {
                    // Sayıyı bulursak kaçıncı defada bulduğumuzu yazdırıyoruz... 
                    Console.Write("Sayıyı " + i + ". seferde buldunuz...");
                    break; // Sayıyı bulduktan sonra döngüyü kırıyoruz ve çıkıyoruz... 
                }
                else if (girilen > aranan) // Girilen sayı büyükse aşağıdaki algoritma ile aşagı gitmesini söylüyoruz...
                    Console.WriteLine((girilen-aranan)/uret.Next(2,4) + " sayı veya daha fazla aşağı...");
                else if (girilen < aranan) // Girilen sayı küçükse tersini yapıyoruz... 
                    Console.WriteLine((aranan - girilen) / uret.Next(2, 4) + " sayı veya daha fazla yukarı...");
                i++;
            }

            if (i > 5) // Buraya girmesinin tek yolu yukarıdaki döngünün tamamlanmasıdır... Zaten bu durumda sayı bulunamamıştır... 
                Console.Write("Sayıyı bulamadınız... Sayı= " + aranan);
            Console.ReadKey();
        }
    }
}

2 Nisan 2013 Salı

64 - Random - Break... Rastgele Sayı Tahmini 3 Hak...



Break Komutu: Her hangi bir döngüyü kullanıldığı yerde yarıda kesen ve döngüden çıkan komuttur... Break komutu döngüde istediğimiz sonuca ulaştığımız anda kullanılan bir komuttur. İşlevsel olarak da döngüyü kırarak programı döngüden sonradan devam ettirmeyi sağlar... 

Aşağıdaki programımızda öncelikle bilgisayara rastgele bir sayı atatıyoruz... 3 defa çalışacak bir while döngüsü kuruyoruz... Amacımız kullanıcının 3 defada rastgele atanmış olan bu sayıyı bulması... Bunun için yardım da ediyoruz... Eğer kullanıcının girdiği sayı bulunması gerekenden küçükse YUKARI, tersi durumsa AŞAĞI diye mesaj verdirerek yönlendirme yapıyoruz... Tabii bir de 3 hakda bulunamazsa bir if ile bunun kontrolünü yapıyoruz... Eğer i=3 veya daha büyükse zaten bulunamadı demektir... 

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

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
           // 1-10 arası rastgele bir sayı ataması yapılsın... Atanan bu sayıyı bulmaya çalışalım... 

            // Rastgele sayı atadık...
            Random bul = new Random();
            int deger = bul.Next(1, 10);

            // Tahmin hakkı olarak 3 defa verdik... 
            int i = 1;
            while (i <= 3)
            {
                //Eleman sayı girdi... 
                Console.Write("Sayıyı gir..:");
                int sayi = int.Parse(Console.ReadLine());
                
                // Sayıyı bulmaya çalıştık...
                if (deger == sayi)
                {
                    Console.Write("doğru sayıyı buldunuz...");
                    break; // Döngüyü kıran komut...
                }
                else if (deger > sayi)
                    Console.WriteLine("Yanlış tahmin... YUKARI...");
                else if (deger <sayi)
                    Console.WriteLine("Yanlış tahmin... AŞAĞI...");
                i++;
            }

   // Sayı bulunamadığı takdirde ekranda gözükecek...
   if(i>3)
                    Console.WriteLine("Bulamadığınız Sayı: " + deger);
            Console.ReadKey();
        }
    }
}

63 - Random... Rastgele 5 Sayının Karesini ve Küpünü Alan Program...


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

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            // Rastgele 5 sayının karesini ve küpünü bulan program...
            Random x = new Random();
            for (int i = 1; i <= 5; i++)
            {
                int a = x.Next(1, 10);
                Console.WriteLine("Karesi =" + Math.Pow(a, 2)); // Math.Pow üslü sayılar için kullanılıyor...
                Console.WriteLine("Küpü =" + Math.Pow(a, 3));
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}

62 - Random... Rastegele Atanan Sayılardan Sıfır Gelene Kadar Devam Eden Program...


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

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            // -10 ile 10 arası rastgele sayı üretip, sayının negatif veya pozitif olduğunu bulan program...
            // Program sıfır bulana kadar devam edecek ve kaçıncı seferde sıfır bulduğunu söyleyecek... 
            
            Random uret = new Random();
            int i = 0; // Bunu sayaç için kullanacağız... Kaçıncı seferde sıfır bulunduğunu söyleyecek... 
            
            tekrar: // Her sayı bulmadan sonra program bu etiketten devam edecek...
            i++; // Sayacımızı bir artırıyoruz... 

            int uretilen = uret.Next(-10, 10); // -10 ile 10 arası sayı üretiyoruz... 
            if (uretilen > 0)
                Console.WriteLine("Sayı Negatif:" + uretilen);
            else if (uretilen < 0)
                Console.WriteLine("Sayı Pozitif:" + uretilen);
            else if (uretilen == 0) 
                goto son; // Sayı sıfır olması durumunda programı bitireceğiz... 
            goto tekrar;
            
        son: // Program bu etiket ile birlikte bitiyor... 
            Console.WriteLine("\nSıfır "+i+". Seferde Bulundu"); // Kaç seferde bulduğumuzu yazıyoruz... 
            Console.Write("Bitti...");
            Console.ReadKey();
        }
    }
}

60 - Random... Rastgele Sayı Atamak...


Random sınıfı bize istediğimiz aralıklarda sayı üretmemizi sağlıyor... Bu sınıf kullanılarak tanımlanan değişkeni daha sonra Next özelliği ile birlikte çağırdığımızda bize bir sayı üretiyor... Sayı aralığını kendimiz belirliyoruz... Birinci sayının ikinci sayıdan küçük olması gerekiyor... 

Rastgele sayıları program içerisinde çok yerde kullanabiliriz... Bu şekilde kullanımlar ile oyunlar tasarlayabiliriz... Çok kullanışlı olan bu özellik aşağıdaki örnekle anlatılmaya çalışılmıştır... 

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)
        {
            // Rastgele 1-10 arası atanmış olan 5 sayıyı ekranda gösteren program...
            Random x = new Random(); // Rastgele sayı ataması için Random sınıfını çağırıyoruz...
            for (int i = 1; i <= 5; i++)
            {
                int sayi = x.Next(1, 10); // Bu satır 1 ile 10 arası rastgele sayı üretecek...
                Console.WriteLine(i + ". sayı = " + sayi);
            }
            Console.ReadKey();
        }
    }
}

1 Nisan 2013 Pazartesi

79 - Diziler... Harflerden Şifre Üretimi...


Rastgele üretmiş olduğumuz şifreleri istediğimiz yerde kullanabiliriz... Aşağıdaki programda harflerin tamamı bir diziye atılıyor ve dizi içinden rastgele değerler seçilerek bir şifre oluşturuluyor... Yalnız burada Türkçe karakterleri kullanmadık... İstenirse onlarda kullanabilir... Sadece diziye eklemek gerekiyor... 

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

namespace ConsoleApplication17
{
    class Program
    {
        static void Main(string[] args)
        { //10 karakterli harflerden oluşacak bir şifre programının tasarımı

//1. Kısım
            char[] karakter = new char[26]; // Tek karakter olduğu için char kullandık...
            int i=0;

            // Harfleri diziye attık...
            for (char k='a';k<='z';k++) // a dan z ye de for döngüsü kurabiliyoruz...
            {
                karakter[i] = k; 
                    i++;
            }

            i = 0;
            while (i <= karakter.Length-1) // Dizi elamanlarını ekranda gösterdik...
            {
                Console.Write(karakter[i] + " ");
                i++;
            }

            Console.WriteLine();
           
// 2. Kısım
            string sifre = ""; // Şifre üretmek için kullanacağız...
            int dizisayaci = 0;

            Random uret = new Random(); //Rastgele dizi elamanları kadar sayı üreteceğiz
            for (i = 0; i <= 9; i++)
            {
                dizisayaci = uret.Next(0, 25); // Sayıları üretiyoruz...

                //Üretilen sayıya karşılık karakter dizisinin elamanını çağırıyoruz...
                sifre = sifre + karakter[dizisayaci]; // tek tek ekleyerek şifremizi oluşturuyoruz...
            }

            // Oluşturulmuş olan şifreyi ekranda gösteriyor... 
            Console.WriteLine("Üretilmiş olan şifre = " + sifre); 

            Console.ReadKey();
        }
    }
}