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 personel

Forum istatistikleri

Konular
6,955
Mesajlar
118,787
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top