Arama butonu
Bu konudaki kullanıcılar: 1 misafir
11
Cevap
2119
Tıklama
0
Öne Çıkarma
c# ta Not hesaplamada sorunum
H
14 yıl
Teğmen
Konu Sahibi

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();



E
14 yıl
Çavuş

if(textBox4.Text < 60) diyerekten yapman gerekir sanırım


Bu mesaja 1 cevap geldi.
H
14 yıl
Teğmen
Konu Sahibi

tamam öyle yapıyorum zaten ; (noktalı virgülü yanlışlıkla yazmışım buraya) yine yok aynı hata


Bu mesaja 2 cevap geldi.
M
14 yıl
Onbaşı

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 >

H
14 yıl
Teğmen
Konu Sahibi

yok hocam maalesef bi yararı olmadı


Bu mesaja 1 cevap geldi.
E
14 yıl
Çavuş

olay ; değil ama olay textbox4 < 60 ın textbox4.Text < 60 olması gerektiği. Mantıken olayın o olması gerekiyor.


Bu mesaja 1 cevap geldi.
G
14 yıl
Yüzbaşı

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


Bu mesaja 1 cevap geldi.
H
14 yıl
Teğmen
Konu Sahibi

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 mesaja 1 cevap geldi.
N
14 yıl
Binbaşı

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");

}


Bu mesaja 1 cevap geldi.
H
14 yıl
Teğmen
Konu Sahibi

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();


Bu mesaja 1 cevap geldi.
H
14 yıl
Teğmen
Konu Sahibi

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.


Bu mesaja 1 cevap geldi.
N
14 yıl
Binbaşı

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
}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.