1 + 2 + 4 + 8 + 16 + 32 +… son iki sayı arasındaki fark 1000 olduğunda son ve bir önceki sayıyı yazdıran program

For Döngüsüyle ilgili güzel bir soru

1 + 2 + 4 + 8 + 16 + 32 +… son iki sayı arasındaki fark 1000 olduğunda son ve bir önceki sayıyı yazdıran programı yazınız. 

Soruya biraz renk katmak için dışarıdan bu farkı kaçıncı adımda bulabileceği bir tahmin kutusu yapalım. Eğer tahmin doğru ise Tebrikler bildiniz, yanlışsa bilemediniz mesajını veren program.

for_ornek_1for_ornek_2

Şimdi kod kısmına geçelim


int i,a,y,syc;
 listBox1.Items.Clear();
 a=1;
 syc = int.Parse(textBox1.Text);
 listBox1.Items.Add(a.ToString());
 for (i = 1; i <=syc; i++)
 {
 y = a;
 a = 2 * a;
 listBox1.Items.Add(a.ToString());

 if (a - y >1000)
 {
 label1.Text = a.ToString();
 label2.Text = y.ToString();

label3.Text = i.ToString();

 break;
}

}
 if (syc == i)
 {
 MessageBox.Show("Tebrikler Bildiniz");
 }
 else
 {
 MessageBox.Show("Bilemediniz");
 }

}

Programı biraz açıklayacak olursak her adımda sayı bir öncekinin 2 katı oluyor. Başlangıçta a değişkenine 1 değerini veriyoruz. Daha sonra bir döngü açıyoruz ve a ‘yı her adımda 2 ile çarptırıyoruz.Bize a sayısının bir önceki ve bir sonraki değeri gerekli , o yüzden döngüye girdikten sonra a 2 ile çarpılmadan y(yedek) adında bir değişken oluşturuyoruz ve a 2 ile çarpılmadan bu değeri y ‘nin içerisine atıyoruz. Son olarakta a’nın bir önceki ve sonraki adımı arasındaki farkı if ile karşılaştırıyoruz. Burada 1000 den büyükse programı break komutuyla sonlandırıyoruz.

Ek görev olarak tahmin kısmını ekledik, dışarıdan text içersine girilen sayıya kadar döngü açtırdık , aradaki farkın kaç adımda bulanabileceğini syc değişkeni ile saydırdık. Karşılaştırma sonucu eşitse Tebrikler değilse Bilemediniz mesajını verdirdik. Kolay gelsin.

2.241 defa okundu.

3 yorum

  1. admin Yanıtla

    Abi Biraz da Acıklayıcı olurmusunuz Anlayamadım nereye nasıl sekılde yapıstıracagız hem ben surekli giremiyorum bugun bana ulasın yanı mesaj atın

    Basarılarınızı devamını diliyor ve kolay gelsın dıyorum.

  2. Sezer Yanıtla

    Soru çok aradaki fark 1000 olduğunda.. diyor fakat böyle birşey imkansız cevap ta ise 1000 den büyükse şartı kullanılmış soru düzeltilirse iyi olur.”aradaki fark 1000den büyük ise” 🙂

Bir Cevap Yazın

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