Şimdi Ara

C# DataGridView Girilen toplam değer kadar 2 sayı arasında rastgele sayı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
10
Cevap
0
Favori
680
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar öncelikler merhaba.
    Elimde 3 Textboxum , 1 timerpickerim var Ve birde üret buttonum.

    İLK DEĞER
    İKİNCİ DEĞER
    TOPLAM DEĞER

    C# DataGridView Girilen toplam değer kadar 2 sayı arasında rastgele sayı


    Bu şekilde değerler giriyorum ve datagridviewe ilk değer ile ikinci değer arasında rastgele sayı atıyorum.
    ve bunu toplatıp bir textboxta yazdırıyorum. Ama ne yaparsam yapayım toplam değeri aşıyor ben toplam değere 5000 yazdım
    isem tam 5000 kadar rastgele sayı üretmesini istiyorum ne eksik ne fazla.

    C# DataGridView Girilen toplam değer kadar 2 sayı arasında rastgele sayı
    C# DataGridView Girilen toplam değer kadar 2 sayı arasında rastgele sayı


    Scriptimi bırakıyorum daha açıklayıcı olur belki.
    -----------------------------------------------------------------------------------------------------------
    private void scd()
    {
    int firstprice = Convert.ToInt32(firstpriceTxt.Text);
    int secondprice = Convert.ToInt32(secondpriceTxt.Text);


    Random random = new Random();
    int rndprice = 1;
    rndprice = random.Next(firstprice, secondprice);

    //TOPLAM DEĞER İÇİN 0 DEĞERİ
    int sum = 0;
    //TOPLAM DEĞERİ EŞİTLEMEK İÇİN DÖNGÜ
    for (int i = 0; i < dataGridView1.Rows.Count; ++i)
    {
    sum += Convert.ToInt32(dataGridView1.Rows.Cells[5].Value);
    }

    //TOPLAM DEĞER İNT DEĞERİ
    int total = Convert.ToInt32(totalTxt.Text);

    if (sum >= total)
    {
    picker.Stop();

    //TOPLAM DEĞER FOR DÖNGÜSÜ TEXTBOXA YAZDIRMAK İÇİN
    for (int i = 0; i < dataGridView1.Rows.Count; ++i)
    {
    toplam += Convert.ToInt32(dataGridView1.Rows.Cells[5].Value);
    }
    textBox1.Text = toplam.ToString("C");
    else
    {
    this.dataGridView1.Rows.Add(barkno, barkTxt.Text, rastgele.ToString("dd-MM-yyyy"), saat, oranTxt.Text, artı, eksi, sonuc.ToString("N3"), rndprice);
    }

    }

    //ÜRET BUTTONU
    private void button1_Click(object sender, EventArgs e)
    {
    picker.Start();
    }

    //TİMER PİCKER
    private void picker_Tick(object sender, EventArgs e)
    {
    //ÜRETME İŞLEMİNİ ÇALIŞTIRMA

    scd();
    }
    -----------------------------------------------------------------------------------------------------------



    < Bu mesaj bu kişi tarafından değiştirildi gc1dcc2 -- 5 Ağustos 2020; 13:44:48 >







  • Şunu yapabilirsin; şuanki algoritmanı kullanırsın. Atıyorum rastgele yarattığın sayıların toplamı 5123 oldu. Sen 5000 istiyordun. Aradaki farkı bulursun bu durum da 123 kadar fark var. Yarattığın sayılardan totalde 123'ü tamamlayacak kadar rastgele sayı çıkartırsın. Böylece ilk yarattığın sayılar, sonrasında tam 5000'e eşit olacak sayılara dönüşmüş olur.
  • Onun yerine bu toplam değer ile 2 textboxa girilen değerin arasında toplam değer kadar çıkana kadar atama yapsa.

    Birde bu şekilde script yazamıyorum sizden ricam verdiğim scriptleri düzelterek gönderme şansınız varmı :)
  • O şekilde yaparsan dorğu sayıları rastgele atayarak bulman teorik olarak sonsuza kadar bile sürebilir. Bu işin en kafaya yatar yolu ilk söylediğim. Üniversitede öğrenciyken vize sorusuydu.
  • Yani kısacası toplam değer neyse üretim yaparken fazla olduğu zaman çıkarma işlemi yapıp üretim yapıcak doğrumuyum :)
    Şöyle bir deneme bırakayım bunu eksi değilde fazlasını çıkar nasıl yapabiliriz.
    Bu script açıklayıcı olmadı ise yukarda tamamı var :)

    int total = Convert.ToInt32(totalTxt.Text);
    int total2 = sum;

    if (sum >= total - total2)
    {
    picker.Stop();

    //TOPLAM DEĞER İNT
    int toplam = 0;

    //TOPLAM DEĞER FOR DÖNGÜSÜ TEXTBOXA YAZDIRMAK İÇİN
    for (int i = 0; i < dataGridView1.Rows.Count; ++i)
    {
    toplam += Convert.ToInt32(dataGridView1.Rows.Cells[5].Value);
    }
    textBox1.Text = toplam.ToString("C");
    }



    < Bu mesaj bu kişi tarafından değiştirildi gc1dcc2 -- 5 Ağustos 2020; 14:29:1 >




  • birsürü yere aynı konuyu açmışsın ilk yazdığında bi örnek vermiştim
    örnekhttps://www.onlinegdb.com/S13_IHuZw

    kuruş farkı yuvarlamadan ötürüdür.
  • Gökşen PASLI G kullanıcısına yanıt
    Link için çok teşekkürler diğer konular farklı sorularım vardı buna çözüm bulmak için ayrı konu açtım
    fakat bunu kendi scriptime uyarlayamıyorum :)
  • Konu güncel :)
  • CEVABI BULDUM ARKADAŞLAR TEŞEKKÜRLER

    if (sum >= total)
    {
    picker.Stop();
    // TOPALAM TAMAMLAMA----------------------------------------------------
    int selectedIndex = dataGridView1.CurrentCell.RowIndex;

    if (selectedIndex > -1)
    {
    dataGridView1.Rows.RemoveAt(selectedIndex);
    dataGridView1.Refresh();
    }
    // GÜNCELLEME ----------------------------------------
    int toplam = 0;
    //TOPLAM DEĞER FOR DÖNGÜSÜ TEXTBOXA YAZDIRMAK İÇİN
    for (int i = 0; i < dataGridView1.Rows.Count; ++i)
    {
    toplam += Convert.ToInt32(dataGridView1.Rows.Cells[5].Value);
    }
    textBox1.Text = toplam.ToString();
    // GÜNCELLEME ----------------------------------------

    // EKSİ DEĞERİ BULDU --------------------------------------
    int istenendeger = Convert.ToInt32(totalTxt.Text);
    int olusturulandeger = Convert.ToInt32(textBox1.Text);
    int sonucdeger = istenendeger - olusturulandeger;
    MessageBox.Show(sonucdeger.ToString());
    // EKSİ DEĞERİ BULDU --------------------------------------

    // KDV BULUNDU ---------------------
    double kdvharicfiyat = sonucdeger * 18/118;
    MessageBox.Show(kdvharicfiyat.ToString());
    // KDV BULUNDU ---------------------

    //KDV DAHİL FİYAT BULUNDU ----------------------
    double toplamaislemi = sonucdeger + kdvharicfiyat;
    //KDV DAHİL FİYAT BULUNDU ----------------------

    //LİTRE BULMA ----------------------------------
    double liter2 = Convert.ToDouble(literTxt.Text);
    double litrebulma = sonucdeger / liter2 ;
    //LİTRE BULMA ----------------------------------


    this.dataGridView1.Rows.Add(fisno, plakaTxt.Text, rastgele2.ToString("dd-MM-yyyy"), saat, literTxt.Text, sonucdeger, kdvharicfiyat.ToString("N2"), litrebulma.ToString("N3") + A.ToString(), toplamaislemi);
    int toplam2 = 0;
    for (int i = 0; i < dataGridView1.Rows.Count; ++i)
    {
    toplam2 += Convert.ToInt32(dataGridView1.Rows.Cells[5].Value);
    }
    textBox1.Text = toplam2.ToString("C");
    // TOPALAM TAMAMLAMA----------------------------------------------------

    }




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.