• 10-01-2024, 23:06:43
    #1
    Merhaba yarın c++ finalim olacak ama hoca saçma sapan ++i i++ mevzularına kafayı takmış ve sürekli bunlar hakkında soru soracağını anlatmakta,sabahtan beri çalışmama rağmern bu konu hakkında nette pek faydalı bir bilgi bulamadım.
    Bana bu i++ ++i mevzusunu özetleyerek anlatıp bir de aşağıdaki örneği çözen arkadaşlarıma,abilerime minnettar olurum,esenlikle kalın.

    for( int i=2;i<68;i=i + (++i))
    Ekrana kaç adet çift sayı basılır?

    Cevap:
    cevap:5
  • 10-01-2024, 23:09:19
    #2
    cevap verin mektepliye...
  • 10-01-2024, 23:10:37
    #3
    Çift sayı olacaksa 0 değil mi
  • 10-01-2024, 23:12:06
    #4
    veyselbozdagli adlı üyeden alıntı: mesajı görüntüle
    Çift sayı olacaksa 0 değil mi
    i 2 ile başlıyor zaten 0 olması müthiş imkansız ekrana * adet çift sayı basıyor ama mantığını bir türlü oturtamadım
  • 10-01-2024, 23:18:08
    #5
    Eğer bunu for döngüsü içinde kullanıyorsan pek fark yaratmaz.
    örneklersek
    i++ = i içindeki değeri bir arttır ve devam et
    ++i ise i'nin içinde toplama çıkarma yada türevi bir işlem var ise önce onu yap sonra i+1 yap demektir.
    umarım kısa ve öz bir anlatım olmuştur.

    C++ yazarken optimize etmek önemlidir.
    Bellekte ne kadar az yer kaplarsa yazdığınız program , o kadar verimli ve uzun süre çalışır.
    Belki de hocanızın söylemek istediği "önemli" konusu bundandır.
  • 10-01-2024, 23:19:52
    #6
    Sorunuzun cevabını vermeden önce, (i++) ve (++i) arasındaki farkı açıklamak istiyorum. Bu iki operatör de i değişkeninin değerini 1 artırır, ancak aralarında bir fark vardır. (i++) operatörü, i’nin değerini artırmadan önce i’nin orijinal değerini döndürür. Buna sonrası artırma denir. (++i) operatörü ise, i’nin değerini artırdıktan sonra i’nin yeni değerini döndürür. Buna öncesi artırma denir. Örneğin:
    int i = 5;
    int j = i++; // i'nin değeri 6 olur ama j'nin değeri 5 olur.
    int k = ++i; // i'nin değeri 7 olur ve k'nın değeri de 7 olur.
    Bu fark, i değişkeninin başka bir ifadeyle birlikte kullanıldığı durumlarda önemli olabilir. Örneğin, i = i + (++i) ifadesinde, i’nin değeri önce 1 artırılır, sonra i ile toplanır ve sonuç i’ye atanır. Bu durumda, i’nin son değeri i’nin başlangıç değerinin iki katı artı 1 olur. Ama i = i + (i++) ifadesinde, i’nin değeri önce i ile toplanır, sonra 1 artırılır ve sonuç i’ye atanır. Bu durumda, i’nin son değeri i’nin başlangıç değerinin bir fazlası olur.
    Şimdi sorunuza gelelim. for( int i=2;i<68;i=i + (++i)) döngüsü, i değişkeninin değerini her adımda 1 artırmak yerine, i’nin değerini 1 artırıp, sonra i ile toplayarak artırır. Bu da i’nin değerinin çok hızlı büyümesine neden olur. Bu döngüde, i’nin değeri sırasıyla şöyle olur:
    i = 2 // ilk değer
    i = 5 // i = 2 + (++i), burada ++i = 3
    i = 11 // i = 5 + (++i), burada ++i = 6
    i = 23 // i = 11 + (++i), burada ++i = 12
    i = 47 // i = 23 + (++i), burada ++i = 24
    i = 95 // i = 47 + (++i), burada ++i = 48
    Gördüğünüz gibi, i’nin değeri 68’den büyük olduğu için, döngü sadece 5 kez çalışır. Bu 5 değerden sadece 2 tanesi çift sayıdır: 2 ve 47. Dolayısıyla, bu döngü ekrana 2 adet çift sayı basar.
  • 10-01-2024, 23:21:06
    #7
    osawashere adlı üyeden alıntı: mesajı görüntüle
    Eğer bunu for döngüsü içinde kullanıyorsan pek fark yaratmaz.
    örneklersek
    i++ = i içindeki değeri bir arttır ve devam et
    i++ ise i'nin içinde toplama çıkarma yada türevi bir işlem var ise önce onu yap sonra i+1 yap demektir.
    umarım kısa ve öz bir anlatım olmuştur.

    C++ yazarken optimize etmek önemlidir.
    Bellekte ne kadar az yer kaplarsa yazdığınız program , o kadar verimli ve uzun süre çalışır.
    Belki de hocanızın sööylemek istediği "önemli" konusu bundandır.
    anlatımınız için teşekkürler ilk başlarda kast ettiğiniz şey sanırım ++i orada bir düzeltme yapmak isterim

    ayrıca hocamız biraz mankafa sanırım sürekli bu konudan bahsediyor ki c++ da daha ne güzel şeyler varken!

    ayrıca alttaki örneği de anlatırsanız minnettar olurum
  • 10-01-2024, 23:21:21
    #8
    bugrajk adlı üyeden alıntı: mesajı görüntüle
    Merhaba yarın c++ finalim olacak ama hoca saçma sapan ++i i++ mevzularına kafayı takmış ve sürekli bunlar hakkında soru soracağını anlatmakta,sabahtan beri çalışmama rağmern bu konu hakkında nette pek faydalı bir bilgi bulamadım.
    Bana bu i++ ++i mevzusunu özetleyerek anlatıp bir de aşağıdaki örneği çözen arkadaşlarıma,abilerime minnettar olurum,esenlikle kalın.

    for( int i=2;i<68;i=i + (++i))
    Ekrana kaç adet çift sayı basılır?

    Cevap:
    cevap:5
    ++i, i'nin değerini artıracak ve ardından artan değeri döndürecektir.
    i = 1;
    j = ++i;
    (i is 2, j is 2)
    i++, i'nin değerini artıracaktır, ancak artırılmadan önce tuttuğum orijinal değeri döndürecektir.
    i = 1;
    j = i++;
    (i is 2, j is 1)

    Bir for döngüsü için her ikisi de işe yarar. ++i daha yaygın görünüyor, belki de K&R'de kullanılan şey bu olduğundan.
  • 10-01-2024, 23:21:22
    #9
    i++ : Post increment önce i yi kullanır daha sonra arttırma işlemi yapar örneğin i 0 dan başlıyor ise önce 0 ı kullanır sonra 1 e geçer 1 i kullanır bu şekilde devam eder döngü.
    ++i : Pre increment önce i yi arttırır daha sonra kullanır örneğin i 0 dediniz i yi 1 yapar ondan sonra döngünün içine girer


    Örnek post increment
    int i = 0;
    std::cout << array[i++];

    bu durumda 0.lengtdeki veri görünür

    Örnek Pre increment
    int i = 0
    std::cout << array[++i];

    bu durumda 1.lengthdeki veri görünür.

    i = 0 olsun

    i=0 + (1) mantığı nedir peki

    yani i nin x olduğu durumlarda parentez içindeki değer her zaman x+1 olacaktır yani i her döngüde en az 2 kez artacaktır.