C# Örnekleri – Girilen Tam Sayının Basamak Sayısını Bulma

Girilen bir tam sayının sayı değerini bulunurken sayının devamlı 10’a bölünmesi ve kaç defa bölündüğünün sayılması yeterlidir.

Ancak bir tam sayı, 10’a bölündükçe bir yerden sonra tam sayı olma vasfını yitirecek ve tek basamak kaldıktan sonra ondalıklı sayı (0,2156 gibi) haline gelecektir. Bu yüzden 10’a bölme işlemi, sayı 1’in altına indikten sonra durdurulacaktır.

Programımız başlar başlamaz kullanıcıdan bir sayı isteyecektir. Bunun için do .. while döngüsü iyi bir seçenektir, çünkü başka bir sayı girilmesi istenirse bu döngünün sonunda sınanacaktır. Örnekte sayı girme işlemi Escape tuşuna basılana kadar devam edecektir. Bu yüzden döngünün şartında, basılan tuşun Escape olup olmadığı kontrol edilmektedir.

Ardından Console ekranında herhangi bir şey varsa bunların silinmesi için Console.Clear()  komutu kullanılır. Ardından sayı girilir ve int tipinde tutulur. Ancak burada dikkat edilmesi gereken şey, integer tipinin doğası gereği [-2.147.483.648, 2.147.483.647] kapalı aralığında değer alabilir. Daha büyük bir sayı girilecekse işaretsiz (uint, unsigned integer) veya long tipinde tanımlama yapılabilir.

Negatif değer girilmesi ihtimaline karşılık bu sayının mutlak değeri alınmalıdır.  sayi = Math.Abs(sayi); Çünkü sayı, 1’in altına indiğinde basamak sayısı sayma işlemi durdurulacaktır. Negatif her bir değer 1’den küçük olduğu için, negatif sayılar pozitife dönüştürülmüş olur.

 

Basamak sayısını hesaplayan while döngüsünün şartı, sayının 1’in üstünde kaldığı sürece sayma işleminin devam etmesidir. Döngü içinde sayı devamlı 10’a bölünür ve kaç defa bölündüğü de basamak değişkeni aracılığıyla hesaplanır.

Basamak hesabı yapıldıktan sonra, kullanıcı eğer programdan çıkmak istiyorsa ESC tuşuna basarak çıkabileceği hakkında bilgi verilir. ESC dışındaki herhangi bir tuşa basarsa program bir diğer seçeneği soracaktır.

Aşağıda basamak sayısını bulmak için gerekli C# Console Application komutları verilmiştir.

 

 

 

 

About Hürkal HÜSEM

2010 yılından bu yana Bilişim Teknolojileri Öğretmeni olarak meslek liselerinde görev yapmaktayım.

View all posts by Hürkal HÜSEM →

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.