C# Programı

Emircan16

Hectopat
Katılım
28 Ocak 2014
Mesajlar
113
Yer
Bursa
Daha fazla  
Cinsiyet
Erkek
Merhaba arkadaşlar,

Okulda öğretmenimiz birkaç soru yazdırdı ve arasında şöyle bir soru var;

Kod:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10

Şeklinde listBox'a yazdıran programı yazınız.

Bu program için 2 gündür elimden geldiğince uğraşıyorum. Mantık olarak şöyle bir döngü oluşturmaya çalıştım.
Kod:
            for (int i = 1; i <= 10; i++)
            {
                for (int k = i; k <= i; k++)
                {
                    listBox1.Items.Add(i);
                }
            }

Bana buradaki yanlışımı gösterenlere şimdiden teşekkür ederim. Herkese iyi forumlar...
 
for (int k = i; k <= i; k++)
i değişkenini k değişkenine eşitlemişsin. Daha sonra k değişkeni i değişkeninden küçük olursa 1 arttır demişsin. Biraz mantıksız olmuş.
 
for (int k = i; k <= i; k++)
i değişkenini k değişkenine eşitlemişsin. Daha sonra k değişkeni i değişkeninden küçük olursa 1 arttır demişsin. Biraz mantıksız olmuş.
Öncelikle arkadaşın dediği doğru. k=1 ile başlamalıydın. Ayrıca Listbox'a i değil k sayısını eklemelisin. Çünkü i değişkeni k'nın her döngüsünde sabittir. Yani k 1'den 10'a kadar gittiğinde i hep 10'dur.
Kod:
            for (int i = 1; i <= 10; i++)
            {
                for (int k = 1; k <= i; k++)
                {
                    listBox1.Items.Add(k);
                }
            }
Bu şekilde yazarsanız gene sonuca ulaşamazsınız. Sonuç böyle olur:

upload_2014-12-4_21-7-36.png


Listbox'a sadece 10 değer eklemelisin. Birinci değer "1", ikinci değer "1 2", üçüncü değer "1 2 3" olmalı.
O yüzden Listbox'a eklediğin değer yazı olmalı direk i veya k değeri olmamalı. k döngüsünde döndüğün değerleri "string" değişkenine eklersin.
k döngüsü bitince yani i döngüsünün en alt satırında bu "string" değişkenini Listbox'a eklersin. Yani doğrusu böyle olmalı:

Kod:
            for (int i = 1; i <= 10; i++)
            {
                string yazılacak = "";
                for (int k = 1; k <= i; k++)
                {
                    // k.toString() dememize gerek yok otomatik çevirir.
                    yazılacak += k + " ";
                }
                listBox1.Items.Add(yazılacak);
            }

Sonuç:

upload_2014-12-4_21-12-11.png


Ayrıca bu kodda da hata var ama gözükmüyor. En son satıra fazladan boşluk ekler. Gerçi gözükmediği için sıkıntı yok. Ama boşluk yerine "a" harfini eklersek böyle gözükür.

upload_2014-12-4_21-18-10.png


Bu sorunu düzeltmek için "k==i" durumunu yakalayıp boşluk eklememelisin.

Kod:
            for (int i = 1; i <= 10; i++)
            {
                string yazılacak = "";
                for (int k = 1; k <= i; k++)
                {
                    if (k == i)
                        yazılacak += k;
                    else
                        yazılacak += k + " ";
                }
                listBox1.Items.Add(yazılacak);
            }

upload_2014-12-4_21-20-15.png
 
Son düzenleme:
Önemli değil. Anlamadığınız bir yer varsa sorabilirsiniz.

Gayet açıklayıcı olarak yazmışsınız. Teşekkür ederim. Fakat sizi yakalamışken son bir soru daha sormak istiyorum. Bu soru uzun zamandır elimde ama okuldan dolayı fırsat bulup bakamamıştım, bakınca da yapamadım. :) Soru şu;

1 ile 100 arasında rastgele üretilen sayıların toplamını ve çarpımını textBox'lar da gösteren programı oluşturunuz.

Eğer yardımcı olursanız memnun olurum. Kolay gelsin.:)
 
5 sayı farklı mı olacak yoksa aynı olabilir mi?
100^5 = 10.000.000.000 (on milyar) olduğu için int veritipi yerine long kullanmak yetecektir.
 
Uyarı! Bu konu 10 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı