Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
34
Cevap
1461
Tıklama
0
Öne Çıkarma
c/c++ hakkında for while döngüsü
B
7 yıl
Yüzbaşı
Konu Sahibi

#include <stdio.h>
int main()
{
int i, n, t1 = 0, t2 = 1, nextTerm;

printf("Enter the number of terms: ");
scanf("%d", &n);

printf("Fibonacci Series: ");

for (i = 1; i <= n; ++i)
{
printf("%d, ", t1);
nextTerm = t1 + t2;
t1 = t2;
t2 = nextTerm; //burayı disaled yaptığımda 4 değeri için sonucu 0 1 1 1 verdi.
}
return 0;
}

//result 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 for value 10




#include <stdio.h>
int main()
{
int t1 = 0, t2 = 1, nextTerm = 0, n;
printf("Enter a positive number: ");
scanf("%d", &n);
// displays the first two terms which is always 0 and 1
printf("Fibonacci Series: %d, %d, ", t1, t2);
nextTerm = t1 + t2;
while(nextTerm <= n)
{
printf("%d, ",nextTerm);
t1 = t2;
t2 = nextTerm;
nextTerm = t1 + t2;
}

return 0;
}



Selam.

Bu Soru basit gelebilir ama ben kodun bazı yerlerinde mantığını anlayamadım (t1=t2 ve t2 = nextTerm) nasıl eşit kabul ediliyor while ve for döngüsünde bu nasıl işleniyor. sonra bu iki değere nextTerm = t1 + t2; sonucu elde ediliyor ki toplamasını mantıkla çözmedim


Sorum
1.while döngüsü içersinde (t1 = t2; t2 = nextTerm; nextTerm = t1 + t2;) sırası fordan farklı . bu şekilde düzenlenmesindeki kasıt ne?

2. t2 = nextTerm; //burayı disaled yaptığımda 4 değeri için sonucu 0 1 1 1 verdi. bu kod aktif için sonuç 0 1 1 2 oluyor 4 değeri için.

3. for döngüsünde for (i = 1; i <= n; ++i) n ve i değeri kıvırcıklı parantezin içindeki kodlarda kullanılmamış program bunu nasıl anlıyor.

4. t1 ve t2 değerli sabit değerler atanmış yoksa bunlar const keyword ile mi sabit hale getiriliyor.
5. printf("Fibonacci Series: %d, %d, ", t1, t2); sonrasında gelen diğer printf komutu içindeki değerlere ekleniyor buna sebeb olan ne?


haşiye:while döngüsünde çıktı for döngüsü ile aynı değil
misal bir 10 değeri için
for loop 0 1 1 2 3 5 8 13 21 34
while loop 0, 1, 1, 2, 3, 5, 8,
çıktı değerini veriyor.
int t1 = 0, t2 = 1, nextTerm = 0, n; //değerinde fark ettiğim nextterm atanan value silinmesi bir programda bir hata döndürmüyor

https://www.programiz.com/c-programming/examples/fibonacci-series

Teşekkürler.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



B
7 yıl
Yüzbaşı
Konu Sahibi

@Iqtam

Teşekkürler.

< Resime gitmek için tıklayın >


Bu resimde visual studio cl.exe command derleme yapıldığında nextTerm için başlatılmamış yerel değişken hatası veriyor o sorunu da (int ---- nextTerm=0;) yaparak çözdüm
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700?view=vs-2017
burda da hata ile ilgili bilgi veriyor.

programa t1=t2,t2=nextTerm değerlerinin çıktısını verince herşey netlik kazandı. Post için herkese teşekkürler.



@revivo72





< Bu mesaj bu kişi tarafından değiştirildi berce -- 7 Eylül 2018; 10:0:57 >

B
7 yıl
Yüzbaşı
Konu Sahibi

@revivo72

Sağolasın. Bunlara ben c/c++ ilerledikçe bakarım. Ama şu var program ile uğraşmak güzel.

bu arada kullandığın program bu mu
https://en.wikipedia.org/wiki/GNU_Emacs


ilaveten:
program mentin editorü ama derleme kısmı var eklenti ile mi oluyor. Ben Tüm Platformların derlemesini Visual Studio Denemeye karar verdim. yani cross platform bakalım ne kadar sağlıklı olacak bu konu hakkında görüşün nedir





< Bu mesaj bu kişi tarafından değiştirildi berce -- 12 Eylül 2018; 23:42:34 >
Bu mesaja 1 cevap geldi.
B
7 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Tuğkan-0153

Sadece C++ ve onun int değişken tanımıyla ilgili bir sorun bence. Bu tür durumlarda genelde aynı kodu Scheme ile denerim cunku onda değişken den kaynaklı bu tür sorunlar olmuyor nitekim denedim ve cok büyük fibonacci rakamlarında (yaklaşık 50. fibonacci sayısı) öyle bir sorun cıkmadı. Fakat büyük rakamları e üssü olarak göstermeye başladı o yüzden aynı kodu Scheme'in endüstriyel versiyonu olan Common Lisp ile yazıp denedim ve rakamlar düzgün göründü. Kodu ilk başta iteratif yazdım fakat 30. fibonacci sayısına gelince cok ağırlaştı o yüzden rekürsif yazdım.

< Resime gitmek için tıklayın >
bu yukardaki kodu nasıl adapte olabiliriz. bunlara şimdilik aşina değilim. tanıdık gelmiyor.


#! optional (a 0) (b 1) (acc '()); komutunda a sıfır b 1 olsun mu demek acc tırnak işareti ne işe yarıyor.

bunları anlayabilmek için kaynak önerebilir misin?

______________________________________

https://www.geeksforgeeks.org/program-for-nth-fibonacci-number/

bak burda başka değişik formüllerde verilmiş. matrice matris logaritma ile yapılıyor

Method 6 (O(Log n) Time) incele


Bu mesaja 1 cevap geldi.
T
7 yıl
Yarbay

Kodları kendi bilgisayarına adapte etmek için öncelikle kendi bilgisayarına Scheme kurarak ve kodları çalıştırarak denemelisin bence.

Scheme'i kendi bilgisayarına kurmak içinhttps://code.call-cc.org/ 'dan Scheme son versiyonunun kodlarını indirip Windows bilgisayarında derlemen gerekli, gerekli derleme talimatları README 'de var. Benim windows 7 bilgisayarda TDM-GCC-5.1.0 (Download:http://tdm-gcc.tdragon.net/download ) ve msys2-x86_64 (Download:https://sourceforge.net/projects/msys2/files/Base/x86_64/ ) kurulu old için, Scheme'i kolaylıkla derledim. Nitekim CMD.EXE üzerinde 120 tane fibonacci rakamını bu sayede listeleyebiliyorum:

< Resime gitmek için tıklayın >

CMD.EXE gibi terminal içinden kullanırken (yani Emacs Scheme plugin'i ile kullanmıyorken) denediğiim programları kolaylıkla yükleyebilmek için Scheme init / başlangıç kodu .csirc (Chicken Scheme Interactive Run Commands kısaltması) ekledim:

< Resime gitmek için tıklayın >

Oradaki Almanca karşılama mesajı dahil kodları daha rahat çalışmak için yazdım. Bir otomobile oturunca koltuk ayna direksiyon ayarını yapınca en rahat kullanabilirsin ya onun gibi bu kodlar.

Fakat bir ufak şey daha var, bu sekilde klasik Scheme kodu kullanabilmek için Chicken Scheme 'e R7RS kütüphanesini de eklemen gerekli fakat Chicken Scheme'i başarıyla kurduktan sonra o kolay:
quote:

$ chicken-install r7rs
yani Python veya Node.js'te bir modül / paket kurar gibi aynen indirip kuruyor. CMDer terminalde yaptığım kurulumdan bir snapshot:

< Resime gitmek için tıklayın >

CMDer'i tamamen keyfi olarak tercih ettim, CMD.EXE dahil herhangi bir terminalle de kurabilirsin.

#!optional ve devamındaki parametrelerihttps://srfi.schemers.org/srfi-89/srfi-89.html biraz açıklıyor. #!optional adından da anlaşılabileceği gibi bir fonksiyondaki parametrelerin "istege bağlı" olduğunu gösteriyor. Scheme 'de birçok şey bu sekilde kendi kendini açıklayıcıdır. Parantezler coğunlukla kapsam / context belirleyicidir.

(fib n #!optional (a 0) (b 1) (acc '()) )

ifadesinde dikkat edersen parantezler birbirini tamamlıyor. Orada fib adında bir fonksiyon tanımlanıyor (baştaki define) ve ardından fonksion gövdesi geliyor. Sorduğun a sıfır b 1 olsun kısmı ise o fonksiyonun parametre tanımları ve dediğin gibi a 0 b 1 yapılıyor ancak #!optional olmadan da fonksiyonu çağırabiliyorsun. #!optional'ın sebebi fonksiyonu ilk başta (fib 5 0 1 '() ) yerine (fib 5) şeklinde kısaca çağırabilmek için. Bu arada #! ve optional bitişik yazılmalı. acc accumulator değişkeni, her döngüde elde edilen Fibonacci rakamını listede toplamak için ve '() boş liste demek. acc'in ilk başta boş liste olması gerekli yoksa elde edilen Fibonacci rakamlarını ekleyemeyiz. Python 'da acc = [] ifadesi gibi düşünebilirsin. Sanırım Python'da da bir diziye dinamik olarak veri eklemek için başta böyle bir tanımlanmalı, denemedim.

Scheme konusunda en baba kitap Structure and Interpretation of Computer Programs / SICP kitabın fakat onda genel olarak programcılık temelleri anlatılır ve Scheme ise sadece anlatma aracıdır yani yukarda bahsedilen #!optional gibi ayrıntılar pek yoktur, onun için R. Kent Dybvig'i The Scheme Programming Language 4th edition 'una bakabilirsin. 2nd edition 'u PDF olarak şurada var:https://irywoh.files.wordpress.com/2015/07/scheme-programming-language-dybvig-pdf.pdf

Bahsettiğin matriks yöntemi Fibonacci'nin başka bir yansıması. Fibonacci rakamları doğada bir çok şeyin matematiksel temeli.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 14 Eylül 2018; 13:32:58 >

< Bu ileti mini sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @berce
B
7 yıl
Yüzbaşı
Konu Sahibi

http://www.dipmat.unict.it/~barba/LinguaggiII.html/READING_MATERIAL/THESCHEMEPROGRAMMINGLANG.PDF

burda 2nd pdf dosyası var.

schemehttps://en.wikipedia.org/wiki/Scheme_(programming_language) başlı başına bir programlama dili.

Cmder tarzı programlar kullanmıştım. Linux terminali çok hoşuma gidiyor. kısayol kopyala yapıştır var. vertical girdileri daha fazla hafızada tutuyor yani bir yeni bir line satır eklendiğinde üsteki satırlar kaybolmuyor.
@revivo72
https://www.cs.unm.edu/~williams/cs357/springer-friedman.pdf bu başka bir kitap
https://download.csdn.net/download/jizheair/10472163 burda var ama çince
https://www.scheme.com/tspl4/ html full version var 4nd edition
https://www8.zippyshare.com/v/6rBvouDy/file.html e kitap şeklinde olanı var


birde kontalk status.im yazmışsın imzanda düzenli bakıyor musun? iletişime geçebilirsin demişsin





< Bu mesaj bu kişi tarafından değiştirildi berce -- 16 Eylül 2018; 6:22:15 >
Bu mesaja 1 cevap geldi.
B
7 yıl
Yüzbaşı
Konu Sahibi

Konu dışı
sende bu ilk postta bu reklamlar gözüküyor bir enfeksiyon kapmış olabilir mi? browser

normalde ben böyle bir imza koymadım

< Resime gitmek için tıklayın >

quote:

https://tr.rdrtr.com/aff_c?offer_id=6396&aff_id=63&url=https://track.adform.net/C/?bn=24525758;cpdir=http://tr.rdrtr.com/aff_c?offer_id=6396&aff_id=63&url_id=8515


bir tanesinin adresi bu





< Bu mesaj bu kişi tarafından değiştirildi berce -- 16 Eylül 2018; 6:43:27 >

B
7 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Tuğkan-0153

C++'da aynen Scheme 'de old gibi rekürsif yazabilirsin. Scheme 'de deneyip çalıştırdığın kodu C++ a cevireceksin. Bir tek "int" tipi yerine C++'ın STL kütüphanesinde atıyorum kafadan big_int gibi bir tip varsa onu kullan ki örneğin fib 200 yazdığında bile sonuç versin. Rekürsif yapıyı vurgulamak amaçlı kodları bloğa ayırdım. scheme'de begin ( kod bloğu ) ile kodları bloklara ayırabiliyorsun.

< Resime gitmek için tıklayın >



bulduğun scheme kitqabı epub formatında gayet iyi. bende onun 2.baskısı ve PS'den dönüştürülmüş PDF formatı vardı iyiydi ama biraz eskiydi, senin bulduğun 4. son baskı ve formatı gayet iyi. Hangi arama motorunu kullandın ?
rekürsif format'da yazılan kodları incelemem lazım.
ben kitabı bulmak içinwww.duckduckgo.com kullandım. google ve diğerleri gibi seni takip etmediği için sonuçları gizlemiyor.

rekürsif detaylı bilgi veren c++ kaynağı var mı? mantığını verilenler ölçüsünde kaptım





< Bu mesaj bu kişi tarafından değiştirildi berce -- 21 Eylül 2018; 20:22:8 >

T
7 yıl
Yarbay



C++ rekürsif fonksiyon yapsan da büyük sayıları desteklemediği için cok anlamlı olmayacaktır, fib 70 hesapladığında rekürsif fonk hızlı çalışsa da rakamlar yine negatif veya eksik olacak. O yüzden tavsiyem bir C/C++ kütüphanesi olan gmp'yi kullanman. gmp'yi kullanmaktan cok kurmak zordur (Linux harici OS'lerde) ancak benim Windows 7 'de MSYS2 old için kolaylıkla kurdum ve C++ 'daki fibonacci kodunu gmp'ye güncelledim sonuç gayet iyi, gördüğün gibi yüksek rakamları da tam uzunlukta ve doğru gösteriyor:



< Resime gitmek için tıklayın > fib cpp gmp



gmp nasıl kurulur ve kullanılır ufak bir tutorial



https://www.cs.colorado.edu/~srirams/courses/csci2824-spr14/gmpTutorial.html



Scheme'de ise



b nedir?

b, fibonacci döngüsünde 2. rakam yani ilk baştaki rakamlar 0 ve 1 ise orada b = 1

b olmazsa fibonacci döngüsünü kuramazdık cünkü 2.rakamı tutacak değişkenimiz olmazdı



n 'den sonra 2. konumda olan b,

rekürsif çağrıda (fib (- n 1) b (+ a b) (cons a acc))

a'nın yerine konuluyor ve b = a + b oluyor



(cons a acc) cons sabit keyword mu? const gibi



cons const 'a sadece isim benzerliği var.



Scheme'daki cconst = construct ve onu açıklayan basit bir fonksiyon

yazdım:



< Resime gitmek için tıklayın >Scheme Cons açıklama



Scheme Programming Language kitabında 25. sayfada (section 2.2 simple expressions) cons'u açıklıyor.



< Bu ileti mini sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @berce
T
7 yıl
Yarbay

C++ konusunda belki yüzlerce kitap vardır. Benim önerim Complete Reference C++ Herbert Schildt

https://yadi.sk/i/lzBW2XY43ZKs6A



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @berce
B
7 yıl
Yüzbaşı
Konu Sahibi

https://cs.nyu.edu/~exact/core/gmp/index.html

gmp nasıl kurulduğuna derleneceğini anlatan başka bir link

fakat ben visualstudio kurduğumdan içersinde gmp library varmış bakalım Anaconda3 içersinde paylaşımlı olarak çalışacak mı bir görelim

Peki bu gmp ile neler yapabiliyoruz. içersinde ön tanımlı işlevler-function olması lazım.

Birde bende mingw-64 var msys2 ile aynı özellikli bir şey visualstudio'da mingw64 kullanıyor. Fark ne?





< Bu mesaj bu kişi tarafından değiştirildi berce -- 8 Aralık 2018; 10:39:26 >


Bu mesajda bahsedilenler: @revivo72
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.