Dizi (Array) Sınıfının Metotları C# Ders 44
Daha fazla bilgi için : www.gorselprogramlama.com
Array. Sort: Belirtilen dizinin küçükten büyüğe sıralanmasını sağlar.
Kullanım 1: Array.Sort(dizi adı)
Örnek : Array.Sort(sayilar);
Kullanım 2: Array.Sort(dizi adı,Kaçıncı elemandan itibaren,kaç elaman)
Not: Dizinin ilk elemanın 0.eleman olduğunu unutmayın.
Örnek : Array.Sort(sayilar,2,3); // sayilar dizisini 2. elemandan itibaren 3 elamanını küçükten büyüğe sıralar.
Örnek: Rastgele üretilen 6 sayıyı önce üretelim sonra küçükten büyüğe sıralayalım.

[code language=”csharp”]
namespace dizi_tanımlama
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int[] sayilar = new int[6];
private void uret_Click(object sender, EventArgs e)
{
Random r = new Random();
for (int i = 0; i < 6; i++)
{
sayilar[i] = r.Next(1, 49);
}
}//Daha fazla bilgi için : www.gorselprogramlama.com
private void listeyeEkle_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
foreach (int i in sayilar)
{
listBox1.Items.Add(i);
}
}
private void sirala_Click(object sender, EventArgs e)
{
Array.Sort(sayilar);
}
}
}
[/code]

Üret– A–>Z — Listeye Ekle
Sonuç:

Daha fazla bilgi için : www.gorselprogramlama.com
Array.Reverse : Belirtilen dizinin sıralama olarak ters çevrilmesini sağlar.
Kullanım 1: Array.Reverse(dizi adı)
Örnek : Array.Reverse(sayilar);
Kullanım 2: Array.Reverse(dizi adı,Kaçıncı elemandan itibaren,kaç elaman)
Not: Dizinin ilk elemanın 0.eleman olduğunu unutmayın.
Örnek : Array.Reverse(sayilar,1,2); // sayilar dizisini 1. elemandan itibaren 2 elamanını ters çevirir.
Örnek:
[code language=”csharp”]
namespace dizi_tanımlama
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int[] sayilar = new int[6];
private void uret_Click(object sender, EventArgs e)
{
Random r = new Random();
for (int i = 0; i < 6; i++)
{
sayilar[i] = r.Next(1, 49);
}
}
private void listeyeEkle_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
foreach (int i in sayilar)
{
listBox1.Items.Add(i);
}
}
private void sirala_Click(object sender, EventArgs e)
{
Array.Sort(sayilar);
}//Daha fazla bilgi için : www.gorselprogramlama.com
private void tersCevir_Click(object sender, EventArgs e)
{
Array.Reverse(sayilar);
}
}
}
[/code]


Üret– A–>Z — Listeye Ekle– Z–>A — Listeye Ekle
Sonuç:

Daha fazla bilgi için : www.gorselprogramlama.com
Array.Clear : Belirtilen dizinin,belirtilen elemandan itibaren,belirtilen eleman kadar temizlenmesini sağlar.
Kullanım : Array.Clear(dizi adı,Kaçıncı elemandan itibaren,kaç elaman)
Not: Dizinin ilk elemanın 0.eleman olduğunu unutmayın.
Örnek : Array.Clear(sayilar,2,2); // sayilar dizisini 2. elemandan itibaren 2 elamanını temizler.
Örnek:
[code language=”csharp”]
namespace dizi_tanımlama
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int[] sayilar = new int[6];
private void uret_Click(object sender, EventArgs e)
{
Random r = new Random();
for (int i = 0; i < 6; i++)
{
sayilar[i] = r.Next(1, 49);
}
}
private void listeyeEkle_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
foreach (int i in sayilar)
{
listBox1.Items.Add(i);
}
}
private void sirala_Click(object sender, EventArgs e)
{
Array.Sort(sayilar);
}
private void tersCevir_Click(object sender, EventArgs e)
{//Daha fazla bilgi için : www.gorselprogramlama.com
Array.Reverse(sayilar);
}
private void temizle_Click(object sender, EventArgs e)
{
Array.Clear(sayilar,2,1);
}
}
}
[/code]

Üret– A–>Z — Listeye Ekle–Temizle–Listeye Ekle
Sonuç:

Örnek: Dizinin tüm elemanlarını temizleyelim.
[code language=”csharp”]
namespace dizi_tanımlama
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int[] sayilar = new int[6];
private void uret_Click(object sender, EventArgs e)
{
Random r = new Random();
for (int i = 0; i < 6; i++)
{
sayilar[i] = r.Next(1, 49);
}
}
private void listeyeEkle_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
foreach (int i in sayilar)
{
listBox1.Items.Add(i);
}
}
private void sirala_Click(object sender, EventArgs e)
{
Array.Sort(sayilar);
}//Daha fazla bilgi için : www.gorselprogramlama.com
private void tersCevir_Click(object sender, EventArgs e)
{
Array.Reverse(sayilar);
}
private void temizle_Click(object sender, EventArgs e)
{
Array.Clear(sayilar,0,sayilar.Length);
}
}
}
[/code]

Üret– A–>Z — Listeye Ekle–Temizle–Listeye Ekle
Sonuç:

Daha fazla bilgi için : www.gorselprogramlama.com
Array. IndexOf: Belirtilen değerin dizi içinde olup olmadığını öğrenmek için kullanılır.Belirtilen değer var ise geriye sıra numarasını döndürür,yok ise -1 değerini döndürür.
Kullanım 1: Array.IndexOf(dizi adı,değer)
Örnek : Array.IndexOf(sayilar,3); //sayilar dizisi içinde 3 sayısı var ise sıra numarasını , yok ise -1 değerini döndürür.
Kullanım 2: Array.IndexOf(dizi adı,değer,kaçıncı elemandan itibaren)
Not: Dizinin ilk elemanın 0.eleman olduğunu untmayın.
Örnek : Array.IndexOf(sayilar,2,3);
Örnek : Yukarıdaki örneklere bakıldığında 6 sayı üretillirken aynı sayılarında üretildiğini göreceksiniz.Ama sayısal loto programı yaptığımızı düşünelim.Sayısal lotoda bir sayının iki defa üretilmesi mümkün değildir.Bir sayının iki defa üretilmesini engellemek için IndexOf’u kullanacağız.(Eğer dizi içinde üretilen sayı yok ise yani döndürülen sayı -1 ise üretilen sayıyı diziye ekle ve sayacı bir artır gibi.)
[code lang=”csharp”]
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Random r = new Random();
int rastgele;
int sayac=0; //sayac sıfırlandı
int[] sayilar = new int[6]; //sayısal lotoda 6 sayı üretildiği için 6 elemanlı dizi oluşturuldu.
while (sayac < 6)
{
rastgele = r.Next(1, 50); //1 ile 49 arasında rastgele sayı üretiliyor
//Daha fazla bilgi için : www.gorselprogramlama.com
if (Array.IndexOf(sayilar, rastgele) == -1) //dizinin içinde aynı sayı yoksa
{
sayilar[sayac] = rastgele; //üretilen rastgele sayiyi dizinin sayac kaç ise o elemanına ata
sayac++; //sayacı bir artır
}
}
label1.Text = sayilar[0].ToString(); //label1 e sayilar dizisinin 1.elemanını yaz
label2.Text = sayilar[1].ToString(); //label2 e sayilar dizisinin 2.elemanını yaz
label3.Text = sayilar[2].ToString(); //label3 e sayilar dizisinin 3.elemanını yaz
label4.Text = sayilar[3].ToString(); //label4 e sayilar dizisinin 4.elemanını yaz
label5.Text = sayilar[4].ToString(); //label5 e sayilar dizisinin 5.elemanını yaz
label6.Text = sayilar[5].ToString(); //label6 e sayilar dizisinin 6.elemanını yaz
}
}
}
[/code]

Daha fazla bilgi için : www.gorselprogramlama.com
Öncellike s.a .Abi Benim ödev Adam Asmaca.Şimdi Abi Form1 den bir kelime gircen form2 bulmaya çalışçam.Abi Şimdi ben Kelimeyi Yaptımda Harf Karşılaştırmasını yapamadım. Abi Anlamadısanız Örnek olarak: ben Form1 den proglamama Girdim. form2 de Kelime karşılaştırması proglamama Yazdığında tebrikler kazandınız diyor.benim istediğim harf gircek
bu har varsa listboxa veya textbox yazacak örnek a girdim görselproglamlama 3 a olduğundan yerlerini bulup yazcak; ———-a–a-a bunun gibi bişe abi ben bunu yapamadım.Hocamız Substring yapın Dedi Uğraştım Olmadı biraz yardımcı olurmusunuz.
Aşağıdaki linklere bak.
link 1: http://www.gorselprogramlama.com/iki-string%e2%80%99i-yaziyi-karsilastirma-c-net-ders-36
link 2 : http://www.gorselprogramlama.com/string%e2%80%99in-yazinin-herhangi-bir-parcasini-alma-c-net-ders-32
Abi benim sizden bir ricam olcaktı.bir tane örnek yapabilirmisiniz.sadece 2 tane textbox koyun. birine admin girin öbüründe ise harleri girin varsa listboxla admin olarak diye yazan programı yapabilirmisin. Yarına yetiştirmen lazım .4 tane ödevim vardı 3 bitti sadece bu kaldı. yaparsanız çok teşekktür ederim.
soruyu açık yazarsan yardımcı oluruz.Ne dediğimi tam anlayamadım.
abi benim istediğim form1 textboxdan bir kelime gircen;sonra forum2 textboxda kelime
bulmaya çalışcan.örnek olarak; abi textbox admin girdik;form2 açıldı burdaki textbox1
harf gircen bu harf form1 textbox da varsa listbox a yazcak.abi kısaca benim istediğim
hark karşılaştırma onu istiyorun ben
girilen harf form1 deki textbox1’e girilen stringin içinde var ise form2’deki listbox’a ne ekleyecek.
soruyu anladığım kadarıyla bir örnek yaptım.
link : http://www.gorselprogramlama.com/kelime-icinde-harf-bulma-c-net
üretilen rassal sayının tekrarlamasız olması için ne yapmamız gerekiyor?
emre :
indexof metodu kullanmalısın. . Bunun için sayısal loto örneklerimizi inceleyin.Aşağıdaki linkte dediğiniz olay var.
http://www.gorselprogramlama.com/sayisal-loto-csharp/
üretilen rastgele benzersiz 20 sayının sıralı olarak listboxa eklenmesini istiyorum. Ancak aşağıdaki kod ile bunu yapmaya çalıştıgımda listboxda ilk bir kaç item 0 oluyor. Kodd da nasıl bir hata var?
private void button1_Click(object sender, EventArgs e)
{
Random r = new Random();
for (int i = 0; i < 20; i++)
{
int rastgele = r.Next(1, 49);
if (Array.IndexOf(sayi, rastgele) == -1)
{
sayi[i] = rastgele;
}
}
listBox1.Items.Clear();
Array.Sort(sayi);
foreach (int a in sayi)
listBox1.Items.Add(a);
}
@emre
for ile kullanımda else komutu kullanmadığımdan yapamadığımı anladım.
Üretilen sıralı rastgele sayıların arasındaki farkın istenilen bir değerden büyük olabilmesi (örneğin 10dan) için nasıl bir yol izlememiz gerekiyor acaba? Aşağıdaki yöntem de nasıl bir hata var?
while (sayac < 20)
{
rastgele1 = r1.Next(800, 1700);
sayi[sayac] = rastgele1;
Array.Sort(sayi);
for (int i = 0; i 10)
sayac++;
}
}
emre :
For yerine while kullanmanız gerekir.
emre :
if kullanarak çözüme ulaşabilirsin.
@admin
örnekle açıklamanız mümkün mü?
2 diziyi nasıl birleştirebiliriz ve bunları birininci dizinin 1. elamının karsısına 2. dizinin 1. elemanı gelecek şekilde listboxa nasıl atarız?
Forumlarda Zip diye bir komut var ancak derslerde bunu göremedim.
Teşekkürler.