Şimdi Ara

c# ta Not hesaplamada sorunum

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
12
Cevap
0
Favori
1.933
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar . Ben c# ta not hesaplaması yapmak istiyorum . vize final ve bütünleme. Vize ve final ortalaması 60 tan küçükse bir mesaj çıksın ve ortalama düşük bütüleme notunu girin . Bu defa da bütünleme notunu girecem ve ortalamayı öyle hesaplasın . Ben birazını yaptım fakat vize ve final ortalaması 60 tan büyük olduğunda da message box taki mesaj çıkıyor yine.
    Kod:
    int x, y, z, ort;
    x = Convert.ToInt32(textBox1.Text);
    y = Convert.ToInt32(textBox2.Text);
    z = Convert.ToInt32(textBox3.Text);
    ort = Convert.ToInt32(textBox4.Text);
    textBox4.Text = (x * 40 / 100 + y * 60 / 100).ToString();

    if (textBox4 < 60);
    MessageBox.Show("Lütfen Bütünleme Notunu Girin" + ort.ToString());

    textBox4.Text = (x * 40 / 100 + z * 60 / 100).ToString();







  • if(textBox4.Text < 60) diyerekten yapman gerekir sanırım
  • tamam öyle yapıyorum zaten ; (noktalı virgülü yanlışlıkla yazmışım buraya) yine yok aynı hata
  • http://mehmetbalik.net/consolda-ogrenci-notu-hesaplamakelse-if/

    belki yardımı dokunur

    (işlem önceliklerinden olabilir mi?)



    < Bu mesaj bu kişi tarafından değiştirildi mehmetbalikNet -- 20 Kasım 2011; 0:56:07 >
  • yok hocam maalesef bi yararı olmadı
  • olay ; değil ama olay textbox4 < 60 ın textbox4.Text < 60 olması gerektiği. Mantıken olayın o olması gerekiyor.
  • string değerle integer değeri karşılaştırıyosun nasıl bir mantık bu ? ortalamayı integer bi değişkende tut öyle 60 la karşılaştır
  • hocam hesaplama yapıyorum şimdi örneğin vize ve final 60 tan düşükse message box uyarı veriyor. Ortalama 60tan büyükse de ilk hesapla tuşuna bastığım zaman yine message box çııyor. Ama bir sonraki yazdığım 60 üstü büyük değerlerde message box çıkmıyor . İşte benim sorunum girdiğim ilk değerlerde 60 üzerinde lan ortalama için message box u vermemesi gerekir.(sadece bir defa veriyor diğer 60 üzeri değerlerde message box çıkmıyor) Bilmem anlatabildim mi
  • Bu gibi durumlarda breakpoint koyarak nerde yanlış yapıyor, nerede hata alıyorsun textbox4 ün değerini kaç görüypr diye bakıp hatanı anlamalısın.

    değişkenlerini int değilde double al. Küsürlü sayılarla işlem yapacaksın çünkü.

    (x * 40 / 100 + y * 60 / 100) böyle bi işlem mi yapılır. Baştan yanlış ilerliyorsun. Bi parantez falan kullan. işlemleri ayır. İlerde daha karışık işlemlerin olacak nasıl alışırsan öyle gidersin. x*40/100 yapacağına x*0,4, y*60/100 yapacağına y*0,6 yap.


    double sonuc=(x*0,4)+(y*0,6); olarak yap işlemi. Böyle yaparak sonucu bulmuş oluyorsun.

    Sonra kıyaslama yapacağın zaman textbox4. textini değil if(sonuc<60) olarak kıyasla.


    ondalıklı sayılarda işlem yaparken int kullanırsan işlem sonucu yanlış çıkabilir. 1 puan eksiğini falan yazabilir.

    Program olmadığı için açıp deneyemiyorum ama mantık böyle.


    Ayrıca yazdığın kodun mantığını anlayamadım. z nerede doluyor, ort değişkeni zaten ortalamayı buluyor onun değeri için niye textbox 4 ü alıyorsun. ort değişkenini nerde kullanıyorsun?

    Algoritmasını söyleyeyim sana sen yap.

    Önce vize ve finalin ortalamasını bulacaksın. yukarda yazdığım gibi onu bi değişkene atacaksın. ortalama diyelim.

    if(ortalama<60)

    {
    Ortalama 60dan küçükse ne yapmasını istiyorsan buraya yazacaksın.
    MessageBox.Show falan filan.
    }

    else

    {
    60dan büyükse ne yapmak istediğini buraya yazacaksın.
    MessageBox.Show("geçtin tamam");

    }




  • Arkadaşlar bu şekilde yaptım çalıştı . Herhangi bir problem çıkarmıyor şu an .
    vize ve final ortalaması 60 tan küçükse uyarı mesajı çıkar bütünleme notunu girin diye ve bütünleme notunu giriyorsunuz bu defa ortalama neyse ekrana yazar ve kaldı yada geçti yi de yazar

    Umarım başka arkadaşlarada yardımcı olur bu kod. Çünkü bunu ben netten çok aradım bulamadım.

    kod:

    double v, f, but, ort, yort;
    v = Convert.ToDouble(textBox1.Text);
    f = Convert.ToDouble(textBox2.Text);
    but = Convert.ToDouble(textBox3.Text);

    ort = v*0.4 + f*0.6;

    if (ort <60)
    {
    if (but > 0) goto hesap;
    MessageBox.Show("Ortalamanız Düşük . Bütünleme Notunu Girin");
    hesap:
    yort = v * 0.4 + but * 0.6;
    if (yort < 60)
    {
    label8.Text = ("Kaldı");
    label3.Text = yort.ToString();
    }
    else if (yort > 59)
    {
    label8.Text = ("Geçti");
    label3.Text = yort.ToString();
    }
    }
    else
    {
    label8.Text=("Geçti");
    label3.Text = ort.ToString();




  • Arkadaşlar fakat texBox bilgi girme zorunluluğunu nasıl yok edebilirm bunu anlamadım . Yani herhangi bir texBox boş olduğu zaman hata veriyor.

    Bu Konuda da yardımcı olsanız sevinirim.
  • quote:

    Orijinalden alıntı: huseyinx30

    Arkadaşlar fakat texBox bilgi girme zorunluluğunu nasıl yok edebilirm bunu anlamadım . Yani herhangi bir texBox boş olduğu zaman hata veriyor.

    Bu Konuda da yardımcı olsanız sevinirim.


    Olmayan birşeyi convert yaptığın için hata alıyorsun. Program başında textbox'ı kontrol edebilirsin.

    if(textBox3.Text=="")
    {
    textBox3.text="0";
    }

    böyle birşey yapabilirsin. Değer girilmemiş textbox'ı 0 olarak alır. O zaman hata almazsın.



    Veya butona bastıktan sonra textbox'ı kontrol edersin.

    if(textBox3.Text=="")
    {
    MessageBox.Show("Boş değer girdiniz tekrar girin");
    }

    else
    {
    Normal kodlarınıda buraya yaz
    }
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.