csharp random etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
csharp random etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

17 Haziran 2013 Pazartesi

Textbox'tan Alınan Sayı Kadar Rasgele Sayı Üretip Listbox'a Ekleme,Sırala,Silme ve Değiştirme - Csharp

Windows Formumuz Aşağıdaki Gibi Olacak;

Bu uygulamada, random sınıfını, dizileri ve listbox yapılarını kullanacağız.

Soru: Textbox'tan alınan bir sayı kadar rastgele sayılar üretilip listbox'a eklenecek. Sonra eklenen bu rastgele sayılar sıralanacak. En son Değiştir butonuna basarak bu sayılar başka rastgele sayılarla yer değiştirecek.

Çözümü:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace uygulama6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
     public int[] uret;
     public int sayi;
     public int sayac = 0;
        private void btnUret_Click(object sender, EventArgs e)
        {
            sayi = Convert.ToInt32(textBox1.Text);
            uret = new int[sayi];
            Random rdn = new Random();
            listBox1.Items.Clear();
          
            for (int i = 0; i < sayi; i++)
            {
               uret[i]= rdn.Next(1, 1000);
               listBox1.Items.Add(uret[i]);

              
            }
            //textBox1.Text = "";
        }

        private void btnSirala_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            Array.Sort(uret);
            for (int i = 0; i < sayi; i++)
            {
                listBox1.Items.Add(uret[i]);
            }

        }

        private void btnSil_Click(object sender, EventArgs e)
        {
        
            listBox1.Items.Remove(listBox1.SelectedItem);
        }

        private void btnDegistir_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            sayi = Convert.ToInt32(textBox1.Text);
            uret = new int[sayi];
            Random rdn = new Random();
            listBox1.Items.Clear();

            for (int i = 0; i < sayi; i++)
            {
                uret[i] = rdn.Next(1, 1000);
                listBox1.Items.Add(uret[i]);


            }

         
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
    }
}
Kod Açıklaması:
public int[] uret;
     public int sayi;
     public int sayac = 0;
        private void btnUret_Click(object sender, EventArgs e)
        {
            sayi = Convert.ToInt32(textBox1.Text);
            uret = new int[sayi];
            Random rdn = new Random();
            listBox1.Items.Clear();
          
            for (int i = 0; i < sayi; i++)
            {
               uret[i]= rdn.Next(1, 1000);
               listBox1.Items.Add(uret[i]);

              
            }
            //textBox1.Text = "";
        }
İlkönce textbox'a girilen değeri convert toint32 metodu kullanarak integer bir değere çevirdik ve sayi isminde bir değişkene atadık. Demekki bizim dizimizin eleman sayısı bu textbox'a girilen değer kadar olacak. Bunu şöyle yaptık;    uret = new int[sayi]; Bundan sonra random sınıfını kullanarak bir nesne ürettik. Listbox'ımıza bu üretilecek sayıları eklemeden önce; listBox1.Items.Clear(); listbox'a bulunan verileri(items) clear metodu kullanarak temizledik. Belki daha önceden veri eklenmiştir. Veya ratgele sayı ürettik bir defa üret butonuna bastığımızda eger daha önce verileri varsa onların üzerine ekleyecek. O yüzden işi sağlama aldık önceden veri olsada olmasada verileri temizledik. Gelelim artık ürettiğimiz sayıları bir diziye atıyalım sonra bu dizinin elemanlarını listbox'a eklemiş olacağız. Bunları yapmak için bir for döngüsü kuruyoruz. Bizim döngümüz textbox'a girilen sayı kadar döngümüz dönecek. uret[i]= rdn.Next(1, 1000); rnd diye bir nesne yaratmıştık. bu nesne 1,1000 arsında bir sayı üretecek ve bu sayı bizim dizimizin i. elemanına eklenecek. Döngüde 3. defa dönüyor. ozaman üretilen sayı dizimizin[3] 3 nolu indeksine ekleniyor. Şimdi sıra dizimizdeki i. elemanının tuttuğu sayıyı listbox'a eklemeye geldi. listBox1.Items.Add(uret[i]); bu kod ile dizinin i. elemanının tuttuğu sayıyı listbox'ın itemlerina verilerine add metodu ile ekleniyor.

Sırala Butonuna basılınca veriler sıralanacak;

            listBox1.Items.Clear();
            Array.Sort(uret);
            for (int i = 0; i < sayi; i++)
            {
                listBox1.Items.Add(uret[i]);
            }
Sıralanırken önceki verilerin üzerine sıralı verileri eklememek ve son sıralanmış halini eklemek için öncelikle listbox'ta olan itemleri temizliyoruz. Bunu clear metodu ile yapıyoruz. listBox1.Items.Clear();
Şimdi bizim dizimiz rastgele sayıları adı üstünde rastgele üretildiği sıra ile tutuyor. Bunları düzenli hale getirmek çok kolay. Array sınıfında sort diye bir metod var. Bu metod dizinin içindeki elemanları sıralı hale getiriyor.  Kullanımı şu şekildedir: Array.Sort(uret); array.sort(dizimizin ismi)
peki sıralanmış haldeki dizinin elemanlarını yeniden listbox'a ekliyelim. Bunun için yine for döngüsü kullanıyoruz. For döngüsü yine textbox'a girilen sayının değeri kadar yani bu aynı zamanda dizimizin eleman sayısına eşittir. DÖngü her döndüğünde listbox'ın itemlarina dizinin[i] elamanın değerini add metodu ile ekliyoruz.

Şimdi seçtiğimiz bir veriyi listbox'tan silmeye geldi.
listBox1.Items.Remove(listBox1.SelectedItem); Evet kod çok kısa :) burada diyorki listbox'ta seçili olan item yani veriyi nerden atacak. Yine listbox'ın itemlerinda remove çıkaracağız sileceğiz.

Değiştirme yapacağımız zaman aslında bir nevi yeniden rastgele sayı üretmiş olacağız. Üret butonundaki kodların ve mantığın aynısı :)

Uygulamayı Buradan indirebilirsiniz: https://hotfile.com/dl/229152034/6913280/uygulama6.rar.html


14 Haziran 2013 Cuma

Geri Sayım Yaparken Rastgele Sayı Üretilip Listbox'a Sayılar Yazdırılıp Toplama -Csharp

Not: Bu uygulama geri sayım için timer kullanılacak. Rastgele sayı üretilip, listbox ve if yapısı kullanılacak.

Soru:
Kullanıcıdan alınan sayıdan itibaren geri sayım süresi başlayacak. Geri sayımın hızını kullanıcı seçebilecek. Geri sayım yapılırken 1 ile 50 arasından rastgele sayı üretilip listboxlara eklenecek. Geri sayım bittikten sonra üretilen rastgele sayılar toplanıp sonucu kullanıcıya gösterilecek bir program yazınız. 

 Windows Formu Hazırlama: Program için windows formun üzerine 1 textbox,buton,label,timer ve listbox eklenecek.

Çözümü:
 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace uygulama3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int sure;
        private void button1_Click(object sender, EventArgs e)
        {
            sure = Convert.ToInt32(textBox1.Text);
            label1.Text = sure.ToString();
            timer1.Interval = System.Convert.ToInt32(comboBox1.Text);
            timer1.Start();
        }


        private void timer1_Tick(object sender, EventArgs e)
        {
           sure=sure-1;
            label1.Text = sure.ToString();
            Random rnd = new Random();
            int eklenecek_sayi=rnd.Next(1, 50);
            listBox1.Items.Add(eklenecek_sayi);
            if (sure == 0)
            {
                timer1.Stop();
                int toplam = 0;
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    toplam += Convert.ToInt32(listBox1.Items[i]);
                }
                MessageBox.Show(toplam.ToString());
            }

        }
    }
}






Kodun Açıklaması: 

            sure = Convert.ToInt32(textBox1.Text);
            label1.Text = sure.ToString();
            timer1.Interval = System.Convert.ToInt32(comboBox1.Text);
            timer1.Start();

 Butona bastığımız zaman ilk önce textbox'ta bulunan sayıyı alıp convert metodu ile integer değişkeni olan sure değişkenine atıyoruz. Sonra bu girilen ve integere çevrilen değişkeni alıp label'a atıyoruz. Çünkü her bir süre azaldığında tekrar label'a yazılacağı için o değerin.Sonra combobox'ta yer alan değerlerden birini seçiyoruz. Bu değer timer'ın hangi aralıklarla tetikleneceğini belirliyor. Sonra timer çalışıyor. Timer, bize tetikleme işlemlerinde işimize yarayacak bir araçtır. Burada geri sayım yaparken birşey tarafından sürenin tetiklenmesi lazım buda timer ile yapıyoruz.

Peki, timer her tetiklendiğinde ne olacak, label'da olan süre 1 azalacak, 1-50 arasında rastgele sayı üretilip listbox'a atılacak. Süre 0 olduğunda ise sayı üretilmesi duracak ve listbox'ta olan sayılar toplacak. Şimdi bu işlemlere yapan kodlara bir göz atalım.

private void timer1_Tick(object sender, EventArgs e)
        {
           sure=sure-1;
            label1.Text = sure.ToString();
            Random rnd = new Random();
            int eklenecek_sayi=rnd.Next(1, 50);
            listBox1.Items.Add(eklenecek_sayi);
            if (sure == 0)
            {
                timer1.Stop();
                int toplam = 0;
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    toplam += Convert.ToInt32(listBox1.Items[i]);
                }
                MessageBox.Show(toplam.ToString());
            }

        }

Timer her tetiklendiğinde süre=sure-1 kodu ile süre bir azalacak. Peki, timer hangi aralıklarda tetiklenecek. Yukarıda bahsetmiştik, combobox'tan seçilen değer timer'ın tetiklenme aralığını oluşturuyor.Timer.interval metodu ile. Sure bir azalır iken sure her seferinde label'a yeni değeri ile yeniden yazılıyor. Sonra random sınıfından rnd isimde bir rastgele nesnesi oluşturuyoruz. Bu rnd nesnesi 1-50 arasında değer uretecek. Bu değer bizim listbox'ımıza eklenecek değerimizdir. Bunu listbox1.Items.Add metodu ile listbox'ımıza ekliyoruz. Peki ne zamana kadar bu sayılar üretilip eklenecek sure==0 olana kadar. Süre 0 olduğunda ilk işimiz timer'ın çalışmasını durdurmak. Çünkü böylece timer tetiklenmeyinde süre azalmıyacak,rastgele sayılar üretilip listbox'a eklenmeyecek. Şimdi sıra listbox'a eklenen rastgele sayıların toplamını bulmaya. Bunun için bir for döngüsü oluşturuyoruz. Peki döngü ne kadar dönecek, listbox'taki itemlerin sayısı(count) kadar dönecek. Her seferinde Listbox'ın içinde bulunan i. item'ın değerini alacak bizim toplam diye değişkenimize atacak. Döngü bittiğinde ise bunu kullanıcıya messagebox metodu ile toplam sonucu bildiriyoruz.

Uygulamayı bu linkten indirebilirsiniz:  https://hotfile.com/dl/227592245/5a6517d/uygulama3.rar.html
 

21 Mayıs 2013 Salı

Csharp - Kelime Karıştır

Csharp windows uygulamasında text box'a girilen kelimeyi rasgele(random) olarak karıştırıp en son halini mesaj kutusu(message box) ile kullanıyıca veren program aşağıdaki linktedir. Burada dizi yapısı, for döngüsü ve random sayı özellikleri kullanılarak yapılmıştır.
********************----------------------------------/*************************
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Etud_KelimeKaristir
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnKaristir_Click(object sender, EventArgs e)
        {
            // textbox'a girilen kelimeyi string bir değerde tutuyoruz
            string girilenKelime = txtKelime.Text;

            // strin ifade de tutulan kelimenin uzunluğu kadar bir array(dizi) oluşturuyoruz
            char[] kelime = new char[girilenKelime.Length];

            // bu kelimenin uzunluğu kadar bir döngü oluşturuyoruz
            for (int i = 0; i < kelime.Length; i++)
            {
                //girilen kelimenin i. karakteri yeni diziye atıyoruz
                kelime[i] = girilenKelime[i];
            }

            // karıştıracağımız değeri bunda tutacağız
            string karisikKelime = "";

            // kelimeleri rastgele karıştırmak için random metodunu kullanacağız
            Random rnd = new Random();

            int sayac = 0; // beginning

            while (sayac < kelime.Length)
            {
                int eleman = rnd.Next(0, kelime.Length);
                // kelimenin uzunluğu kadar random dönecek taki atanan harf boşluk olana kadar
                if (kelime[eleman] != ' ')
                {
                    //sonra sonra harfleri rastgele atıyoruz karışık kelimeye
                    karisikKelime += kelime[eleman];
                    sayac++;
                    kelime[eleman] = ' ';
                }
            }
//sonra bu karışık kelimeyi ekranan mesaj olarak yazdırıyoruz
            MessageBox.Show(karisikKelime);
        }
    }
}


**********************------------------------------******************************
Örnek Çalışmayı buradan indirebilirsiniz:
https://hotfile.com/dl/189173700/5470b41/Etud_KelimeKaristir.rar.html
Google PageRank Checker Powered by  MyPagerank.Net