C# Basit bir uygulama yazmak

Bir de böyle kullanıcıdan veri alan programlarda veriyi iyice kontrol etmen lazım. Kullanıcıların yapabilecekleri hataların haddi hesabı yoktur:

- Boş string gelebilir ()
- Tamamen boşluk karakteri ile dolu string gelebilir ( )
- Rakam dışında karakterlerden oluşan string gelebilir (şemsettin)
- Çince UNICODE karakterleri içeren bir string gelebilir (中央电视台报废设备处理竞价公告)
- Rakam vardır ama başında sonunda hatalı karakter vardır (y23) ( 123) ( 345 ) (12h)

Hiçbir zaman adamın temiz bir şekide 105 yazacağını varsayamazsın.
Onu düşündüm abi. Labeli dışardan veri girişine kapattım. Kullanıcıdan rakamları buton ile alıyorum. Hesap makinesi gibi.
 
Onu düşündüm abi. Labeli dışardan veri girişine kapattım. Kullanıcıdan rakamları buton ile alıyorum. Hesap makinesi gibi.

Tamam o zaman mesele kalmıyor. String ile cebelleşmene gerek yok.
 
Bu aklımda dursun abi de bizim üçüncü rakam son rakam olmayabilir de. Şimdi düşündüm 4 haneli de olabilir. Hatta tasarıma göre 5 yada 6 hane bile olabilir. Her halukarda ben üçüncü haneyi aradan almalıyım. O zaman hane sayısına göre Length -2, -3 vs şeklinde uzatmalıyım sanırım?
Abi şu sorumu gözden kaçırmış olabilirsin
 
İyi de string kullanmıyorum artık demiştin. Gene string'e mi döndün? :cheeky2:
Abi o iş biraz karışık. Ben kodlamayı tam bilmediğim için neyi nerde kabul ederse öyle kullanıyorum. "İnt" yapıyorum yemezse string yapıyorum.
Burada esas olan ben label içine rakam giriyorum, bu rakam kaç haneli olursa olsun soldan 3.basamaktaki rakamı bir değişkene atabilmeliyim.
16(8)26497
Bu 8'i alıp sekiztane 0'a çevirip "00000000" 16'nin yanına eklemeliyim. 1600000000 gibi.
Hatta her üç basamakta bir virgül koysam fena da olmaz :D 1,600,000,000
 
O şekilde takla atacağına hesaplatsana:

sonuç = (hane1 * 10 + hane2 ) * 10 ^ (hane3)
 
O şekilde takla atacağına hesaplatsana:

sonuç = (hane1 * 10 + hane2 ) * 10 ^ (hane3)
Matematikte iyi değilim abi. Şu yazdığını anlamaya çalıştım ama anlamadım. Hane1 ile neden 10'u çarpıp hane2 ile topluyoruz? Karışık iş ya :D
Ayrıca bu işlemi yapmak için her haneyi ayrı ayrı alıp değişkene atamak gerekmezmi?
 
O şekilde takla atacağına hesaplatsana:

sonuç = (hane1 * 10 + hane2 ) * 10 ^ (hane3)
Biraz düşündüm üzerine.
Hane1'i 10 ile çarpınca onluk değerini buluyoruz.
+hane2 yi ekleyince birlik değeri eklenmiş oluyor. Bildiğimiz çift rakamlı sayı :D sonra parantez dışına çıkıp 10 üzeri hane3 ile çarpıyoruz.
Screenshot_20200223-141910.png
 
@taydin abi senin hesaplamayı kullandım ama sonucu yazdırınca abuk subuk bir rakam çıkıyor. Bir göz atar mısın?

C#:
private void btnHesapla_Click(object sender, EventArgs e)
        {
            char ilk_rakam = label5.Text[label5.Text.Length - 4]; // İlk rakamı aldık
            char iki_rakam = label5.Text[label5.Text.Length - 3]; // İkinci rakamı aldık
            char uc_rakam = label5.Text[label5.Text.Length - 2]; // çarpan olan üçüncü rakamı aldık

            double sonuc = (ilk_rakam * 10 + iki_rakam) * 10 ^ (uc_rakam); // Taydin abinin hesaplama kodunu kullandık
            
            string ilk = Convert.ToString(ilk_rakam); //ilk rakamı string yaptık
            string iki = Convert.ToString(iki_rakam); //ikinci rakamı string yaptık
            string uc = Convert.ToString(uc_rakam);   //üçüncü rakamı string yaptık
            string snc = Convert.ToString(sonuc);     // sonucu string yaptık

            label6.Text = "İlk rakam= "+ ilk;    //test için label'e yazdırdık
            label7.Text = "İkinci rakam= "+iki;  //test için label'e yazdırdık
            label8.Text = "üçüncü rakam= "+uc;   //test için label'e yazdırdık
            label9.Text = "Sonuç= "+snc;         //test için label'e yazdırdık

        }

prohata.png
 
Büyük ihtimalle tam sayı olarak hesaplanıyor ondan. Formüle 10 yerine 10.0 kullan bakalım.
 
10dk önce yazsan bakmıştım. Artık akşama kaldı :D

Neyse isabet olmuş. Sorun tam sayı aritmetiğinden değil. ^ operatörü hesap makinasında olduğu gibi üst alma işine yaramıyor C# da. Onun yerine Math.Pow() fonksiyonunu kullanman lazım.
 
Neyse isabet olmuş. Sorun tam sayı aritmetiğinden değil. ^ operatörü hesap makinasında olduğu gibi üst alma işine yaramıyor C# da. Onun yerine Math.Pow() fonksiyonunu kullanman lazım.
Dün akşam o koduda denedim ama sanırım doğru dizilimi bir türlü bulamadım.

Bir de acaba "stringe" çevirdiğim için mi bozuluyor diye düşünüyorum ama "stringe" çevirmeden de "label" içine yazdıramıyorum.
 
@taydin bu beni çıldırttı yav.
Şunun sonucunu bile 11 almam gerekirken 107 alıyorum
ilk_rakam ve iki_rakam değişkenlerini test ettim onlar sayıları doğru veriyor ama toplama esnasında 107 sonuç veriyor.

C#:
char ilk_rakam = label5.Text[label5.Text.Length - 4]; // İlk rakamı aldık ( misal 7 )
char iki_rakam = label5.Text[label5.Text.Length - 3]; // İkinci rakamı aldık ( misal 4 )
double sonc;
sonc =(ilk_rakam + iki_rakam);
 
Rakamları text olarak alıyorsun da ondan :katil2:

7 karakteri heksadesimal olarak 37h
4 karakteri heksadesimal olarak 34h

Bunların toplamı da 6bh ve bu da desimal olarak 107.

Şu zamanlar IDE nin debugger'ini kullanmayı öğren. Yazdığın programı adım adım çalıştır, breakpoint koy, program durunca da değişkenleri incele.
 
Rakamları text olarak alıyorsun da ondan :katil2:

7 karakteri heksadesimal olarak 37h
4 karakteri heksadesimal olarak 34h

Bunların toplamı da 6bh ve bu da desimal olarak 107.

Şu zamanlar IDE nin debugger'ini kullanmayı öğren. Yazdığın programı adım adım çalıştır, breakpoint koy, program durunca da değişkenleri incele.
abi nette bulduğum bütün convertleri denedim. Doğru dizilimi bir türlü bulamıyorum :kizgin2:
mesela 7 rakamını Convert.ToInt32 ile çevirdim 55 çıkıyor bu seferde.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,839
Mesajlar
99,582
Üyeler
2,479
Son üye
yiyehuoxing32

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top