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.
1 2 3 4 | do { //... } while (oku != (char)ConsoleKey.Escape); |
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.
1 2 3 4 5 6 7 8 9 10 11 12 | char oku; do { Console.Clear(); Console.Write("Sayı giriniz: "); int sayi = Convert.ToInt32(Console.ReadLine()); sayi = Math.Abs(sayi); //diğer kodlar buraya gelecek } while (oku != (char)ConsoleKey.Escape); |
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.
1 2 3 4 5 6 | while (sayi >= 1) { // sayi = sayi / 10; 'a göre daha iyi bir yöntem sayi /= 10; basamak++; } |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | static void Main(string[] args) { char oku; do { Console.Clear(); Console.Write("Sayı giriniz: "); int sayi = Convert.ToInt32(Console.ReadLine()); sayi = Math.Abs(sayi); int basamak = 0; while (sayi >= 1) { // sayi = sayi/10; 'a göre daha iyi bir yöntem sayi /= 10; basamak++; } Console.WriteLine("Basamak sayısı: " + basamak); Console.WriteLine("\n\n\nBaşka bir sayı girmek için bir tuşa basın.\nÇıkmak için ESC tuşna basın."); oku = Console.ReadKey().KeyChar; } while (oku != (char)ConsoleKey.Escape); } |
Hocam console örnekleriniz müthiş işime yaradı.Gerçekten çok teşekkür ederim.Birilerine yardımcı olduğunuzu bilmek eminim iyi hissettiricektir.Elinize sağlık.
Teşekkür ederiz. İyi çalışmalar.