array csharp etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
array csharp 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

Onluk Sayı Sistemindeki Bir Sayıyı Binary(ikilik) Sayı Sistemine Çeviren Program-Csharp



Not : Bu örneği çözerken if yapısı,do while döngüsü ve dizi yapısını kullanacağız.
Soru: Kullanıcıdan aldığınız 0 – 15 arasında sayı alınız. Aldığınız bu sayıları binary sayı sistemine çevirdikten sonra tasarımınızda yer alan label’a yazdırınız.
Örnek   veri:6
Örnek Çıktı: 0110 

Binary sistemine çevirmek için izleyeceğiniz yol öncelikle sayıyı 2 ye bölün. Kalan 0, bölüm 3’tür. Sonra 3(bölümü) tekrar ikiye bölün kalan 1 bölüm 1’dir. Bölüm ikiden küçük olana kadar sürekli 2’ye bölünür. En son elde edilen bölüm, binary sisteminin ilk basamağı olacak ve diğer kalanlar sırayla yazılarak elde edilen bir sayı sistemidir.

Çö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;
using System.Collections;

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

        private void button1_Click(object sender, EventArgs e)
        {
             int[] kalan = new int[4];
            int k=0;
            int bolen;
            int sayi = Convert.ToInt32(textBox1.Text);
            if (sayi > 0 && sayi < 15)
            {

                do
                {
                    bolen = sayi / 2;
                  

                        kalan[k] = sayi % 2;


                        sayi = bolen;
                        k++;                            
                      
                   
                }
                while (sayi > 2);
                kalan[k] = bolen;


                Array.Reverse(kalan);
                for (int i = 0; i <= 3; i++)
                {
                    label1.Text += Convert.ToString(kalan[i]);
                }

                              
            }

            else
                MessageBox.Show("o-15 arsında bir sayı giriniz");
          
       
        }
Kod Açıklaması: 
           int[] kalan = new int[4];
            int k=0;
            int bolen;
            int sayi = Convert.ToInt32(textBox1.Text);
Öncelikle onluk sistemdeki bir sayıyı 2'lik sayı sistemine çevirirken sayıları tutmak için bir dizi oluşturuyoruz. 4 elemanlı bir dizi olmasının sebebi soruda verildiği gibi kullanıcıdan sadece 0-15 arasında bir sayı alacağız eğer kullanıcı 14 rakamını girerse bunun 2'lik sayı sistemindeki karşılığı 1110 o yüzden kullanıcı sanki en büyük sayı girecekmiş gibi onun karşılığı olan 4 elemanlı bir dizi oluşturduk. Sonra dizinin 0.,1.,2., ve 3. elemalarını tutarken biz k değişkenini kullanacağız. Sonra sayıyı her seferinde 2'ye böleceğiz. Ve bölen değişkeni yani matematikte bölüm'e karşılık geliyor. Bölüm 2 den büyük olduğu müddetçe biz 2'ye bölmeye devam edeceğiz. Programa başlamadan önce değişkenlerimizi tanımladık. İlk işimiz kullanıcıdan bir sayı almak. Biz bunu textbox üzerinden aldığımız için textbox'larda bildiğimiz gibi string değer tutar. Öncelikle textbox'taki değerimizi convert.ToInt32 metodu ile integer değişkenine atıyoruz.

  if (sayi > 0 && sayi < 15)
ilk olarak textbox'a gidğimiz değeri kontrol ediyoruz. Bu sayı 0'dan büyük ve 15'den küçük mü diye. Çünkü soruda bizden o aralıktaki sayılar istendi. Eğer doğru ise program çalışacak yanlış ise;

 else
                MessageBox.Show("0-15 arsında bir sayı giriniz");
 else ye kod düşecek ve mesaj kutusu ile bize uyarı mesajı verecek.

Kişi 0-15 arasında bir değer girmiş ise;

do
                {
                    bolen = sayi / 2;
                  

                        kalan[k] = sayi % 2;


                        sayi = bolen;
                        k++;                            
                      
                   
                }
                while (sayi > 2);
                kalan[k] = bolen;

Önce textbox'taki değer 2'ye bölünüyor.Bölümü buluyoruz. Sonra girilen değeri tekrar 2'ye bölüyoruz fakat bu sefer %2 demek sayıyı 2'ye bölüp kalanını bulacağız. Kalan'ı ise bizim kalan diye bir dizimiz vardı. Onun k. elemanı olarak kalan değerimizi diziye attık. Şimdi biz sayıyı / 2'ye böldük artık yeni sayımız bölen oldu. Bunu while'in içinde sayımız 2 den büyükmü diye kontrol ettirmeden bölen değişkenindeki sayimizi sayi değişkenine atıp son değerimiz onun olmasını sağlıyoruz. Tabii yeniden bu sayıyı 2'ye bölüp kalanı, kalan değişkenine atamadan önce dizinin k. elemanını bir artırıyoruz. Eğer sayımız 2'den büyük olduğu müddetçe bu döngü devam eder.Yoksa demekki bölüm 'den küçükkü artık bu sayı 2'ye bölünemiyor demekki. Ozaman yapmamız gereken bölümü(bizdeki değişken ismi bölen)dizinin k. elemanı olarak diziye eklemek.

Şimdi diziye attığımız bu elemanları yazdırmaya geldi label'a;

Array.Reverse(kalan);
                for (int i = 0; i <= 3; i++)
                {
                    label1.Text += Convert.ToString(kalan[i]);
                }
Array sınıfının reverse özelliği ile dizinin elemanlarının sırasını ters çeviriyoruz. Yani ilk başta dizieye eklenen eleman en sona atılır. Bizim dizimizde en fazla 4 eleman olacağı için bir for döngüsü oluşturuyoruz 4 defa dönecek. Sırayla dizinin i. elemanını bu sefer label'a yazdırıyoruz. Böyle onluk sayı sistemindeki bir sayıyı ikilik sayı sistemine çevirip label'a yazdırmış olduk.

Not: Uygulamayı Linkten İndirebilirsiniz: 
https://hotfile.com/dl/227524493/15caf5c/WindowsFormsApplication2.rar.html
Google PageRank Checker Powered by  MyPagerank.Net