C++ sınavına çalışma

Paylaştığınız linkteki .rar dosyası şifreli.
Emin misiniz? İndirdim şu an bir sorun yok gibi.
Sonuç yine 6 ama ekrana yazdırılacak sayılar şöyle:

i = 0
i = 0 + (0 + 1) = 1
i = 1 + (1 + 1) = 3
i = 3 + (3 + 1) = 7
i = 7 + (7 + 1) = 15
i = 15 + (15 + 1) = 31
i = 31 + (31 + 1) = 63
Çok teşekkür ederim minnettarım ♥
Bu arada şöyle olmuyor mu acaba ;

i= i + i++ yani i + (i+1) şeklini alıyor. Yani i=0 olarak başladığı için,
1.adım 0 + 1 = 1
2.adım 1 + 2 = 3
3.adım 3 + 4 = 7
4.adım 7 + 8 = 15
5.adım 15 + 16 = 31
6.adım 31 + 32 = 63 ( i<64 dediği için tekrar döngüye giriyor.)
7.adım 63 + 64 =127. Buradan sonra döngü duruyor ve sonuç yazmaya başlıyor.

Yani ekranda (1-3-7-15-31-63-127) Şeklinde 7 tane tek sayı yazdırmıyor mu?

@wefra @LayThese
 
Son düzenleme:
Eki Görüntüle 548511

Bu soruda yardıma ihtiyacım var anlamıyorum ya

Bu tip soruları bilgisayara hesaplatabilirsiniz:

C++:
#include <iostream>

using namespace std;

int main() {
    int a = 0;
    for(int i=0; i<64; i=i+i++) {
        if(i%2==1)
            a++;
    }
    cout << a << endl;
    return 0;
}

Yukarıdaki program çalıştırıldığında cevabı 6 olarak hesaplıyor.
 
Bu tip soruları bilgisayara hesaplatabilirsiniz:

C++:
#include <iostream>

using namespace std;

int main() {
    int a = 0;
    for(int i=0; i<64; i=i+i++) {
        if(i%2==1)
            a++;
    }
    cout << a << endl;
    return 0;
}

Yukarıdaki program çalıştırıldığında cevabı 6 olarak hesaplıyor.

Teşekkür ederim, evet programda hesaplatınca 6 çıkıyor fakat mantığını kavrayamıyorum. Örnek soru olduğu icin mantığını anlayıp sınavda doğrusunu yapma amacındayım. Yazdığım gibi yapınca 7 çıkıyor fakat programlar 63'ü döngüye sokmuyor. Sebebi nedir biliyor musun?
 
Teşekkür ederim, evet programda hesaplatınca 6 çıkıyor fakat mantığını kavrayamıyorum. Örnek soru olduğu icin mantığını anlayıp sınavda doğrusunu yapma amacındayım. Yazdığım gibi yapınca 7 çıkıyor fakat programlar 63'ü döngüye sokmuyor. Sebebi nedir biliyor musun?

63 döngüye giriyor. Siz 127´yi de saymışsınız. 127, 64´den büyük olduğu için döngüye girmez.
 
Fakat 127 7.basamak olmuyor mu? 127, 64'den büyük olduğu için döngüye girmiyor ve 127 de kalıyor bu da 7.adım olmuyor mu

7´nci basamağı da döngü içinde yazdırabilmemiz için döngüye i<=127 veya i<128 koşulunu vermemiz gerekir.

Çünkü döngü sadece i<64 olduğu sürece çalışıyor. i´nin anlık değeri 127 olsa bile döngünün içindeki cout´a girmez.

Döngü dışında bir kez daha cout << i << endl; komutunu verip 127´yi de ekrana bastırabilirsiniz ancak bu doğru cevap olmaz. Çünkü resmini attığınız soru “döngü çalıştığında ekranda toplam kaç adet tek sayı gözükür” diyor. Döngü de i, 64´den küçük olduğu sürece çalıştığı için 63´ü de basar ve döngüyü kapatır.
 
Haaaa, yani şey mi. 63 olunca tekrar döngüye sokar fakat sonuc 64 den büyük olduğu için döngüye dahil etmez ve en üst değer olarak 63 ü verir. Doğru mu anladım
 
Haaaa, yani şey mi. 63 olunca tekrar döngüye sokar fakat sonuc 64 den büyük olduğu için döngüye dahil etmez ve en üst değer olarak 63 ü verir. Doğru mu anladım

Evet. Döngünün içindeki blok sadece i<64 koşulu sağlandığı sürece çalışıyor. i, 127 olunca döngünün içine girmez. Döngü kapanır ve sonraki satırlardan devam eder. Ayrıca while döngüsü de böyle çalışır. Yani for döngüsü gibi. Sadece do while döngüsü önce işlemi gerçekleştirip, sonra kontrol ettiğinden onda durum farklıdır. Eğer ileriki sorularda do while ile ilgili soru gelirse bunu unutmayın.
 
Uyarı! Bu konu 5 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ı