folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# For Döngüsünde Basit Aritmetik İşlemindeki Hatam Nerede?



C# For Döngüsünde Basit Aritmetik İşlemindeki Hatam Nerede?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GuArDiAn55
    GuArDiAn55's avatar
    Kayıt Tarihi: 26/Haziran/2015
    Erkek
    double b = 10.00000000;
                for(int i = 0; i < 35; i++)
                {
                    b = b - i * Convert.ToDouble(1/7);
                    richTextBox1.Text =richTextBox1.Text+ $"{b.ToString()}, ";
                }

    amacım 10 dan 5'e doğru 35 adet veri yazdırmak. her veri arasındaki fark 5/35 ten 1/7 olması gerek.

    olması gereken çıktı; 10, 9.857, 9.714 falan filan, 5.142, 5

    benim aldığım çıktı; 10, 10, 10, 10 falan filan, 10  hep 10 geliyor ya.

    bunu yapma amacım da yine başka bir şeyi beceremediğimden. matlab simulinkte kare dalga genliğini 10 dan 5'e doğru düşürmem lazım. genliği değişken yapıp matlab scripti falan yazmak gerekiyor birşeyler yaptım ama bu sefer de matrix uyumsuzluk hatası falan veriyor dedim onunla mı uğraşıcam? açarım bi simulinkte stair generatör tüm değerleri kendim girerim. o değerleri de hızlıca c# ile yazdırırım. zaman değerlerini hallettim de genlikte niye hep 10 dönüyor anlamadım. kod doğru bence. :d double int dönüşümünde hata olabilir diye düşünüyorum bulamadım. kafayı yedim gece gece. konu açayım dedim.

    Mallığım nerede? c# ta yeni de değilim yani iki bin satır koddan oluşan yazılım falan yazmışlığım var c#'ta. takır takır çalışıyor.


    HACKEROKAN!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wert
    wert's avatar
    Kayıt Tarihi: 19/Eylül/2005
    Erkek

    b = b - (double)i * Convert.ToDouble(1/7);

    gibi birşey yapman gerekiyor olabilirmi? 

     


    |sadece aptalların başarısı ders notu ile ölçülür|
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GodKlaus
    GodKlaus's avatar
    Kayıt Tarihi: 13/Ocak/2014
    Erkek
    GuArDiAn55 bunu yazdı
    double b = 10.00000000;
                for(int i = 0; i < 35; i++)
                {
                    b = b - i * Convert.ToDouble(1/7);
                    richTextBox1.Text =richTextBox1.Text+ $"{b.ToString()}, ";
                }

    amacım 10 dan 5'e doğru 35 adet veri yazdırmak. her veri arasındaki fark 5/35 ten 1/7 olması gerek.

    olması gereken çıktı; 10, 9.857, 9.714 falan filan, 5.142, 5

    benim aldığım çıktı; 10, 10, 10, 10 falan filan, 10  hep 10 geliyor ya.

    bunu yapma amacım da yine başka bir şeyi beceremediğimden. matlab simulinkte kare dalga genliğini 10 dan 5'e doğru düşürmem lazım. genliği değişken yapıp matlab scripti falan yazmak gerekiyor birşeyler yaptım ama bu sefer de matrix uyumsuzluk hatası falan veriyor dedim onunla mı uğraşıcam? açarım bi simulinkte stair generatör tüm değerleri kendim girerim. o değerleri de hızlıca c# ile yazdırırım. zaman değerlerini hallettim de genlikte niye hep 10 dönüyor anlamadım. kod doğru bence. :d double int dönüşümünde hata olabilir diye düşünüyorum bulamadım. kafayı yedim gece gece. konu açayım dedim.

    Mallığım nerede? c# ta yeni de değilim yani iki bin satır koddan oluşan yazılım falan yazmışlığım var c#'ta. takır takır çalışıyor.

    Hehehhe geçenlerde aldım benzeri hatayı,

    double b = 10.00000000;
                for(int i = 0; i < 35; i++)
                {
                    b = b - i * Convert.ToDouble(1.0 /7.0 );
                    richTextBox1.Text =richTextBox1.Text+ $"{b.ToString()}, ";
                }

     

    1.0 / 7.0 olacak hocam (:

    int/int'ten dolayı 0 geliyor

     

    EDIT: Bir düzeltme yapayım hocam, sizin yazdığınız kod 10 < -- > 5 arasında gitmiyor.

    b = b-i * Convert.toDouble/1.0 / 7.0); işleminde i sayısı ile çarptığınız için sayı gitgide büyüyor ve negatif şeyler çıkıyor.

     

    Bunun yerine başlangıç ve bitiş değerlerini istediğiniz gibi değiştirebileceğiniz bir kod yazdım. Umarım yardımı olur.

    double b = 10.00000000;
                double upperNumber = 10.0;
                double lowerNumber = 5;
                int frequency = 35;
    
                for (int i = 0; i < frequency; i++)
                {               
                    b -= (upperNumber - lowerNumber) / frequency;
                    MessageBox.Show(b.ToString());
                    //richTextBox1.Text = richTextBox1.Text + $"{b.ToString()}, ";
                }

     

    GodKlaus tarafından 10/Kas/20 02:25 tarihinde düzenlenmiştir

    Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GuArDiAn55
    GuArDiAn55's avatar
    Kayıt Tarihi: 26/Haziran/2015
    Erkek
    GodKlaus bunu yazdı

    Hehehhe geçenlerde aldım benzeri hatayı,

    double b = 10.00000000;
                for(int i = 0; i < 35; i++)
                {
                    b = b - i * Convert.ToDouble(1.0 /7.0 );
                    richTextBox1.Text =richTextBox1.Text+ $"{b.ToString()}, ";
                }

     

    1.0 / 7.0 olacak hocam (:

    int/int'ten dolayı 0 geliyor

     

    EDIT: Bir düzeltme yapayım hocam, sizin yazdığınız kod 10 < -- > 5 arasında gitmiyor.

    b = b-i * Convert.toDouble/1.0 / 7.0); işleminde i sayısı ile çarptığınız için sayı gitgide büyüyor ve negatif şeyler çıkıyor.

     

    Bunun yerine başlangıç ve bitiş değerlerini istediğiniz gibi değiştirebileceğiniz bir kod yazdım. Umarım yardımı olur.

    double b = 10.00000000;
                double upperNumber = 10.0;
                double lowerNumber = 5;
                int frequency = 35;
    
                for (int i = 0; i < frequency; i++)
                {               
                    b -= (upperNumber - lowerNumber) / frequency;
                    MessageBox.Show(b.ToString());
                    //richTextBox1.Text = richTextBox1.Text + $"{b.ToString()}, ";
                }

     

    Kralsın hocam. İyi delirtti beni. :P C# böyleyse Javascript'i düşünemiyorum valla. Allah kolaylık versin Javascript kodlayanlara.

    Benim kodda negatife gidiyor çünkü sürekli b'yi değiştirmişim. Döngüde i ile çarpmasam sorun çözülür dediğiniz gibi. Bi hata daha. Yazılımda kesinlikle ara vermemek lazım ya. Kendimden utandım hataya bak.

    edit: imlâ

     

    GuArDiAn55 tarafından 10/Kas/20 02:59 tarihinde düzenlenmiştir

    HACKEROKAN!
Toplam Hit: 1507 Toplam Mesaj: 4
c# for döngüsü artimetik işlem