İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C soru acil!!

Pupilla23.04.201019 cevap2.692 görüntüleme
2009'den beri8.724 mesaj
#1
Aşağıdaki programın çalışması sonucu ne basılır?
int n=5, t, a, b, c;
main(void)
{

for (a=1; a<=n; a+=1)

for (b=1; b<=a; b+=2)

for (c=1; c<=b; c+=3)

t += a+b+c;

printf("%d",t);

}

A) 36
B) 54
C) 67
D) 74
E) 93

cevap d. bu sorunun çözümünü bana açıklayabilir misiniz? yarın sınava giricem. sınav kağıt üstünde test
Cevaplar
2010'den beri13 mesaj
#2
cevabın d olduğuna emin misin?
Pupilla Konuyu açan
2009'den beri8.724 mesaj
#3
rhyperior dedi: ↑
cevabın d olduğuna emin misin?
evet. tübitak'ın sitesinden geçen seneki olimpiyat sorularından biri. aynen copy paste yaptım.

cevabı doğru bulan arkadaş. açıklamasını yazarsa sevinirim. çok önemli
2009'den beri2.718 mesaj
#4
Bu nasıl bir soru ya :D

Soruyu anlamaya çalışıyorum :D
Pupilla Konuyu açan
2009'den beri8.724 mesaj
#5
cheleby dedi: ↑
Bu nasıl bir soru ya :D

Soruyu anlamaya çalışıyorum :D
aslında soru basit. üç tane for döngüsü var. toplamaları yapıyorum. ya fazla ya eksik çıkıyor. çözümü benim için önemli yarın sabah olimpiyat sınavına giricem.
2009'den beri829 mesaj
#6
yani cok zor degil ortada hazir kodlar varken iki baslik yazip derlemek ,
Pupilla Konuyu açan
2009'den beri8.724 mesaj
#7
bohongtw dedi: ↑
yani cok zor degil ortada hazir kodlar varken iki baslik yazip derlemek ,
derleyip sonucu ben de bulurum. yarın test sınava giricem sınavda yanıma pcyi mi alıyım. kağıt üstünde çözümü önemli benim için
2009'den beri629 mesaj
#8
Elimden geldiğince kısa anlatmaya çalıştım ama yine de bayağı uzun oldu. İnsanların bilgisayar programcılığı bölümünde bunu 1 senede öğrendiğini düşünürseniz kısa sayılır. :)

Öncelikle kodun daha iyi anlaşılmsı için kod için kullanılan döngülerin sınırlarının belli olması için yazılma şeklinde ufak bir iki değişiklik yapalım.

for (a=1; a<=n; a+=1)
{
  for (b=1; b<=a; b+=2)
  {
    for (c=1; c<=b; c+=3) 
    {
      t  += a+b+c;
    }
  }
}

Bu yazım şekli kodun çalışmasında sonucu etkilemeyecektir. Çünkü sadece parantezler eklenmiştir.

Şimdi for döngüsü dediğimiz şeyi anlatmaya çalışayım.
Bir for döngüsü, kendisi için süslü parantezle { ... } ayrılan alanın içinde kalan işleri sırasıyla tekrar eder.

Kaç kez tekrar edeceğini for döngüsünden sonraki parantezler ( .. ) arasında kalan bölümde belirtiyoruz.

for (a=1; a<=n; a+=1)
Bu satırda a değişkeninin başlangıç değeri 1 ve her seferinde bir artıyor. ve bu döngü a değişkenin değeri n değişkenine eşit oluncaya kadar devam ediyor.

for (b=1; b<=a; b+=2)
Bu satırda ise b değişkenin başlangıç değeri 1 ve değeri 2 şer artıyor. b değişkeni a 'dan küçük oldukça bu döngü devam ediyor.

Şimdi burada dikkat etmeniz gereken şey.
İkinci döngünün birinci döngünün içinde olması gerçeği. Yani birinci döngü 5 kere çalışacağından bu ikinci döngü 5 kere tetiklenecektir.

İkinci döngü ilk tetiklendiğinde kendi süslü parantezi içindeki kodları sadece bir kez çalıştıracaktır çünkü ilk kez tetiklendiğinde a 'nın değeri 1 dir. DÖngünün kuralında da b değişkeni a'dan küçük olduğu zamanlarda çalış dediği için, ilk seferinde bu döngü sadece bir kere çalışacaktır.

İkinci döngü ikinci kez tetiklendiğinde bu sefer a nın değeri 2 olacaktır fakat b değişkeni de 2 şer arttığından bu ikinci döngünün süslü parantezi içindeki kodlar yine sadece bir kere çalışacaktır. Çünkü b değişkeninin değeri olan 3, a değişkeninin değeri olan 2 den büyüktür.

ikinci döngü 3. kez tetiklendiğinde bu kez a değişkeninin değeri 3 olacaktır. Ve b değişkeni 2 şer arttığı için b=1 için ve b=3 için olmak üzere bu döngüye ait süslü parantezin içindeki kodlar iki kez çalıştırılacaktır.

.....
.....
....

3 döngü çalıştığında ise o andaki a, b ve c değişkenlerinin değerlerini toplayarak t isimli değişkenin kendi değerinin üzerine ekliyor.

Hiç bir şey bilimyormuşsunuz gibi düşünerek kodların bir kısmını anlatmaya çalıştım. Anlatmadığım kısımda aynı şeyler devam ediyor fakat değerler değişiyor.

2009'den beri3.494 mesaj
#9
Döngü nasıl ilerliyor, aşağıda tablo haline getirerek gösterdim. Mantığı çok basit, b ve c her sağlanan şart ile birlikte 1 ve 1 değerlerini alarak, t nin birikimli toplamını arttırıyor. Ve 10 adım sonra 74 değerinde duruyor.


Pupilla Konuyu açan
2009'den beri8.724 mesaj
#10
:):):)MaviAteş ve penguin ikinize de gerçekten çok teşekkür ederim. emeğinize karşılık değil ama bana vakit ayırdığınız için + bonus
2009'den beri3.494 mesaj
#11
shadowknight dedi: ↑
:):):)MaviAteş ve penguin ikinize de gerçekten çok teşekkür ederim. emeğinize karşılık değil ama bana vakit ayırdığınız için + bonus
Rica ederim önemi yok, sınavında başarılar. :)
2006'den beri20 mesaj
#12
bu soruyu çözemediğine göre pek çalışmamışsın...
kod a yı 5 e kadar birer birer, b yi a ya kadar 2 şer şer, c yi b ye kadar 3 er 3er artırarark her basamakta t ye a+b+c yi ekliyor.

a=1 iken, b=1, c=1 olur t=t+1+1+1=3
a=2 iken, b=1, c=1 olur t=t+2+1+1=7
a=3 ve b=1 iken, c=1 olur t= t+3+1+1=12
a=3 ve b=3 iken, c=1 olur t= t+3+3+1= 19
a=4 ve b=1 iken, c=1 olur t= t+4+1+1=25
a=4 ve b=3 iken, c=1 olur t= t+4+3+1= 33
a=5 ve b=1 iken, c=1 olur t= t+5+1+1=40
a=5 ve b=3 iken, c=1 olur t= t+5+3+1= 49
a=5 ve b=5 iken ve c=1 iken, t= t+5+5+1= 60
a=5 ve b=5 iken ve c=4 iken, t= t+5+5+4= 74
Pupilla Konuyu açan
2009'den beri8.724 mesaj
#13
SlayerNS dedi: ↑
bu soruyu çözemediğine göre pek çalışmamışsın...
kod a yı 5 e kadar birer birer, b yi a ya kadar 2 şer şer, c yi b ye kadar 3 er 3er artırarark her basamakta t ye a+b+c yi ekliyor.

a=1 iken, b=1, c=1 olur t=t+1+1+1=3
a=2 iken, b=1, c=1 olur t=t+2+1+1=7
a=3 ve b=1 iken, c=1 olur t= t+3+1+1=12
a=3 ve b=3 iken, c=1 olur t= t+3+3+1= 19
a=4 ve b=1 iken, c=1 olur t= t+4+1+1=25
a=4 ve b=3 iken, c=1 olur t= t+4+3+1= 33
a=5 ve b=1 iken, c=1 olur t= t+5+1+1=40
a=5 ve b=3 iken, c=1 olur t= t+5+3+1= 49
a=5 ve b=5 iken ve c=1 iken, t= t+5+5+1= 60
a=5 ve b=5 iken ve c=4 iken, t= t+5+5+4= 74
sana da teşekkür ederim. sınav 50 soru. 40 matematik 10 programlama. matematik sorularının tamamını çözebiliyorum. programlamam biraz zayıf. ancak 37 net yapan 2. aşamaya geçiyor. onun için biraz rahatım:)
2006'den beri20 mesaj
#14
shadowknight dedi: ↑
sana da teşekkür ederim. sınav 50 soru. 40 matematik 10 programlama. matematik sorularının tamamını çözebiliyorum. programlamam biraz zayıf. ancak 37 net yapan 2. aşamaya geçiyor. onun için biraz rahatım:)
hmm anladım. tamamen programlama sınavı zannettim. sorun çıkmaz ozaman;)
2009'den beri629 mesaj
#15
Başarılar. Genelde matematiği iyi olanlar programlamayı kolayca anlarlar. Yeterki anlamak isteyin.
2009'den beri786 mesaj
#16
MaviAteş dedi: ↑
Başarılar. Genelde matematiği iyi olanlar programlamayı kolayca anlarlar. Yeterki anlamak isteyin.
aynen.bir kişinini matemetiği iyi ise programlama da zorlanmaz.
2006'den beri20 mesaj
#17
nası geçti sınav?
2008'den beri311 mesaj
#18
Arkadaşlar algoritma böyle çözülmez. Değişkenler teker teker yanyana yazılır (t dahil). sona da n ve i artım değişkenleri yazılır. Değişkenlerin değerini yazarsınız ve i=1'den başlarsınız değerler değiştikçe altına yeni değer yazarsınız sonuca kadar devam edersiniz. Sınavda böyle çözersin. (YTÜ Bil. Müh. Data Yapıları ve Algritmalar -Yahya Karslıgil referansımdır)
2006'den beri20 mesaj
#19
cycloner dedi: ↑
Arkadaşlar algoritma böyle çözülmez. Değişkenler teker teker yanyana yazılır (t dahil). sona da n ve i artım değişkenleri yazılır. Değişkenlerin değerini yazarsınız ve i=1'den başlarsınız değerler değiştikçe altına yeni değer yazarsınız sonuca kadar devam edersiniz. Sınavda böyle çözersin. (YTÜ Bil. Müh. Data Yapıları ve Algritmalar -Yahya Karslıgil referansımdır)
üniversite için konuşuyorsak, hoca nasıl istiyorsa öyle çözersin...
Pupilla Konuyu açan
2009'den beri8.724 mesaj
#20
SlayerNS dedi: ↑
nası geçti sınav?
sınav iyi geçti sayılır. bu sefer 37 matematik 13 programlama vardı. programlamadan 7 tane yapabildim(süre elvermedi malum tübitak). matematikten 30 tane yaptım. cevaplarımdan eminim. geçen sene 37,5 netle 2. aşamaya geçilebilmiş sonuçları bekliyoruz. 1 aya kadar açıklanacak.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.