none
C# Matris e Random Sayılar Tanımlamak RRS feed

  • Soru

  • Merhaba 

     
     private void button1_Click(object sender, EventArgs e)
            {
                int[,] matris;
                matris = new int[4, 3];
                
                Random rdm = new Random();
    
                matris[0, 0] = Convert.ToInt32(textBox1.Text);
                matris[0, 1] = Convert.ToInt32(textBox2.Text);
                matris[0, 2] = Convert.ToInt32(textBox3.Text);
    
                matris[1, 0] = Convert.ToInt32(textBox4.Text);
                matris[1, 1] = Convert.ToInt32(textBox5.Text);
                matris[1, 2] = Convert.ToInt32(textBox6.Text);
    
                matris[2, 0] = Convert.ToInt32(textBox7.Text);
                matris[2, 1] = Convert.ToInt32(textBox8.Text);
                matris[2, 2] = Convert.ToInt32(textBox9.Text);
    
                matris[3, 0] = Convert.ToInt32(textBox10.Text);
                matris[3, 1] = Convert.ToInt32(textBox11.Text);
                matris[3, 2] = Convert.ToInt32(textBox12.Text);
    
                matris[4, 0] = Convert.ToInt32(textBox13.Text);
                matris[4, 1] = Convert.ToInt32(textBox14.Text);
                matris[4, 2] = Convert.ToInt32(textBox15.Text);
    
    
    
    
    
    
                matris[0, 0] = rdm.Next(-100, 100);
                matris[0, 1] = rdm.Next(-100, 100);
                matris[0, 2] = rdm.Next(-100, 100);
    
                matris[1, 0] = rdm.Next(-100, 100);
                matris[1, 1] = rdm.Next(-100, 100);
                matris[1, 2] = rdm.Next(-100, 100);
    
                matris[2, 0] = rdm.Next(-100, 100);
                matris[2, 1] = rdm.Next(-100, 100);
                matris[2, 2] = rdm.Next(-100, 100);
    
                matris[3, 0] = rdm.Next(-100, 100);
                matris[3, 1] = rdm.Next(-100, 100);
                matris[3, 2] = rdm.Next(-100, 100);
    
                matris[4, 0] = rdm.Next(-100, 100);
                matris[4, 1] = rdm.Next(-100, 100);
                matris[4, 2] = rdm.Next(-100, 100);
    

    Bu şekilde textboxlara matris tanımlamaya çalışıyorum. Butona bastığımda her textbox a random sayı gelicek ama , matris olması şartıyla

    Kodu  bu şekilde çalıştırmaya çalışıyorum ancak şu bölümde "Giriş dizesi doğru biçimde değildi " hatası veriyor.

    matris[0, 0] = Convert.ToInt32(textBox1.Text);

    21 Mayıs 2019 Salı 08:50

Tüm Yanıtlar

  • matris[0, 0] =(string.IsNullOrEmpty(textBox1.Text) ? 0 : Convert.ToInt32(textBox1.Text);

    Diğer alanları da bu şekilde düzeltin, boş gelen bir text integer tipine dönüştürülemez , bu yüzden alan boş ise 0 atayıp dolu ise mevcut değerin gelmesi sağlanmalı.

    Ama bu kodda şöyle bir mantıksızlık var , siz matrisi önce textbox üzerinden doldurdunuz sonra random ataması yaptınız . Her texboxa matris olarak random gelmesini istiyorsanız önce random değerleri textboxtlara atın ve sonra textbox değerlerini matrise girin ya da önce randomları matrislere atayın sonra değerleri matristen textboxlara atayın . 

     

    Altan Özdemir

    21 Mayıs 2019 Salı 09:29
  • Matrise tek tek atamak bir programcının yapacağı iş değil :) şöyle biraz daha kolay olurdu:

    var rnd = new Random();
    var m = new int[6, 4];
    Enumerable.Range(0, m.Length)
    		.ToList()
    		.ForEach(x=> m[x / m.GetLength(1), x % m.GetLength(1)] = rnd.Next(-100,101));


    www.cihanyakar.com

    21 Mayıs 2019 Salı 10:15
  • Yorumunuz için teşekkürler : )
    21 Mayıs 2019 Salı 10:34
  • Yorumunuz için teşekkürler :)
    21 Mayıs 2019 Salı 10:34
  • Peki ya benden 100 e 100 lük iki matrise random değerler atayıp  toplamam istenseydi ne yapmam gerekiyordu ?

    Bunu yapmam gereken komutlar 

    Random 

    ve convert türleri ve textboxlar birde intager lar tabiki


    • Düzenleyen zuts 21 Mayıs 2019 Salı 10:37
    21 Mayıs 2019 Salı 10:36
  • Peki ya benden 100 e 100 lük iki matrise random değerler atayıp  toplamam istenseydi ne yapmam gerekiyordu ?

    Bunu yapmam gereken komutlar 

    Random 

    ve convert türleri ve textboxlar birde intager lar tabiki

    21 Mayıs 2019 Salı 10:37
  • :) 

    var m = new int[6, 4];

    yerine sadece:

    var m = new int[100, 100];

    yapman gerekiyor. Aynen Cihan'in dediği gibi, hiçbir programcı, tekrarlayan isleri öyle oturup tek tek yazmaz.

    Bir de bu Convert çok gereksiz, beraberinde hata kontrolu yapman lazım. Onun yerine, textbox'a girilen degerleri int'e cevireceksen, int.TryParse kullan. 

    Gercek hayatta, kullanılan matrisler random atamayla oluşturulmaz, icerikleri bir yerlerden gelir ve saklanır, gerektiginde de hesaplanır. Genelde de saklandıkları yerler veritabanlaridir.



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.

    21 Mayıs 2019 Salı 12:55
    Yanıtlayıcı